Archive for the ‘Linux’ Category

Wuthering Bytes 2014 Talk – SPI and I2C

Tuesday, August 19th, 2014


Here are the slides to the SPI and I2C talk I gave at Wuthering Bytes 2014 at Hebden Bridge, here in the UK.

WutheringBytes 2014 Talk – Linux Bootloaders and Kernel Config

Saturday, August 16th, 2014


Here are the slides to the Loaders talk I gave at Wuthering Bytes 2014 at Hebden Bridge, here in the UK.

OSH Camp 2012 – Flickr Group

Thursday, September 20th, 2012

There is a Flickr group for the Open Source Hardware User Group (OSHUG) and photos from this years camp have been uploaded to it. The photos below are courtesy of Carrier Detect. The group can be found at

Me speaking

Hippiegunnut interfacing to her Pi

OSHCamp 2012 Talk – Developing Linux on Embedded Devices Slides

Saturday, September 15th, 2012

Here are the slides to the talk I gave at Open Source Hardware Camp 2012 here in the UK.

Upgrading your UK T-Mobile Google G1 (HTC Dream) to Android 2.x

Friday, October 22nd, 2010

I’m currently developing a new project. Its a bluetooth enabled bracelet. I wanted to write an iPhone app to control it. However, much as I like my iPhone 4, Apple’s policy about locking the thing down sucks. So I then looked at writing an Android application for my G1. The problem with that is that bluetooth support only arrived in Android 2.0 and T-Mobile/HTC ceased upgrades at 1.6 on the G1. Since my G1 is two years old and out of contract I decided to be brave and upgrade it to Android 2.2. Note the G1 is called the HTC Dream in many markets.


T’info about Dash

Thursday, December 24th, 2009

Once upon a time there was the Bourne command shell. sh as it is known is core at the heart of any UNIXy type operating system and others too. However for some it didn’t do enough so the Bourne Again shell, bash, was written and nearly every system ships with that. These shells are not the same. The have similar syntax but do not behave similarly.

There are other shells which have a completely different syntax and other scripting languages such as Perl and PHP so when writing a shell script you can indicate the correct interpreter using the ‘hash bang bin bash’ comment to indicate you are using bash. I.e.


Some lazy programmers don’t indicate the exact shell they require and use


to mean bash when it means sh.

Ubuntu, in their wisdom, have decided to go for dash as their shell. It is an evolution of the Almquist shell and is smaller and lighter weight than bash however they install bash anyway. dash and bash have the common subset of sh commands but are different. So if you find you have a problem building or similar on Ubuntu it may be that the wrong shell is being used. Ubuntu has a symlink as follows:

lrwxrwxrwx 1 root root       4 Mar 29  2009 sh -> dash

You may need to change this to point to dash as follows:

$ cd /bin
$ sudo rm sh
$ sudo ln -s bash sh

While we’re handling Ubuntu oddities building against NCurses, the terminal output library, can also be problematical. A little while ago NCurses was split in to two libraries, and Some badly written software will try and link explicitly with directly rather than trying first. Ubuntu does not split these two libraries but provides just the one library so if you have an issue with a missing you will need to add symlinks in to your library directory as follows:

$ cd /usr/lib
$ ln -s
$ ln -s

Building PHP C extensions on Ubuntu 9.10

Tuesday, December 1st, 2009

I have just taken over maintenance of the PECL Direct IO extension as it has been unmaintained for a while. Naturally the first thing I did before writing any new code was to check out the extension from SVN and try and build it. Building the source was fine but when I tried make test it failed producing output like the following:

PHP Warning:  PHP Startup: Unable to load dynamic library 'modules/' - 
modules/ cannot open shared object file: No such file or 
directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'modules/' - 
modules/ cannot open shared object file: No such file or 
directory in Unknown on line 0

The default PHP package on Ubuntu 9.10 is fairly minimalist. Most extensions are provided as separate packages which include an INI file and a dynamic library. The dynamic library is stored in:


And the INI file for each extension is in:


The make tests rule in the generated Makefile in the extension you are compiling modifies the path that PHP searches for extensions by to point to the modules directory within the extension source. So PHP, which is used to run the tests, cannot find the extensions.

I’ve found the easiest way (if slightly hacky) to fix the make test failure is just to copy the .so files from the PHP5 extension directory in to the modules directory within the extension source.