A web browser for the Raspberry Pi


As I previously mentioned, Collabora has been working with the Raspberry Pi Foundation on various projects including a web browser optimised for the Raspberry Pi.
Since the first beta release we have made huge improvements; now the browser is more responsive, it’s faster, and videos work much better (the first beta could play 640×360 videos at 0.5fps, now we can play 25fps 1280×720 videos smoothly). Some web sites are still a bit slow (if they are heavy on the JavaScript side), but there’s not much we can do for web sites that, even on my laptop with an Intel Core i7, use 100% of one of the cores for more than ten seconds!

The browser is based on Gnome Web (Epiphany) using WebKit 1 (i.e. the non-multi-process version of WebKit).

Our main achievements are:

  • More responsive UI and scrolling, even under heavy load (like when loading a page)
  • Progressive tiled rendering for smoother scrolling (as mobile browsers do)
  • Startup is three times faster
  • Avoid useless image format conversions
  • Better YouTube support, including on-demand load of embedded YouTube videos to make page load much faster
  • Hardware decoding of videos (through gst-omx)
  • Hardware scaling of videos (again, through gst-omx)
  • Reduction of the number of memory copies to play videos
  • Faster fullscreen playback using dispmanx directly (a bit buggy at the moment, we are working on it)
  • Memory and CPU friendly tab management
  • JavaScript JIT fixes for ARMv6
  • Disk image cache (decoded images are kept in memory mapped files in a cache, saving CPU)
  • Memory pressure handler support


The Raspberry Pi web browser (mp4 video file)

To install the browser, just update your Raspbian and install the “epiphany-browser” package:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install epiphany-browser

Thanks to all the people at Collabora that, at some point or another, helped on this project: Julien Isorce, Emanuele Aina, ChangSeok Oh, Tomeu Vizoso, Pekka Paalanen, André Moreira Magalhaes, Derek Foreman, Gustavo Noronha, Danilo Cesar, Emilio Pozuelo Monfort and Jonny Lamb (I hope I haven’t forgotten anybody!).
Also thanks to the Raspberry Pi Foundation, and in particular to Eben Upton, for their commitment to making browsing on the Pi better, and to Ben Avison for his work on optimising pixman and libav for ARMv6.

Update: people have reported a few bugs since the release, in particular a problem with Raspbian configured to use 24-bit or 32-bit mode for graphics. We should be able to fix this in a week or so.
Another problem is that Vimeo videos stopped working. This seems to be due to a change made by Vimeo that broke playback also on other browsers and on Android.

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts

Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

Do I still need to add ‘deb http://raspberrypi.collabora.com wheezy web’ to my sources.list as with the old version, or is this new version now in the default Raspbian repo?

Thanks!

It’s the default so you won’t need the Collabora one any more.

[…] Marco Barisione, who led the browser work at Collabora has written a blog post about […]

Cool! Do you plan to upstream any of the WebCore changes you did? So far I think I’ve seen only the memory pressure handler patch in Bugzilla.

Philippe, I think that a few other patches were upstreamed.
Some patches don’t make much sense outside the Pi. A few others would be good upstream, but we modified the WebKit 1 part so we would need to update them for WebKit 2 and that’s not trivial (but will slowly happen).

Can you point to any relevant git trees/branches where the needed things are? To build it outside raspbian, but also to see the individual patches, not just a src.deb or huge diff.gz

While there’s no public official git tree yet (the current unofficial tree is on Collabora’s web space) the debian sources contains all the patches cleanly separated:

apt-get source libwebkitgtk-3.0-0 epiphany-browser gtk+3.0 pixman gstreamer1.0-omx

Mart: http://cgit.collabora.com/git/raspberry-pi/ should contain everything. The branches we use are named rpi-$version.

Marco, i have install web today, in
color depth 16bit work ok, in 32bit and 24bit the color are invert red with blue. How to resolve this problem?
page for test lviiier.com/ped

Thanks

Why is the package called “epiphany-browser” if its highly customized? Also im wondering how I can use this with Arch for ARM. Will this browser be available via AUR? How will the package then be called to distuingish it from normal epiphany?

I installed it yesterday and it makes a very big difference. Lots of thanks are in order.
Question : I noticed a time lag between audio and video in youtube videos. Is this expected, or does it have to do with my system/ installation?

Flavio, we will try to fix the colour problem by next week.

MartiniMoe, Epiphany is not highly-customised and still looks the same. It contains patches from upstream (some that we wrote) plus other changes specific for the Pi. The same goes with Epiphany.
I’m not familiar with arch, but one of my previous comments contains a link to the git repositories.

Alexander Giochalas, no, that’s not normal :-/
Have you done apt-get dist-upgrade?
Are you using HDMI for audio?

Any sign of hardware accelerated CSS transitions?

> Any sign of hardware accelerated CSS transitions?

Not yet. We need to wait for Eric Anholt’s work on Mesa being complete before being able to enable accelerated composition.

Hi Marco, I installed Epiphany on my Raspberry Pi B+ this evening, with great excitement, following the installation guide on the Pi website, however it is slow and won’t play any videos other than the test one you have listed. Any thoughts on what I can do? I’m tempted to uninstall it and wait for a update. Thanks in advance for your time and help. – YouTube says ‘plug ins missing’, raspberry pi site, ‘not the right token’

Martin, did you do dist-upgrade?
Any particular video that is slow?

Hi Marco,
Web browser a massive improvement thanks for all your work.
I’ve been using it since December & have always had and still am having an occasional crash (I assume, Epiphany suddeny vannishes) if, as suggested in the December announcement, I have cgroup_enable=memory enabled, without it the browser seems pretty stable. Any ideas?
Thanks again.
Kevin.

The result is really impressive for my apps ! I got a question about fullscreen. I can undecorate the browser but can I remove the address bar ? can’t wait to see the next release. Thx Marco and all the team.

Hello Marco
I have installed the browser on 2 of my RPI’s. Both are model B’s, one is Rev 1 and the other Rev 2. The bowser is a massive improvement and well done. However after doing the install (including dist-upgrade) the mouse pointer has a time lag and sometimes overshoots before going to the correct location. Any ideas and recommendations would be appreciated.

Kevin:
Not really and it sounds weird. The memory pressure handler thing should help preventing crashes due to out of memory :-/

Robbie:
What do you mean? The bar disappears for me.

Neal:
Time lag while on the browser window or in general? We should not have changed any package that could affect the desktop this way.

Hey Marco, thanks for the quick response.

I want to use this application as a kiosk so I need to remove the window’s headers but also the address bar and tabs bar. But I can’t find options anywhere. Do i missed a point ? is there a way to have a page fullscreen without browser elements ?

I was unsure when the Time Lag was first introduced so I started with a new install and stepped through the update, upgrade, dist-upgrade and at this point was when the time lag seems to have started – minor at this point. I could virtually remove the lag by altering the mouse speed and accuracy settings. Then I proceeded to install the Bowser and after this the time lag was very noticeable and I am unable to make adjustments to remove any of it. Also I have noticed on all 3 installation a warning appears at start up:-
[Warn] Kernal lacks CGroups or Memory controller not available, not starting CGroups. …(Warning)
I have used the Bowser quite a lot now and have had several lockouts and sometimes with a message about page failed restart Bowser.
Hope this helps and look forward to any recommendations.

Sorry I forgot to mention that the time lag is noticeable on the desktop but more noticeable whilst using the Browser. It looks like the processor is playing catch up.

Very nice!

Does it have a full screen mode? Like –kiosk on Chromium?

Recurrent questions about full-screen mode, the –help shows an “app” mode, but black screen instead. Epiphany seemed to support a -f –fullscreen command line mode, but no fun either :(