Plasma Mobile reference images are based on halium, which uses the propietary binary blobs to make use of phone hardware. This requires the libhybris which allows us to use bionic based binary blobs in the traditional libc based environment. Halium based devices also use very old vendor-provided kernel trees, these vendor trees generally range from version 3.4 to 3.18, most of the kernel versions listed here are already marked as EOL on kernel.org.
Greg KH addressed this issue in a 3.18.48 kernel announcement email rant:> Oh, if you are _stuck_ on 3.18 (/me eyes his new phone), well, I might > have a plan for you, that first involves you yelling very loudly at your > hardware vendor and refusing to buy from them again unless they cut this > crap out. After you properly vent to them, drop me an email and let's > see what we can come up with, you aren't in this sinking ship alone, and > it's obvious your vendor isn't going to help out...
It’s however very clear that yelling at device vendor hasn’t really helped and we’re still seeing the new devices arriving on the market shipping Linux kernel version 3.18. There are some very new phones in market which use Kernel version 4.4, however these devices are so expensive that it is generally not feasible for many people to buy them.
So, how do we solve this issue? Projects like postmarketOS tries to solve this issue by using only open source components provided by vendors and avoiding binary blobs, but generally this doesn’t really result in usable system as it will not allow us to use Hardware Acceleration and other hardware features. Another solution is to use the mainline kernel, which is actively maintained and developed by the Linux Kernel community.
Little while after I started working on Plasma Mobile I stumbled upon the Android running on Nexus 7 with mainline kernel and wondered what it would take to get Plasma Mobile running on the device which runs the mainline kernel and a fully free software stack. In the process, I learned about how to mainline and asked the folks in ##linux-msm and #freedreno channels for help. Thanks to @bamse, @agross, @robclark I managed to add initial support for Nexus 5 board in the mainline kernel. This was merged into Linux kernel version 4.9. However this didn’t really support useful features other then serial console over headphone jack, power and volume buttons. After adding initial support for hammerhead in mainline kernel I was not able to continue the work due to time constraints.
Similar to hammerhead, community member opendata, a contributor to postmarketOS project, very recently managed to run Plasma Mobile on the Sony Xperia Z2 tablet. While the device came with a Linux kernel version 3.4 from the provider, @bamse managed to port 4.X Linux kernel version to that device. Recently I learned that community member flto has continued the work I started a while ago, and has been more successful in hardware support then I initially was.
This week I decided to provide a pre-built Plasma Mobile image which can work with the mainline kernel. Current Plasma Mobile images are based on KDE Neon, which uses Ubuntu 16.04 Xenial as an underlying base. Unfortunately the version of Mesa in Ubuntu’s repos were too old. Thankfully, community member JBBgameich has been maintaining the apt repository for Debian buster which included packages for Plasma Mobile. After some work to create a rootfs I successfully managed to boot a Plasma Mobile image on the Nexus 5 running a mainline kernel with mesa and freedreno graphics driver.
Using the same image as me, opendata was also able to run Plasma Mobile on the Sony Xperia Z2 tablet. Below is snapshot of the Kinfocenter application showing the system information.
Currently these images are mainly experimental and super-unstable, they aren’t really ready for production at all. However it proves that Plasma Mobile is capable of running on devices which support the mainline Linux kernel and fully free software stack. This will ultimately be useful for all the new projects working on free and open mobiles, such as Sony’s Xperia open devices, Purism’s Librem 5, since Plasma Mobile is committed to providing fully free and open source software for every device.
Despite the usual warnings that it may eat your kittens, if you want to try it on your device which is supported by mainline kernel, please contact us on Matrix at #plasmamobile:matrix.org or over email at email@example.com
Thanks to KDE Plasma team, @JBBgameich, @opendata, @flto, @bamse, @robclark, @agross, postmarketOS community, Debian Qt/KDE team for making this possible
The first part of this series focused on testing Plasma Mobile on virtual machine and/or on a PC/laptop. In this second part we will focus on testing Plasma Mobile on actual mobile devices.
Currently there are two possible ways of testing Plasma Mobile on an actual mobile device,
- Using postmarketOS
- Installing Halium and a KDE neon-based rootfs
I will explain both methods briefly in this blog post. Note that some of these steps may involve getting device-specific sources and building them manually, This may require a intermediate knowledge of how to unlock the bootloader, flashing and restoring devices and basic knowledge about various UNIX/Linux commands.Using postmarketOS
postmarketOS is touch-optimized, pre-configured Alpine Linux-based distribution which offers Plasma Mobile as one choice of several available user interfaces.
When you follow the instructions to install postmarketOS, remember to select “plasma-mobile” as the user interface when asked:Available user interfaces (5): * none: No graphical environment * hildon: (X11) Lightweight GTK+2 UI (optimized for single-touch touchscreens) * luna: (Wayland) webOS UI, ported from the LuneOS project (Not working yet) * plasma-mobile: (Wayland) Mobile variant of KDE Plasma, optimized for touchscreen * weston: (Wayland) Reference compositor (demo, not a phone interface) * xfce4: (X11) Lightweight GTK+2 desktop (stylus recommended) User interface [weston]: plasma-mobile
An important thing to note about postmarketOS is that it also offers Plasma Mobile on devices running mainline kernel, for example on the Sony Xperia Z2 tablet, Google Nexus 7 (2013), and LG Nexus 5 (partially). More information about Plasma Mobile on postmarketOS project can be found at the Plasma Mobile wiki entry.
Video below shows Plasma Mobile running on the Sony Xperia Z2 Tablet, which is running on mainline kernel instead of the pre-installed older kernel version.
However note that the postmarketOS project is still at very early stages of development and is not suitable for most end users yet.Installing Halium and a KDE neon-based rootfs
Halium provides the minimal android layer that allows a non-Android graphical environment to interact with the underlying Android kernel and access the hardware. The Plasma Mobile team provides a Neon-based rootfs which can be used along with the Halium builds. Currently Halium has been ported to multiple devices, however, binary builds are not provided because most of them include binary blobs which we cannot redistribute them legally. Instead we provide a link to the source manifest and you can use that to build your own images. Documentation on how to build and install Halium is available at the Halium website.
Plasma Mobile on Nexus 5 and Nexus 5X is using the Halium based images, binary images for those are distributed at Plasma Mobile image server as a reference for other porters and developers for easy testing. You can install on those devices using the flashtool available on Github.