GENIVI-fying Chromium

In the last weeks, I’ve been working to integrate Chromium in the GENIVI Development Platform (GDP).

GENIVI provides a platform tailored for the needs of the In-Vehicle Infotainment (IVI) industry. It’s interesting to highlight their early adoption of Wayland for the graphic stack and the development of the Wayland IVI extension to fulfil the specific needs of IVI window manager implementations.

In GDP application model, apps are under control of systemd, which takes care of starting and stopping them. Through the ivi-application protocol, applications register their surfaces to be managed by HMI central controller. This HMI controller will be in charge of manipulating the surfaces belonging to applications for presentation to the user, using the ivi-controller protocol. In the end, the Wayland compositor will compose the surfaces on screen.

The first step was to build Chromium for the target platform. GDP can be built with Yocto, and the meta-browser layer provides a set of recipes to build Chromium, among other browsers. Support for Chromium on Wayland is granted by the Ozone-Wayland project, developed mainly by Intel. We had already used this combination of software to run Chromium on embedded platforms, and made contributions to it.

To achieve the integration with the GDP application model, we need to put some files in place so the browser can be controlled by systemd and the HMI controller has some knowledge about its existence. We extend the chromium-wayland recipe with a .bbappend file added to the GDP recipes. With everything in place, and one additional dependency from meta-openembedded, we are able to add Chromium to a GDP image and build.

Chromium on GDP

If you want to reproduce the build yourself before everything is integrated, you can already do it:

  • Get the GENIVI development platform and follow instructions to set GDP master up for your board.
  • Get the meta-browser layer and add it to your conf/bblayers.conf. I currently recommend to use the branch ease-chromium-wayland-build from this fork, as it contains some cleanup patches that haven’t been integrated yet. EDIT: patches have been merged into upstream meta-browser, no need to use the fork now!
  • You should already have the meta-openembedded submodule, so add meta-openembedded/meta-gnome to your conf/bblayers.conf.
  • Get the integration patch and add it into the meta-genivi-dev submodule. You may add this fork as a new remote and change to the chromium-integration branch, or you could just wget the patch and apply it locally. EDIT: the patch has been amended several times, links were updated.
  • Add chromium-wayland to your IMAGE_INSTALL_append in conf/local.conf. Now you may bitbake your image.

Next steps include integrating my patches into mainline development of their respective projects, rebasing meta-browser to use the latest possible version of Chromium, trying more platforms (currently working on a Minnowboard) and general fine-tuning by fixing issues like the weird proportions of the browser window when running on GDP.

This work is performed by Igalia and sponsored by GENIVI through the Challenge Grant Program. Thank you!

GENIVI logo

GENIVI meeting at Seoul

Hello! I’m writing this update from Seoul!

The National Folk Museum of Korea, framed by the gardens surrounding Gyeongbokgung Palace

The National Folk Museum of Korea, framed by the gardens surrounding Gyeongbokgung Palace

The purpose of this trip is taking part in the GENIVI 13th All Member Meeting. Igalia will present the contributions made to the GENIVI community in the browsers area. I have been coordinating the company investment in the automotive field in the last year and taken part in the development of several prototypes involving Chromium technologies, that is the reason I am here with Silvia Cho and Michael Catanzaro.

Among other things, Igalia has contributed our knowledge to the discussion on the different technical choices to build a browser for the sector, providing choices and analyzing pros and cons of each one. We have been working to complete the implementation of Ozone-Wayland, the layer that enables running Chromium on Wayland: this task will be essential in the automotive sector where next generation platforms are being built on top of Wayland. Finally, we have put together the pieces that allow to run a modern instance of Chromium on a Renesas R-Car M2 board, an embedded platform designed for this sector; a job that implied hacking the BSPs, the build recipes and even some wrapper libraries.

Three talks will be presented by Igalians in this event:

We will also have a booth at the conference showcase, where public will be able to see our work in action. An R-Car board will be running Chromium on top of Wayland to display our work on Ozone-Wayland and porting. Last but not least, there will also be some demos featuring WebKit for Wayland, a fresh flavor of WebKit that focuses on high performance with a low footprint.

Chromium running on top of Weston on an embedded ARM device.

Chromium running on top of Weston on an embedded ARM device.

You can expect to see slides and maybe some more pictures here, as usual, later this week. Happy hacking!

EDIT: uploaded the slides of the three talks, linked above. Also added some pictures from twitter. Finally, we have been awarded as GENIVI most valuable contributors!