Work to bring the Beagleboard xM to full frequency under Linux 3.2.28 and beyond.

Well the owners and fans of the Beagleboard xM have a bit of a dilema when it comes to picking a version of Linux to run on their boards.  Many of you, including myself are quite annoyed that the big dog is clocked down when running a current version of Ubuntu or Angstrom.  For instance, the other day I installed the latest build of Ubuntu 12.04-r5 for armhf on my board and was quite unhappy to learn that the maximum frequency was capped at 800 MHz with the board being advertised as delivering a 1 GHz arm computer.  The SD card that ships with the board allows for this, but it uses an older version of the Linux kernel, 3.0.x.  The current stable is kernel 3.5.3.  Well, I don’t know if its just me, but I want to squeeze every last instruction per second that it will allow me.  So upon searching the internet for days, I came across this one blog:

http://blog.galemin.com/2012/03/buildroot-2012-02-for-beagleboard-xm-with-li-5m03-mt9p031-camera-support/

It provides a custom buildroot setup that for some camera hardware directly attached to the Beagleboard-xM’s camera capture lines.  But the thing I noticed mainly about it when I tried it was that the board was operating at 1 GHz, and on kernel 3.2.7.  So upon further inspection I found the patches that they were using to increase the top frequency.  So I forked Robert Nelson’s stable kernel repository, which can build one of the latest stable kernels, and I’ve personally tested it for Ubuntu and Angstrom.  It also includes the patches for the xM which keep the USB ports from shutting down randomly.  I integrated the patches into my fork and modified them a bit to fit into the later kernel, and after a little wait for building, I had Ubuntu 12.04 for armhf operating with the 3.2.28-x14 kernel.  You can find my repository for this at: (edit: Kybernetes uses the 3.5.7 kernel now, the repo reflects this update)

https://github.com/Teknoman117/kybernetes-kernel

However, before you get all excited, its not quite done yet.

Note #1 – Don’t use this on a Beaglebone or original beagleboard.  There is this patch enabled (0002-Fix-sprz319-erratum-2.1.patch) which fixes the xM’s usb problems.  However is will cause the other beagleboards not to boot at all.

Note #2 – I talked with Robert Nelson about my patches and without further work they could potentially damage your Beagleboard xM.  The automatic voltage scaling (Smart Reflex) does not work properly for the OMAP 3 on recent linux kernels, at least for the beagleboard.  The people over at TI and the people working on Angstrom have patches for this that make it completely safe to run at 1 GHz, however the patches are for Linux 3.0.x and there are over a hundred of them and many are hundred of lines long.  Some of them will probably patch into 3.2 properly, and some will definitely not.   So before this works, I am going to have to figure out what works and what doesn’t and integrate this into the kernel.  I will do this for kernel 3.4, because they have completely changed the AVS system in 3.6 entirely.  So if I am going to do this work, then I will do it for the current kernel version because otherwise it would be a waste.  So keep following because I am taking this on!

– Teknoman117