Raspberry PI 2 B Port state - Report

Late in November 2015, I got hired at Mozilla by Developer Relations team to work on a new project.

May 2, 2016 - 3 minute read -
mozilla firefoxos

Late in November 2015, I got hired at Mozilla by Developer Relations team to work on a new project. The project was Port current B2G (old Firefox OS) stack to ARM developer boards, in the specific case, the Raspberry PI 2 B.

After the Mozilla decision of move Firefox OS from the corporation umbrella to a community driven project (B2G OS), it was more difficult to keep components working stable and the porting process synced with B2G development.

We found many blockers during the porting process that made almost impossible for a while to think on get a running build. Some of them were:

  • Raspberry PI Foundation is not interested on Android
  • VC4 driver development by Broadcom and Raspberry PI Foundation is being pushed to main sources but only for Linux, no plans to support Android any time soon
  • Projects like Mesa3D had incomplete support for Android
  • Gecko supported an old version of OpenGL
  • Almost all the support around Raspberry PI is for Linux not Android
  • No exist of a well done/made kernel configuration of the RPi for Android

There is a list of goals that we achieved during the Porting work:

  • Use NOOBs installer to install B2G on the RPi 2 B
  • Gecko patches landed to make graphics work (Thanks Juan)
  • Stable Android Kernel configuration for RPi 2 B boards
  • Android Lollipop base ported to RPi 2 B
  • ADB board support as on phones
  • If you want to see the full list of goals and task done, you can check the Mozilla Wiki

Where we are?

At Developer Relations team we hope and want to finish the Porting process based on B2G (Android stack) to RPi. We will close this chapter just after Platform Engineers merge and publish the stabilization branch for the community driven project (B2G 0S), before that, don’t expect reproducible build steps or installable builds.

After stabilization branch is published, you can follow those steps to build your own package to install on your Raspberry PI. We will be happy to announce when you will be able to try out our work and help us to improve it.

What’s working on builds?

If you create a build of B2G for your Raspberry PI 2 B, you will have a build with the following features:

  • ADB access through Ethernet
  • Debug method using serial cable with GPIO ports
  • Gecko booting
  • Gaia booting
  • Keyboard access
  • Access to APIs provided by Gecko
  • Wifi modules loaded (need to be configured manually depending on the adaptor)
  • HDMI Display (up to 1920px resolution)

Special thanks

At first, this project was planned to be developed by only one person (me), but at different points of the process was necessary the help of more people to get rid of components that were difficult to make them work. I really appreciate the help I got from many people, so, I have an special space for all of you.

Thanks to Juan Gomez (AtilA) and Alexandre Lissy (gerard-majax) from Platform team, specially Gregor Wagner who let time for Juan and Alex to help me. Dietrich Ayala who followed all my work and helped me to understand and figure out many things. Finally but not less important, thanks to Jason Weathersby and David Bryant for let me work with DevRel team in this and next project about Raspberry PI boards.

So, what’s next?

Starting May 2 I will be working in a new phase to push the web to Raspberry PI boards. This time we are not going to relay on B2G, Android or another Android based stack; I will be working on produce a clean and configurable Linux base that will enable us keep sync with latest Raspberry PI development (specially video driver progress) and increase the number of possibilities for web projects and development boards.

We will still target Raspberry PI 2 B boards but we know with this new Linux base approach will let us Port the web to the rest of the Raspberry PI version in the market. So, keep an eye on this, I will keep you all informed :)