All posts by locusf

FOSDEM presentation video + slides

Finally FOSDEM organizers got to the videos of embedded devroom and at least my video got published ok. Pardon for my voice level, it was probably due to the microphone being too close my neck. Anyways here is the video + slides link below:

https://fosdem.org/2016/schedule/event/diy_pi2_tablet/attachments/slides/983/export/events/attachments/diy_pi2_tablet/slides/983/Slides.pdf

 

Thoughts on freedom of Ethereum

After having seen the first seeds sowed to the idea of distributed platforms as the next viable step of the free Internet, my observations have been fixated on the speed of development in which everything happens. IPFS and Ethereum are at my radar thus far. Much more to come, I’m sure of that.

Both projects are distributed platforms, but the main targets they drive and techniques they use to approach their targets are different. IPFS, Interplanetary Filesystem, is as said in its abbreviation, a filesystem. Ethereum, on the other hand is aiming to use the Blockchain technology (for which, I am embarassed to say, I have only information on how I use it, not its theory or technical implementation) to execute bytecode in a distributed and assumingly trusted fashion (terse description of the potential, I know). Please note, this is opinion is coming from just discovering Ethereum two days ago, so take it as such, an opinion.

Ethereums idea of having everybody involved (meaning joining the Ethereum network/blockchain) in execution of code is quite worrying. Firstly, there is no way to tell if the actual bytecode is going to be hostile at some point of the future, creating a security issue. Secondly, the idea of having to spend Ether to execute code in a distributed fashion is against the very freedom that Ethereum is licenced on, GPL. Without sounding like a purist, this is something I cannot stand behind with. Unless I can somehow download the bytecode myself and its adjoining “Contract” source code, the validity of this execution method remains questionable. Please note, that doing this done by mining or paying Ether. When using the application, the execution method is done by the miners, probably not so that you join the network when you do execution.

I certainly can stand behind the idea that Ethereum is proposing, distributed way of expressing ourselves, without the need of a “Host” service for it, is enticing. IPFS, even if a filesystem at alpha stages, does not take stance on doing the actual binary execution. The core idea is the same, for example, a image hosting service is already doing the function of imgur, but instead has a storage backend, which uses IPFS. Since IPFS is free software, anyone can host the images by referencing the IPNS URI. Also the code for the image hosting service is free software, take a look in the links at the end of this post.

Both of these techniques are at early stages, but the potential they both have is great. This of course applies to many FOSS projects at start, but as a final thought, the potential also runs after the supposed “death” of a project. Distributed version control systems make it possible to share code between developers, so as long as someone has a copy, the project can live on with other people. Project is more than its people or its potential “death”, its the legacy it generates from the very start of it, ideas people had and greatest of all, transparency in the actual work.

Links:

https://github.com/ipfspics/server

https://github.com/ipfs/go-ipfs

https://github.com/ethereum

Nemo Mobile distribution installation on a Jolla device

PLEASE NOTE, THE INSTRUCTIONS ARE FOR SEASONED USERS ONLY, DO NOT TRY THE INSTALLATION IF YOU DO NOT KNOW WHAT YOU ARE DOING! 

OFFICIAL STATEMENT FROM JOLLA CARE SAYS:
Our warranty does not cover issues arising from using unauthorized software on the device. If installing the alternative OS causes problems with the hardware, these are not covered by the warranty even if it happens during the warranty period. The user would likely also lose the benefit of their statutory rights to have errors repaired. In other words, anyone trying this would do it at their own risk, we can’t be responsible for the outcome nor can we publicly encourage people to do this.”

ALSO PLEASE DO NOT DISTRIBUTE THE HARDWARE ADAPTATION PACKAGES AS THEY ARE PROPRIETARY AND YOU DO NOT HAVE THE PERMISSION FROM JOLLA TO DO SO. THIS IS WHY I CANNOT PROVIDE YOU WITH THE PACKAGES, ONLY THE MEANS TO EXTRACT THEM FROM A EXISTING DEVICE.

1. Extraction of certain packages from Jollas repositories, with “zypper install -f –download-only” and rsyncing them to a separate directory on the Jolla device:

usb-moded-pc-suite-mode-android
droid-system-sbj
gst-av
jolla-recovery-sbj
gstreamer0.10-colorconv
qt5-qtwayland-wayland_egl
gstreamer0.10-droidcamsrc
gstreamer0.10-droideglsink
nemo-qtmultimedia-plugins-gstvideotexturebackend
gstreamer0.10-omx
gstreamer0.10-ffmpeg
hybris-libsensorfw-qt5
qtscenegraph-adaptation
kernel-adaptation-sbj
libhybris-sbj-libEGL
libhybris-sbj-libGLESv2
qt5-qpa-hwcomposer-plugin-sbj
libhybris-sbj-libwayland-egl
sbj-platform-images
sbj-version
sbj-wlan
libhybris-sbj-libhardware
libhybris-sbj
droid-system-packager
nemo-gstreamer0.10-interfaces

2. Copy over the aforementioned packages to a directory in which the Mer SDK resides and can access.

3. Copy over configuration files from Jolla device:

rsync -R /etc/dconf/db/vendor.d/locks/screen-rotation.txt /etc/dconf/db/vendor.d/screen-rotation.txt /etc/dsme/battery_levels.conf /etc/dsme/temp_hw_battery.conf /etc/dsme/temp_hw_core.conf /etc/mce/60-als-jolla.ini /etc/mce/60-doubletap-jolla.ini /etc/mce/60-mce-display-blank-timeout.conf /etc/mce/60-mce-display-brightness.conf /etc/mce/60-mce-possible-display-dim-timeouts.conf /etc/ofono/ril_subscription.conf /etc/usb-moded/android-usb-values.ini /etc/usb-moded/usb-moded.ini /lib/systemd/system/basic.target.wants/dev-mmcblk0p24.swap /lib/systemd/system/create-swap@.service /lib/systemd/system/dev-mmcblk0p24.swap /lib/udev/rules.d/90-toh.rules /lib/udev/rules.d/999-boston-system.rules /usr/lib/oneshot.d/bdaddr-from-factory-data /usr/lib/oneshot.d/btrfs-autodefrag /usr/lib/oneshot.d/resize-filesystem /usr/lib/qt5/plugins/feedback/qtfeedback-sbj.ini /usr/share/ngfd/plugins.d/ngf-vibra-sbj.ini /usr/share/qt5/keymaps/boston.qmap /usr/share/ssu/board-mappings.d/05-sbj.ini /var/lib/environment/compositor/60-boston-ui.conf /var/lib/environment/nemo/60-multimedia.conf /var/lib/environment/nemo/60-sbj-vibra.conf /var/lib/environment/ofono/noplugin.conf to@dest.mer.machine:adaptation

4. Copy over /sbin/preinit from Jolla device to a separate directory on the Mer SDK host.

5. Create a image using mic2 and Nemo Mobile system packages:
sudo mic cr fs -A armv7hl -o nemo-sbj-armv7hl-devel –pack-to=nemo-sbj-devel.tar.bz2 –record-pkgs=name,url,content,license jolla-sbj-adaptation.ks

The kickstart file is here http://pastebin.com/zZYd0YM7

6. Add the missing configuration files and /sbin/preinit to the created root filesystem package.

7. Copy the root filesystem package to a microSD card. Transfer the microSD card to a Jolla.

8. Reboot jolla to a recovery mode using Volume Down and Power key, use the recovery mode selector to move to a shell.

9. Inside the shell, copy a fresh installation of the sailfish-snapshot script manually to a text editor.

10. Mount the sdcard inside the shell

11. Go to the sdcard directory and issue:
/sdcard # PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script export factory .

12. Back up the current system with sailfish-snapshot:
/sdcard # PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script create prenemo

13. Inject the Nemo Mobile root filesystem package to a new snapshot on the Jolla device, with Jollas default home filesystem:
/sdcard # PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script inject nemo-sbj-devel.tar.bz2 homefs-factory-1.0.4.20.tar.bz2 nemo

14. Make the nemo snapshot the current system:
PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script restore nemo

15. Reboot the Jolla device to activate Nemo Mobile

To get back to SailfishOS:

1. Reboot Jolla back to recovery mode.

2. Enter shell and get sailfish-snapshot to it.

3. PARTITION=/dev/mmcblk0p28 MOUNTPOINT=/sailfish-snapshot /sailfish-snapshot-script restore prenemo

Glacier UI homescreen on Jolla

PLEASE NOTE!
Tampering with custom repositories on Jolla might leave you with a bricked device, please take care to follow instructions and do this only if you really know what you are doing! This requires developer mode to be enabled on your device.
THERE WILL BE BUGS! YOU HAVE BEEN WARNED!
PLEASE NOTE!

First, download a couple of RPM packages, package1 and package2 (for glacier gallery download this package). Then in your device, preferably do this over ssh, do this:

devel-su
ssu ar http://repo.merproject.org/obs/nemo:/devel:/mw/latest_armv7hl/ nemo-devel-mw
ssu er nemo-devel-mw
ssu ur
pkcon refresh
cd /home/nemo/Downloads
pkcon install-local qt5-qtquickcontrols-nemo-5.1.0-nemo1.armv7hl.rpm
ssu dr nemo-devel-mw
ssu ur
pkcon refresh
pkcon install-local lipstick-glacier-home-qt5-0.0.0-1.armv7hl.rpm
# Then do this:
systemctl-user restart lipstick.service 
# After you have done testing it
pkcon remove lipstick-glacier-home-qt5
pkcon install lipstick-jolla-home-qt5
systemctl-user restart lipstick.service

Thats it then, you have successfully tested the Glacier homescreen experience on your Jolla device, good luck testing it 🙂

Installing SDK version of Sailfish UI on N9

CAUTION: Might break your stuff, back up your nemo installation 
beforehand if you want to be cautious. You have been warned!

!! KNOWN ISSUE !!

Zypper does not always cache the packages, remove lipstick-jolla-home-qt5 with –clean-deps and try again.

Please note, an official guide is coming up from Jolla, which demonstrates this entire process into making an image. This guide will be updated with instructions regarding that.

First things first, you need a working copy of Nemo Mobile running on N9, you can grab one from this link, magnet link. I will not cover the installation of Nemo Mobile for your N9, you can follow this guide to do that.

You also need a working copy of Sailfish SDK running. I will also not cover the installation process here but its quite straightforward to setup. After having a Mer SDK virtual machine instance running, do this to gain ssh access to the virtual machine:

ssh -i ~/SailfishOS/vmshare/ssh/private_keys/engine/mersdk mersdk@localhost -p 2222

In this ssh shell, run:
sb2 -t SailfishOS-armv7hl -m sdk-install -R zypper mr -k -all
Then:
sb2 -t SailfishOS-armv7hl -m sdk-install -R zypper in lipstick-jolla-home-qt5
This generates rpm packages to /parentroot/srv/mer/targets/SailfishOS-armv7hl/var/cache/zypp/packages/jolla/ subdirectories, copy them all over to a separate directory on the host machine as one flat directory, like this:
mkdir ~/sailfishrpms
cd /parentroot/srv/mer/targets/SailfishOS-armv7hl/var/cache/zypp/packages/jolla/
cp ./*/*/*.rpm ~/sailfishrpms/
Copy these over to Nemo Mobile running in N9, using eg. scp. Usually one wants to copy over entire directory like the above sailfishrpms.
Then in the device, over ssh, execute:
cd sailfishrpms
zypper install –force *
This will install all of the generated rpms to the device, although with warnings, afterwards reboot to gain access of the Sailfish, SDK version, homescreen.

 CAUTION: Might break your stuff, back up your nemo installation beforehand if you want to be cautious. You have been warned!