The Mer Wiki now uses your Mer user account and password (create account on https://bugs.merproject.org/)


Building Sailfish OS for Nexus 5

From Mer Wiki
(Difference between revisions)
Jump to: navigation, search
(Chapter 7&8)
 
(35 intermediate revisions by 4 users not shown)
Line 6: Line 6:
  
 
=== Chapter 3 ===
 
=== Chapter 3 ===
 
+
Install CM 11 M9 from http://download.cyanogenmod.org/get/jenkins/78753/cm-11-20140805-SNAPSHOT-M9-hammerhead.zip instead of CM 10.1 on your device and test the functionality as mentioned in HADK.
Install CM 11 instead of CM 10.1 on your device and test the functionality as mentioned in HADK.
+
  
 
=== Chapter 4 ===
 
=== Chapter 4 ===
Line 35: Line 34:
 
  repo init -u git://github.com/mer-hybris/android.git -b hybris-11.0
 
  repo init -u git://github.com/mer-hybris/android.git -b hybris-11.0
 
  repo sync
 
  repo sync
 +
 +
=== Chapter 7&8 ===
 +
part of the packages that need build are in this repo...
 +
https://build.merproject.org/project/show/nemo:devel:hw:lge:hammerhead
 +
just add an extra repo to your .hks and save time
 +
 +
KSFL=$ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
 +
MW_REPO=http://repo.merproject.org/obs/nemo:/devel:/hw:/lge:/hammerhead/sailfish_latest_armv7hl/
 +
HA_REPO1="repo --name=adaptation1-$DEVICE-@RELEASE@ --baseurl=${MW_REPO}"
 +
sed -i -e "/^$HA_REPO.*$/a$HA_REPO1" $KSFL
  
 
=== Known Issues ===
 
=== Known Issues ===
Line 40: Line 49:
 
  ifconfig -a and look for the interface name through which Nexus 5 is connected to host
 
  ifconfig -a and look for the interface name through which Nexus 5 is connected to host
 
  sudo ifconfig <interface_name> 192.168.2.10 broadcast 192.168.2.255
 
  sudo ifconfig <interface_name> 192.168.2.10 broadcast 192.168.2.255
* Lipstick crashes at startup if debugfs is mounted
 
** TMP!workaround into your .ks %post section:
 
rm -f /lib/systemd/system/sysinit.target.wants/sys-kernel-debug.mount
 
* Lipstick crashes if qt5-qtsensors-plugin-sensorfw package is installed.
 
** Workaround: zypper rm qt5-qtsensors-plugin-sensorfw
 
  
* the two issues above can be worked-around at image creation time by the following changes in the .ks file :
+
* droid-hal-init is sometimes started before /system is mounted and causes race condition with property service. Symptom: you are stuck with a google logo:
  sed -i "/post$/a rm -f \/lib\/systemd\/system\/sysinit.target.wants\/sys-kernel-debug.mount" $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
+
** this PR contributes to it, but doesn't fix completely: https://github.com/mer-hybris/droid-hal-device/pull/38
  sed -i "/post$/a rm -f \/usr\/lib\/qt5\/plugins\/sensors\/libqtsensors_sensorfw.so"  $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
+
** add these in the %post of the .ks
 +
  sed -i '/%post$/a sed -i \"s;WantedBy;RequiredBy;g\"  \/lib\/systemd\/system\/system.mount' $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
 +
 
 +
sed -i '/%post$/a echo \"RequiredBy=droid-hal-init.service\" >> \/lib\/systemd\/system\/local-fs.target' $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
 +
  sed -i '/%post$/a echo \"[Install]\" >> \/lib\/systemd\/system\/local-fs.target' $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
 +
 
 +
** With all them workarounds above, some boots might still stuck nastily with journal looking only like this: https://pastee.org/6jf5x
  
* Qt5 QPA hwcomposer plugin does not handle virtual displays correctly and causes UI to tear frequently.
 
** Patch was merged \o/ http://review.cyanogenmod.org/#/c/67489/ on 22nd July. Wait for it to hit nightlies (BUT! we're having issues testing nightlies - help debugging much appreciated) then sideload it, followed by sailfish os .zip again; alternatively just DIY that patch yourself locally, and then also use https://github.com/siteshwar/qt5-qpa-hwcomposer-plugin/commits/hammerhead
 
** or use master https://github.com/mer-hybris/qt5-qpa-hwcomposer-plugin/commits/master - currently with tearing and UI freeze - to fix this, it needs some fence handling, contact situ or morphis on #sailfishos-porters
 
* droid-hal-init is sometimes started before /system is mounted and causes problems with property service.
 
 
* Correct time is not shown on booting. ( Currently being discussed at https://www.mail-archive.com/linux-arm-msm@vger.kernel.org/msg09852.html)
 
* Correct time is not shown on booting. ( Currently being discussed at https://www.mail-archive.com/linux-arm-msm@vger.kernel.org/msg09852.html)
 +
  A workaround for this was implemented... just setup your time at the first boot
 
* you will discover that any zypper operation is slow like hell. Cause two repos that shall not be there adaptation0 and xt9. Workaround: remove them:
 
* you will discover that any zypper operation is slow like hell. Cause two repos that shall not be there adaptation0 and xt9. Workaround: remove them:
 
  zypper rr adaptation0 xt9
 
  zypper rr adaptation0 xt9
Line 65: Line 72:
  
 
be sure on host the host you have a gateway setup to 192.168.2.1 and a dns eg. 8.8.8.8
 
be sure on host the host you have a gateway setup to 192.168.2.1 and a dns eg. 8.8.8.8
 +
* if usb-moded is installed you can use the sailfish os usb tethering (unfortunately is known not to work, fixed the package are in MW_REPO)
 +
zypper in usb-moded-connection-sharing-android-config
  
 
* mp3s do not play (google is your friend here.)
 
* mp3s do not play (google is your friend here.)
 
* the usb-moded package is removed so you will not get the phone connecting via usb as storage. Workaround use telnet or ssh
 
* the usb-moded package is removed so you will not get the phone connecting via usb as storage. Workaround use telnet or ssh
* if any zypper operation pulls usb-moded remove them with
+
* usb-moded may cause issues google logo stucked on screen for more tha 4 min... (have not seen them lately). In this case remove them with
  rpm -e usb-moded-0.80-1.11.1.armv7hl
+
  rpm -e usb-moded
  rpm -e usb-moded-defaults-0.80-1.11.1.armv7hl
+
  rpm -e usb-moded-defaults
  rpm -e usb-moded-diagnostics-config-0.80-1.11.1.armv7hl
+
  rpm -e usb-moded-diagnostics-config
  rpm -e usb-moded-developer-mode-0.80-1.11.1.armv7hl
+
  rpm -e usb-moded-developer-mode
  
* dmesg spammed by [22592.736003] init: process 'qrngd', pid 12549 exited
+
* note that if usb-moded are installed ip of the device is 192.168.2.15, without them 192.168.2.1
cause missing /dev/hw_random Workaround:
+
* note that if you want a working usb-moded you may want to install the following rather than the defaults pulled
create a new udev rule
+
rpm -qa | grep usb-moded
  /lib/udev/rules.d/999-extra-rules.rules
+
usb-moded-pc-suite-mode-android-0.80-1.11.1.armv7hl
with content
+
usb-moded-connection-sharing-android-config-0.80-1.11.1.armv7hl
  KERNEL=="hw_random",NAME="hwrng", SYMLINK+="%k"
+
usb-moded-developer-mode-android-0.80-1.11.1.armv7hl
then
+
usb-moded-diagnostics-config-0.80-1.11.1.armv7hl
  udevadm trigger
+
usb-moded-0.70-134.1.Nemo.armv7hl (ask phdeswer in the irc channel)
 +
usb-moded-defaults-android-0.80-1.11.1.armv7hl
 +
usb-moded-diag-mode-android-0.80-1.11.1.armv7hl
  
* dmesg spammed by [36025.727614] init: process 'time_daemon' killing any children in process group
+
* while wireless connects to wlan unfortunately after reboot does not connect anymore to the configures network. Workaround. re-add the network
no idea wip?
+
 
+
* boot races caused by funny rules in systemd... Sign: you are stuck with a google logo... Workaround.
+
add these in the %post of the .ks
+
 
+
sed -i '/post$/a sed -i \"s;WantedBy;RequiredBy;g\"  \/lib\/systemd\/system\/system.mount' $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
+
 
+
sed -i '/post$/a echo \"RequiredBy=droid-hal-init.service\" >> \/lib\/systemd\/system\/local-fs.target' $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks 
+
sed -i '/post$/a echo \"[Install]\" >> \/lib\/systemd\/system\/local-fs.target' $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
+
  
 
=== Failing Tests ===
 
=== Failing Tests ===
Line 101: Line 103:
 
* test_glesv2
 
* test_glesv2
 
  Segmentation fault
 
  Segmentation fault
* test_gps
+
 
 +
 
 +
*  test_hwcomposer
 +
width: 1080 height: 1920
 +
Segmentation fault
 +
 
 +
* test_input
 +
Segmentation fault
 +
 
 +
* test_nfc
 +
Starting test_nfc.
 +
Finding NFC hardware module.
 +
test_nfc: test_nfc.c:156: testNfc: Assertion `hwModule != ((void *)0)' failed.
 +
Aborted
 +
 
 +
* test_sensors
 +
Segmentation fault
 +
 
 +
* test_ui
 +
Segmentation fault
 +
 
 +
* test_sf
 +
Segmentation fault
 +
 
 +
=== Passing Tests ===
 +
* test_egl_configs
 +
* test_vibrator
 +
* test_gps (takes some time to lock), doesn't work in UI yet: https://bugs.nemomobile.org/show_bug.cgi?id=723
 
  [root@Jolla nemo]# test_gps
 
  [root@Jolla nemo]# test_gps
 
  *** setup signal handler
 
  *** setup signal handler
Line 130: Line 159:
 
  *** nmea info
 
  *** nmea info
  
*   test_hwcomposer
+
nmea (50):      $GPGSV,6,6,23,85,16,172,,71,79,298,,72,28,246,*42
  width: 1080 height: 1920
+
  *** location callback
  Segmentation fault
+
flags: 63
 +
latitude:       53.323554
 +
  longtide:      -6.252064
 +
accuracy:      47.000000
 +
utc:    -1817944088
 +
*** nmea info
 +
timestamp:      -1817945278
 +
nmea (56):      $GPGSA,A,3,01,04,06,12,13,17,20,23,32,,,,1.9,1.6,0.9*32
 +
*** nmea info
 +
timestamp:      -1817945277
 +
nmea (40):      $GPVTG,109.7,T,109.7,M,1.0,N,1.8,K,A*2B
 +
*** nmea info
 +
timestamp:      -1817945277
 +
nmea (73):      $GPRMC,221529,A,5319.413254,N,00615.123869,W,1.0,109.7,010814,0.0,E,A*0A
 +
*** nmea info
 +
timestamp:      -1817945276
 +
nmea (72):      $GPGGA,221529,5319.413254,N,00615.123869,W,1,09,1.6,-23.0,M,48.0,M,,*4F
  
* test_input
+
=== Hardware Support ===
Segmentation fault
+
For current status of hardware support refer to https://wiki.merproject.org/wiki/Adaptations/libhybris
 
+
* test_nfc
+
Starting test_nfc.
+
Finding NFC hardware module.
+
test_nfc: test_nfc.c:156: testNfc: Assertion `hwModule != ((void *)0)' failed.
+
Aborted
+
 
+
* test_sensors
+
Segmentation fault
+
  
* test_ui
+
=== Scripts ===
  Segmentation fault
+
* an automatic way to build/rebuild all the image one can find here (ping dmt or alin on irc if you are in trouble with this):
 +
  https://github.com/dmt4/sfa-mer
  
* test_sf
 
Segmentation fault
 
 
=== Passing Tests ===
 
* test_egl_configs
 
* test_vibrator
 
 
=== Hardware Support ===
 
For current status of hardware support refer to https://wiki.merproject.org/wiki/Adaptations/libhybris
 
  
 
=== Help ===
 
=== Help ===
  
If you need any help join us on #sailfishos-porters on irc.freenode.net
+
If you need any help join us on #sailfishos-porters on irc.freenode.net Check also the buglist https://bugs.nemomobile.org/buglist.cgi?quicksearch=hammerhead

Latest revision as of 22:12, 20 August 2014

Download the HADK documentation from http://releases.sailfishos.org/sfa-ea/2014-07-21_SailfishOSHardwareAdaptationDevelopmentKit.pdf

This document mentions configurations required to build Sailfish OS for Nexus 5 (hammerhead). HADK should be followed as it is and this document should be referred only to learn about build configurations specific to Nexus 5.

HADK mentions references to CM 10.1 while Nexus 5 is based on CM 11. All the steps carried out in HADK should be in context of CM 11 only.

Contents

[edit] Chapter 3

Install CM 11 M9 from http://download.cyanogenmod.org/get/jenkins/78753/cm-11-20140805-SNAPSHOT-M9-hammerhead.zip instead of CM 10.1 on your device and test the functionality as mentioned in HADK.

[edit] Chapter 4

cat <<EOF > $HOME/.hadk.env
export MER_ROOT="[insert value of your choosing]"
export ANDROID_ROOT="$MER_ROOT/android/droid"
export VENDOR="lge"
export DEVICE="hammerhead"
EOF
cat <<'EOF' >> $HOME/.mersdkubu.profile
function hadk() { source $HOME/.hadk.env${1:+.$1}; echo "Env setup for $DEVICE"; }
export PS1="HABUILD_SDK [\${DEVICE}] $PS1"
hadk
EOF
cat <<'EOF' >> $HOME/.mersdk.profile
function hadk() { source $HOME/.hadk.env${1:+.$1}; echo "Env setup for $DEVICE"; }
hadk
EOF

[edit] Chapter 5

hadk
sudo mkdir -p $ANDROID_ROOT
sudo chown -R $USER $ANDROID_ROOT
cd $ANDROID_ROOT
repo init -u git://github.com/mer-hybris/android.git -b hybris-11.0
repo sync

[edit] Chapter 7&8

part of the packages that need build are in this repo... https://build.merproject.org/project/show/nemo:devel:hw:lge:hammerhead just add an extra repo to your .hks and save time

KSFL=$ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
MW_REPO=http://repo.merproject.org/obs/nemo:/devel:/hw:/lge:/hammerhead/sailfish_latest_armv7hl/
HA_REPO1="repo --name=adaptation1-$DEVICE-@RELEASE@ --baseurl=${MW_REPO}"
sed -i -e "/^$HA_REPO.*$/a$HA_REPO1" $KSFL

[edit] Known Issues

  • dhcp assigns wrong ip address to host or not at all and it has to be fixed manually to be able to telnet to 2323 :
ifconfig -a and look for the interface name through which Nexus 5 is connected to host
sudo ifconfig <interface_name> 192.168.2.10 broadcast 192.168.2.255
  • droid-hal-init is sometimes started before /system is mounted and causes race condition with property service. Symptom: you are stuck with a google logo:
sed -i '/%post$/a sed -i \"s;WantedBy;RequiredBy;g\"  \/lib\/systemd\/system\/system.mount' $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
sed -i '/%post$/a echo \"RequiredBy=droid-hal-init.service\" >> \/lib\/systemd\/system\/local-fs.target' $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks  
sed -i '/%post$/a echo \"[Install]\" >> \/lib\/systemd\/system\/local-fs.target' $ANDROID_ROOT/tmp/Jolla-@RELEASE@-$DEVICE-@ARCH@.ks
    • With all them workarounds above, some boots might still stuck nastily with journal looking only like this: https://pastee.org/6jf5x
 A workaround for this was implemented... just setup your time at the first boot
  • you will discover that any zypper operation is slow like hell. Cause two repos that shall not be there adaptation0 and xt9. Workaround: remove them:
zypper rr adaptation0 xt9
  • wireless hotspot is not working... wip? Workaround use usb tethering
devel-su
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o rmnet0 -j MASQUERADE
/sbin/iptables -A FORWARD -i rmnet0 -o rndis0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i rndis0 -o rmnet0 -j ACCEPT

be sure on host the host you have a gateway setup to 192.168.2.1 and a dns eg. 8.8.8.8

  • if usb-moded is installed you can use the sailfish os usb tethering (unfortunately is known not to work, fixed the package are in MW_REPO)
zypper in usb-moded-connection-sharing-android-config
  • mp3s do not play (google is your friend here.)
  • the usb-moded package is removed so you will not get the phone connecting via usb as storage. Workaround use telnet or ssh
  • usb-moded may cause issues google logo stucked on screen for more tha 4 min... (have not seen them lately). In this case remove them with
rpm -e usb-moded
rpm -e usb-moded-defaults
rpm -e usb-moded-diagnostics-config
rpm -e usb-moded-developer-mode
  • note that if usb-moded are installed ip of the device is 192.168.2.15, without them 192.168.2.1
  • note that if you want a working usb-moded you may want to install the following rather than the defaults pulled
rpm -qa | grep usb-moded
usb-moded-pc-suite-mode-android-0.80-1.11.1.armv7hl
usb-moded-connection-sharing-android-config-0.80-1.11.1.armv7hl
usb-moded-developer-mode-android-0.80-1.11.1.armv7hl
usb-moded-diagnostics-config-0.80-1.11.1.armv7hl
usb-moded-0.70-134.1.Nemo.armv7hl (ask phdeswer in the irc channel)
usb-moded-defaults-android-0.80-1.11.1.armv7hl
usb-moded-diag-mode-android-0.80-1.11.1.armv7hl
  • while wireless connects to wlan unfortunately after reboot does not connect anymore to the configures network. Workaround. re-add the network

[edit] Failing Tests

  • test_camera
Segmentation fault
  • test_egl
Segmentation fault
  • test_glesv2
Segmentation fault


  • test_hwcomposer
width: 1080 height: 1920
Segmentation fault
  • test_input
Segmentation fault
  • test_nfc
Starting test_nfc.
Finding NFC hardware module.
test_nfc: test_nfc.c:156: testNfc: Assertion `hwModule != ((void *)0)' failed.
Aborted
  • test_sensors
Segmentation fault
  • test_ui
Segmentation fault
  • test_sf
Segmentation fault

[edit] Passing Tests

[root@Jolla nemo]# test_gps
*** setup signal handler
*** get gps interface
*** device info
 id = gps
 name = loc_api GPS Module
 author = Qualcomm USA, Inc.
*** init gps interface
*** set capabilities
capability is 00000033
 ** Creating thread: 'Loc_hal_worker' (start=0xb6c44ad9, arg=0x13e6208)
 ** After thread_create: 'Loc_hal_worker', error=0 (start=0xb6c44ad9, arg=0x13e6208)
*** setting positioning mode
*** start gps track
*** gps tracking started
*** tracking.... 
**** Thread wrapper start (start=0xb6c44ad9, arg=0x13e6208) ****
Diag_LSM_Init: Failed to open handle to diag driver, error = 2*** status callback
*** session begin
*** status callback
*** engine on
*** status callback
*** session begin
*** nmea info
timestamp:      1741630708
nmea (29):      $GPGSA,A,1,,,,,,,,,,,,,,,*1E
*** nmea info
nmea (50):      $GPGSV,6,6,23,85,16,172,,71,79,298,,72,28,246,*42
*** location callback
flags:  63
latitude:       53.323554
longtide:       -6.252064
accuracy:       47.000000
utc:    -1817944088
*** nmea info
timestamp:      -1817945278
nmea (56):      $GPGSA,A,3,01,04,06,12,13,17,20,23,32,,,,1.9,1.6,0.9*32
*** nmea info
timestamp:      -1817945277
nmea (40):      $GPVTG,109.7,T,109.7,M,1.0,N,1.8,K,A*2B
*** nmea info
timestamp:      -1817945277
nmea (73):      $GPRMC,221529,A,5319.413254,N,00615.123869,W,1.0,109.7,010814,0.0,E,A*0A
*** nmea info
timestamp:      -1817945276
nmea (72):      $GPGGA,221529,5319.413254,N,00615.123869,W,1,09,1.6,-23.0,M,48.0,M,,*4F

[edit] Hardware Support

For current status of hardware support refer to https://wiki.merproject.org/wiki/Adaptations/libhybris

[edit] Scripts

  • an automatic way to build/rebuild all the image one can find here (ping dmt or alin on irc if you are in trouble with this):
https://github.com/dmt4/sfa-mer


[edit] Help

If you need any help join us on #sailfishos-porters on irc.freenode.net Check also the buglist https://bugs.nemomobile.org/buglist.cgi?quicksearch=hammerhead

Personal tools