Contributing to PinePhone kernel development
My name is Ondřej Jirman (you may have heard of me under my nick „megi“). Among other things, I'm independently doing some low level work on PinePhone. Some of my past and ongoing contributions include:
- I'm helping mainline device tree and driver support for PinePhone (PinePhone 1.0/1.1, LCD, PinePhone 1.2)
- Bootloader development and optimizations (I developed patches for U-Boot to take advantage of full eMMC speed (improvment from 20 MiB/s to 85 MiB/s) when loading images to boot).
- I wrote p-boot, an extremely fast PinePhone specific bootloader with GUI for selecting boot options. (video, video 2, p-boot git repo)
- I added kernel support for convergence on PinePhone (driver for ANX7688 + integration into other kernel drivers) (video 1 video 2)
- I wrote the user facing camera driver (development is currently stalled) and runtime support for multiple cameras for the A64's CSI driver. (video)
- I wrote a high-performance camera app for PinePhone (video) that utilizes all possible HW offloading for on-screen preview (video 2)
- I was involved in early modem audio experiments and developed a very versatile audio routing configuration for the modem.
- I've helped discover and fix several major and minor HW/SW issues. The now well known CC pins issue, the backlight blinking issue, etc.
- I did some early modem software reverse engineering, and found a way to unlock ADB access to the PinePhone's modem and wrote a keygen.
- I maintain a kernel fork that integrates the latest patches relevant to PinePhone, and try to mainline what's possible.
- I wrote a power manager driver for the PinePhone's modem.
All of this is 100s of hours of unpaid work, and there's still a lot of things that need improving. See bellow for the current summary of outside contributions.
A lot of the above work is driven by it being fun, the love of exploration and desire to see PinePhone succeed, and make it do things other phones can't. Some of it, especially driver mainlining, is basically just a gift to others. There's really no fun in being asked to spend a day rewriting and re-testing an already well written and working driver, because that will help someone else maintaining it, etc. All that, so that other people can use PinePhone without having to patch their kernel. That's not to say it's not an important work, though. ;)
As a matter of principle I didn't publically release anything with a GUI (my high performance camera app, p-boot display support/bootmenu, etc.). It would just be too costly for me, on top of other things I do for free. That's the reason why public version of p-boot doesn't have a GUI boot menu that you can see in my videos. Update: I was quite surprised by the amount of generosity just in a single month, since I started accepting donations, and decided to release p-boot with display support as a result.
You're welcome to contribute financially if you'd like to support my kernel work and would like to see it continue benefit PinePhone, and all the distributions that end up relying on it.
You can follow my PinePhone related kernel and other development adventures in my PinePhone Development Log.
Summary of contributions
- ~50 USD from #pinephone channel members
- ~900 USD in HW donated by Pine64
- 1000 EUR from Pine64
- ~950 USD via the above donate button
Thank you to everyone who contributed.
Some of the contributions go to hardware used for testing the drivers, like USB-C docks, chargers, etc.