Two years ago today*, the Raspberry Pi Model B went on sale, selling 100,000 units on the first day. Since then, over 2.5 million Raspberry Pis have found homes with hobbyists, children and professional engineers around the world.
The success of the Pi has allowed us to make substantial financial contributions to a range of open-source projects, including XBMC, libav, PyPy, Pixman, Wayland/Weston, Squeak, Scratch and WebKit, and we are continuing to sponsor projects like these. But it’s always felt like we have a piece of unfinished business.
In common with every other ARM-based SoC, using the VideoCore IV 3d graphics core on the Pi requires a block of closed-source binary driver code (a “blob”) which talks to the hardware. In our case, this blob runs on the VPU vector processor of the BCM2835 (the SOC or System On a Chip at the heart of the Raspberry Pi); our existing open-source graphics drivers are a thin shim running on the ARM11, which talks to that blob via a communication driver in the Linux kernel. The lack of true open-source graphics drivers and documentation is widely acknowledged to be a significant problem for Linux on ARM, as it prevents users from fixing driver bugs, adding features and generally understanding what their hardware is doing.
Earlier today, Broadcom announced the release of full documentation for the VideoCore IV graphics core, and a complete source release of the graphics stack under a 3-clause BSD license. The source release targets the BCM21553 cellphone chip, but it should be reasonably straightforward to port this to the BCM2835, allowing access to the graphics core without using the blob. As an incentive to do this work, we will pay a bounty of $10,000 to the first person to demonstrate to us satisfactorily that they can successfully run Quake III at a playable framerate on Raspberry Pi using these drivers. This competition is open worldwide, and you can find competition rules here which describe what you have to do, and how to enter.
This isn’t the end of the road for us: there are still significant parts of the multimedia hardware on BCM2835 which are only accessible via the blob. But we’re incredibly proud that VideoCore IV is the first publicly documented mobile graphics core, and hope this is the first step towards a blob-free future for Raspberry Pi: we’re continuing to work on that, and we hope you’ll come along with us!
* Okay, so sue us**: we launched on February 29.
** Please don’t sue us.