I think that most asked question about Chromebook in last months was about hardware acceleration. So let’s write something about it.


There is a driver for OpenGL ES for Samsung Exynos5 Dual cpu present in Chromebook. But there are two versions of it: Week35 and Week45. Both require different kernel versions.

Ubuntu 13.04 has 3.4.0-5 kernel package which was built from R23 kernel branch. Week35 OpenGL ES driver works with it and you have to grab it from ChromeOS (but maybe it got updated there already).

I still have to find time and get R25 (or R26 or R27) kernel working so we could upgrade to Week45 driver. This one is available in ChromeOS as well (beta or dev).

Where are my packages?

There were packages which provided OpenGL ES driver binaries (week45). I removed them due to license issues as it looks like Samsung bought Mali T604 license from ARM Ltd. and got it working with Exynos5 Dual. Then they sub licensed it to Google for use with ChromeOS.

So Samsung does not distribute the driver — Google does. And even when they give tarball with files there is no license in it — just standard “Google Terms of Service” note.

No redistribution license == no packages. Sure, someone can make “chromebook-opengles-driver-installer” like package which would grab binaries from ChromeOS (I did such for week35) or will fetch them from network. Feel free to do it — you can use my chromebook-mali-driver repository as a base. Once you will get it working I can put it into Samsung Chromebook PPA.

Multimedia decoding

Other thing is hardware accelerated multimedia decoding (maybe also encoding). Under ChromeOS it was done with OpenMAX stuff. Google even had some binaries available but they crashed badly under Ubuntu.

How situation looks today? No idea as I did not had time for Chromebook stuff in last months.

Hardware acceleration on Chromebook

11 thoughts on “Hardware acceleration on Chromebook

  • 16th April 2013 at 19:35

    Hi Marcin I have recently started working on getting Kubuntu running on the Nexus 10. The work is still in its initial stages since the stock android kernel config + an Ubuntu armhf initrd don’t work. But, my question is aimed towards the graphics stack.

    Once I get a minimal rootfs up, I was planning to just swap out the Ubuntu libgles with the libgles_Mali.so that Google distributes on their drivers page and install the xf86-arm-soc driver to get graphics to work.

    Any ideas if that will work ? And won’t a similar approach work for the chrome book ?

    • 26th April 2013 at 20:49

      Maybe this is a stupid question, but where and how does Google distribute the driver exactly?

      I have a chroot running X with fbdev but I don’t understand what I need to copy from ChromeOS so that the xf86-video-armsoc driver will work…

      • 26th April 2013 at 21:36

        xf86-video-armsoc does not need anything except /etc/X11/xorg.conf.d/exynos5.conf file.

  • Pingback:Accelerazione hardware sui Chromebook con Ubuntu

  • 27th April 2013 at 18:57

    Hi! I am planning on buying one of these (Chromebook). Are there any drawbacks besides the hardware acceleration if running Linux, instead of Chrome OS. I just want a small Linux machine, for everyday use (except video processing and stuff like that), but I would still want it to run smooth.

    • 29th April 2013 at 10:22

      Depends what you need. For me it replaced my Asus UL30A which had slow Intel cpu inside.

  • 27th April 2013 at 18:59

    forgot to ask about the possibility to use an USB 3G dongle? does it output enough juice for that? i want to buy a cheaper WiFi version

  • 3rd May 2013 at 11:43

    I’d quite like to run mythfrontend on ChromeOS or Chrubuntu or a hybrid of the two, does the arm based samsung have mpeg2 decoding h/w support or would it be fast enough for basic PAL resolution decoding anyway, especially if the display is accelerated in the X server?

    I have chrooted in to my chrubuntu filesystem from ChromeOS on the arm based chromebook after bind mounting /tmp/.X11-unix/ so I had the correct X authentication. I was able to run xterm and xeyes* but not able to run any OpenGL stuff, is this a matter of linking against specific OpenGLES libs or are patches to these apps needed? I also don’t know how I’d make use of any mpeg2 decoding h/w support if this device has any, would that be a feature of various apps like xbmc/mythfrontend and I’d have to rely on them supporting the right Google specific binary drivers?

    *This didn’t work very well, the window manager ChromeOS has seems very abrasive and unfriendly to arbitrary X apps. I also tried starting the matching X server on an alternate tty but it just locked up, do you know what I need to run to start a bare X server that I can throw X apps to without the window manager and make use of the accelleration?

    • 6th May 2013 at 11:46

      You need to use OpenGL ES instead of OpenGL.

      CPU itself is fast enough to decode 720p MPEG-4 so MPEG-2 should not be a problem.

  • 6th May 2013 at 14:05

    Marcin, I apologize if that is asking too much of you, but since I do not know exactly to which files you are referring to, would you be able to make a quick step-by-step saying which drivers to copy and from where to where?

    I have chrubuntu installed on the external SD card, so I guess the source files are on /dev/mmcblk0.

    I’ve looked into your repository and tried to figure out, the best I could come up with is the content of the control file:

    debian/ld.so.conf usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libEGL.so.1 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libEGL.so.1.0.45 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libGLESv1_CM.so.1 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libGLESv1_CM.so.1.0.45 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libGLESv2.so.2 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libGLESv2.so.2.0.45 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libmali.so.0 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libmali.so.0.0.45 usr/lib/arm-linux-gnueabihf/mali-gles/

    So I guess I should try and copy these files from the chromeos partition? And only these files? Should I also uninstall libgles2-mesa / libgles1-mesa or something?

Comments are closed.