High-performance Linux based software for mobile devices
Welcome to a website about low level Linux kernel and userspace programming for the purpose of creating a small and thus fully understandable (for a single person!) software for (mostly) mobile devices.
Navigating the website
The content is organized by topic and by device. Topics are usually separated by SW boundaries – Linux, u-boot, init system, GUI apps, etc. Each device has its own specific needs and features, and those are covered by device specific pages.
There may also be a bunch of general pages that try to tie all things together, and can serve as entry points for exploration. Every page on the website can also be reached from the site map.
This website is perpetually under construction! Subscribe to RSS to be informed about changes.
You can start exploring at:
- What's new
- Devices list
- Userspace projects
- You can also follow my PinePhone related kernel and other development adventures via my PinePhone Development Log.
To have some escape from the bloated abstractions and 20GiB SDKs of today's programming world. General Linux distributions have to cater to a wide range of devices, leveling the differences and with that the unique strengths of each device. This is what I don't want, I want to get stunning performance and unique features out of my devices.
It's often times easier and less error prone to use raw Linux interfaces, rather than trying to find a library for everything. Some web people like VanillaJS because web platform is now good enough, and I have the same approach with Linux. Raw Linux interfaces are good enough, and obscuring them with libraries only limits what you can do. Call it VanillaOS if you like. :)
Currently targeted devices are all based on Allwinner SoCs (stated in parentheses). In particular this website focuses on:
- PINE64 PinePhone (A64) – an open A64 based smarthone
- PocketBook Touch Lux 3 (A13) – e-ink reader
- TBS A711 Tablet (A83T) – a custom tablet made for/by a biometric company
Nevertheless, the topics are often applicable to general Linux programming, rather than specific to this small set of devices that I happen to own.
I also own some single-board computers based on various Allwinner SoCs, that I like to use:
- Orange Pi 3 (H6)
- Orange Pi PC 2 (H5)
- Orange Pi PC/One (H3)
Why focus so much on this weird Chinese SoC maker: Allwinner? Allwinner SoCs have a very nice and active free software community (linux-sunxi) that works on supporting these SoCs in the mainline Linux kernel.
The SoCs also have some other attractive properties, that make them more suitable for reverse engineering and hacking on, compared to SoCs from better known vendors.
For example a SD card is a primary boot device, so you can always replace the device's operating system simply by swapping a microSD card, and thus free the device from the proprietary software, which is exactly what I did to my eInk reader. Neat, heh?
They also don't have a management coprocessor that you can't control. You can actually write your firmware for it, and some people do. You don't need any proprietary binary blobs to run these SoCs at all. Everything is FOSS. Some documentation is also available.