Since several months I’m trying to find my way to embedded Linux programming. My hardware set was very limited I had only one board that can be called “embedded” and it was Raspberry Pi. Because I am more interested in firmware/OS level then hardware I tried to figure out what is going on with RPi kernel. After taking brief review of raspberrypi/linux GitHub repository I realized that close to my heart is upstreaming effort. So with noob attitude I contacted RPi Upstreaming wiki page author (notro) and we started to create some foundation.
Disclaimer: These are for testing purposes and considered unstable. Use at your own risk. Edit: 20/10/2014: minor typo, clone instructions moved to “How to use it ?” section
What we have now ?
We created set of repositories to handle upstreaming process.
First there is rpi-dt-linux
it is Linux kernel based on
with patches on top of every branch. This repository aims to aggregate all
patches required for Raspberry Pi support in upstream kernel.
bcm2835_defconfig with device tree support. We want to introduce every driver
that supports device tree. Right now a lot of stuff is missing, but I will dive
into it later.
After consulting with popcornmix we decide to rebase all patches to keep them on top of every branch. This of course mean that repository will be broken, but patches will be more visible in history.
Second rpi-dt-firmware is ready to use firmware files for Raspberry Pi with already built modules and kernel. If you are familiar with Hexxeh rpi-update and his repository rpi-firmware this should not be anything new for you.
Third rpi-bcm2835 which simplifies build
and release process of
How to use it ?
If you simply want to try new kernel on your RPi then install
on Raspbian or follow instruction from Readme.md for other distributions.
To install latest release of
rpi-update on RPi:
After update simply reboot your Pi and enjoy our upstream kernel :).
If you want to play with the code I have few hints that can help.
First please clone
rpi-bcm2835 mentioned above.
rpi-dt-linux locally. This will download latest snapshot of
rpi-dt-linux and other dependencies like
u-boot and cross-compiler.
You can install already built kernel on your machine over ssh (replace
<RPI_IP> with your Pi IP address):
If you want to use your own kernel repository just use
rpi-bcm2835 with local
NOTE: that additional level of
../ was added because rpi-build creates workdir
which is reference directory for it.
It is also possible to release your own firmware repository. To help with process there are two commands:
FW_REPO is a directory with firmware git repository.
At the point of writing this post there were 3 releases of
applied v10 of mailbox API and Lubomir Rintel
bcm2835-thermal drivers from his
All updates are published in
with every release.
Of course we are happy with every contribution small and big, critique and process improvement hints. Let us know what you think about this effort.