Sailfish/ButterflyTouch

Work in progress. This is mostly inspired from the ExoPC tutorial, with adaptation for this hardware.

= Install Sailfish SDK Emulator on ButterflyTouch =

This page has instructions on how to install Sailfish SDK emulator on your Packard Bell Butterfly Touch.

It is a x86 (Intel SU4100 dual core x86_64) based laptop/tablet PC. It has a 11.6" resistive touch screen (1366x768). It uses a Intel GM45 Express Chipset.

USB key setup
VBoxManage internalcommands converttoraw sailfishos.vdi sailfish.raw sudo dd if=sailfish.raw of=/dev/sd* bs=4M sync
 * Extract root filesystem from emulator virtualbox image
 * Copy to flash key
 * Mount flash key
 * Edit /boot/extlinux/extlinux.conf to boot from sdb1 and add rootwait

Running on the ButteflyTouch

 * The following has been done with Ethernet cable plugged. Wifi activation could be added later on.
 * Place the USB key in ButteflyTouch
 * Boot, press F12 button to access boot device selection menu and select USB
 * Ctrl/Alt F2 - Login root/nemo here are our steps for your reference.


 * edit sshd to allow remote login
 * run /usr/sbin/sshd --daemon to launch the SSH server.

From now on, you can connect remotely to do the following (it allows copy/pasting the command from a browser and now typing by hand).

zypper ar http://repo.merproject.org/obs/home:/vgrade:/branches:/nemo:/devel:/hw:/x86-common/latest_i586/home:vgrade:branches:nemo:devel:hw:x86-common.repo vim /etc/zypp/repos.d/home_vgrade_branches_nemo_devel_hw_x86-common.repo
 * Install missing packets to run X server with the correct drivers.
 * Add the mer repository:
 * I had some trouble with the default path this gave me. I had to edit the repository and change it:

baseurl=http://repo.merproject.org/obs/home:/vgrade:/branches:/nemo:/devel:/hw:/x86-common/latest_i586/
 * 1) Comment the existing baseurl line :
 * 2) baseurl=http://repo.merproject.org/repositories/home:/vgrade:/branches:/nemo:/devel:/hw:/x86-common/latest_i586/
 * 3) and replace it by :

zypper in mesa-x86-generic-9.0.2-50.2 zypper in xorg-x11-drv-intel-2.21.3
 * Then install the missing packets

Rebooting at this point gave me errors that I can see in Xorg log : cat /var/log/Xorg.0.log | grep EE If found out, it was looking for a i965 driver (strange, Fedora on this computer uses i915 module ?). A quick search provides the correct packet : zypper search i965 zypper install mesa-x86-generic-dri-i965-driver
 * Install the i965 drivers:

cd /usr/lib/egl/ mv egl_gallium.so egl_gallium.so.old
 * remove egl_gallium.so (ExoPC tutorial ask to remove also st.so, but this was not present on my system)

echo "Environment=QT_DEFAULT_RUNTIME_SYSTEM=" >> /usr/lib/systemd/user/lipstick.service echo "EGL_PLATFORM=x11" >> /var/lib/environment/nemo/50-jolla-ui echo "EGL_DRIVER=egl_dri2" >> /var/lib/environment/nemo/50-jolla-ui echo "MCOMPOSITOR_USE_TFP=1" >> /var/lib/environment/nemo/50-jolla-ui
 * Edit to /usr/lib/systemd/user/lipstick.service to add Environment=QT_DEFAULT_RUNTIME_SYSTEM=
 * Add some variable to /var/lib/environment/nemo/50-jolla-ui

Section "Monitor" Identifier "Default Monitor" HorizSync 30-100 VertRefresh 20-160 EndSection Section "Screen" Identifier "Default Screen" Monitor "Default Monitor" DefaultDepth 24 SubSection "Display" Depth 24 EndSubsection EndSection Section "Device" Identifier "Videocard0" Driver "intel" Option "AccelMathod" "sna" EndSection Section "Module" Load "glx" Load "dri" EndSection Section "DRI" Mode 0666 EndSection
 * Set content of /etc/X11/xorg.conf.d/x86-vm.conf to :
 * 1) Viewport 0 0

//width: _transpose ? screen.height : screen.width //height: _transpose ? screen.width : screen.height width: 1366 height: 768
 * Edit /usr/lib/qt4/imports/Sailfish/Silica/ApplicationWindow.qml to set width/height 1366/768

su nemo # to switch to nemo user gconftool-2 --set /desktop/jolla/components/screen_rotation_angle --type int 90
 * Put the display in portrait mode. Execute following command while logged in as user "nemo"


 * reboot the system, press F12 to select boot from USB, and then it should boot to sailfish, with the graphical interface showing.

Running the silica demo
If the image has been prepared after a test with silica components demo has been run in the emulator, its files are already on the USB key.

They can be runned from ssh. Connect as nemo however ! (if runned as root, the theme is not the good one, it falls back to a simpler one). su nemo # if connected as root cd /opt/sdk/bin/ DISPLAY=:0 ./silicacomponentgallery

Working parts

 * Touchscreen (for a short moment)
 * Touchpad (always)
 * General sailfish interface (for a moment)
 * The silica component demo (some elements not shown, do not use the touchscreen)

Known issues
lipstick[2160]: segfault at 8 ip 6e3d7fec sp 77d49580 error 4 in libQtGui.so.4.8.3[6e1de000+af5000] mcompositor[...]: segfault at 8 ip ... sp ... error 4 in libQtGui.so.4.8.3[...+af5000] 2013-03-10 15:04:59 [sensord] *WARNING* [nodebase.cpp:699:void NodeBase::setValid(bool)]: Node 'orientationsensor' state changed to invalid 2013-03-10 15:04:59 [sensord] *CRITICAL* [sensormanager.cpp:266:AbstractSensorChannel* SensorManager::addSensor(const QString&)]: orientationsensor instantiation failed 2013-03-10 15:04:59 [sensord] *WARNING* [sensormanager.cpp:202:void SensorManager::setError(SensorManagerError, const QString&)]: SensorManagerError: sensor has not been instantiated This is also seen in the output of the silica component demo: loaded the Generic plugin Loaded the MeeGo sensor plugin Requested sensor id ' "orientationsensor" ' interface not granted Requested sensor id ' "orientationsensor" ' interface not granted
 * Touchpad works at the beginning, but quickly only change the cursor position, and don't interact with the interface
 * Interface seems to restart every 2 minutes, with segfaults in libQtGui.so for lipstick and mcompositer programs (messages can be seen from tty2), like below
 * Some elements are not shown. All the "glowing" things for example don't appear (dots at the top left that are used as bread-crumbs, lines under text buttons). This is probably due to the interface not being hardware accelerated, as it really looks like it is all shader related functions that are not here ?
 * Swipe from left to right or right to left doesn't give the app transparency to see the opened app and time or doesn"t put the application in background
 * When using the silica component demo, hitting the touchscreen gives a segfault. Using the touchpad works.
 * sensord log give a bunch of the following: