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, convergence hotplug detection 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 PinePhone Pro, Quartz64, and Pinebook Pro (among other boards), and try to mainline what's possible.
- I wrote a power manager driver for the PinePhone's modem.
- I created a PinePhone multi-boot image for people that want to try all the major PinePhone Linux distros using a single 8GiB SD card. It was featured in September 2020 Pine64 community update.
- I wrote FOSS firmware for Pinephone Keyboard from scratch.
You can follow my PinePhone related kernel and other development adventures in my PinePhone Development Log.
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 Linux distributions that end up relying on it.
It's possible to donate via PayPal (1 EUR = ~25 CZK, 1 USD = ~21 CZK):
It's is also possible to donate via SEPA credit transfer to my EUR account directly. If you're in a SEPA country, this is perhaps the easiest method. This is a preferred donation method in general and especially for larger donations, because there are normally no fees (but verify that your bank doesn't charge for SEPA payments, to avoid surprises), and I don't have to worry about PayPal withdrawal limits on personal accounts (max. 500 USD, monthly).
If you're outside of SEPA, you can still use this method via services like transferwise.com. All you should need to make a donation is my IBAN and BIC/SWIFT:
IBAN: CZ7920100000002801884116 BIC/SWIFT: FIOBCZPPXXX Owner: Ondřej Jirman (Czech Republic)
Summary of donations
- ~1000 USD in HW donated by Pine64
- 1100 EUR from Pine64
- PayPal ~5200 USD and SEPA ~1800 EUR from people visiting this page (2020–08–01 – 2021–09–06)
Thank you to everyone who donated. I'll not be able to send you an individual thank you note, if you use SEPA, but I'm grateful for all and any donations.
Some of the contributions go to hardware used for testing the drivers, like USB-C docks, chargers, etc.