Saturday, June 2, 2012

Compiling the newest firmware for the Ubertooth on Ubuntu 12.04

Keeping the firmware on your Ubertooth up to date with the latest code changes will give you access to the newest fixes and features available for the device. It is not clearly evident to all uses that the software for this device is in constant growth and not automatically updated, so this tutorial will help you quickly learn how you can sync your firmware with the latest greatest device code.
Learning how to do this for the first time can prove to be a daunting task if you have never compiled code with the gcc arm embedded compiler. This tutorial will walk you though step by step on the process for ubuntu 12.04 variants and should also work with minimal changes for other OS versions and variants. Also note, this tutorial will work for both 32 and 64 bit ubuntu operating systems.
First, I like to create a work directory for all my Source code, so lets create it and change to that directory:
mkdir ~/Source
cd ~/Source
We will need to install some packages for the task.
sudo apt-get install python-dev build-essential git subversion libusb-1.0-0-dev python-pip
sudo pip install pyusb
If you are on a 64 bit OS you will also need to install the following:
sudo apt-get install ia32-libs
Grab the latest gcc arm source code:
Lets grab the latest Ubertooth source code and store it in a directory labeled ubertooth-latest:
svn co ubertooth-latest
We also need to grab the latest libbtbb source code. This is a library that supplies the ubertooth with datastructures and methods for housing and deriving information from bluetooth baseband packets:
git clone git:// libbtbb-latest
Now, lets untar the gcc arm source code file we downloaded earlier:
tar xfvj gcc-arm-none-eabi-4_6-2012q1-20120316.tar.bz2
For compiling the ubertooth arm architecture source code, we will also need to specify where our new compiler lives. I typically do this each time before I compile the source, but if you like you could also add this line to your .bashrc file or install the arm gcc copiler to a bin (i.e. /usr/local/bin) directory in your base operating system.
export PATH=~/Source/gcc-arm-none-eabi-4_6-2012q1/bin:$PATH
Now, lets compile our libbtbb source code and install its shared libraries in our base operating system.
cd libbtbb-latest
sudo make install
Now lets compile our latest ubertooth firmware and host tools
cd uberooth-latest/trunk/firmware
And if you want, we can compile our latest ubertooth host code. These are the applications you can run in ~/Source/uberooth-latest/trunk/host/bluetooth_rxtx in order to use some of the ubertooths features. Note, the latest revisions of the uberooth code now uses shared libraries so we must now do a make install when compiling the uberooth toolset.
cd ~/Source/uberooth-latest/trunk/host/bluetooth_rxtx
sudo make install
Now, lets update our devices firmware. Make sure to plug in your uberooth device for this step. Note, these next few steps require sudo or root access. However, if you have setup your ubertooth device be accessible with non root privileges, you can do this as a less privileged user without sudo. For instructions on how to set up your device to be accessible without root privileges check out my other tutorials on this blog.
cd ~/Source/ubertooth-latest/trunk/host/bluetooth_rxtx
sudo ./uberooth-util -f
cd ~/Source/ubertooth-latest/trunk/host/usb_dfu
sudo ./ubertooth-dfu write ../../firmware/bluetooth_rxtx/bluetiith_rxtx.bin
Wait a few minutes for the firmware to finish writing, the lights on the ubertooth device will indicate that the transfer is complete although I can not remember what the actual indication looks like. When the transfer is complete, you can disconnect your ubertooth and then reconnect it.
If you want to verify the firmware version on the device, run the following:
cd ~/Source/ubertooth-latest/trunk/host/bluetooth_rxtx
sudo ./uberooth-util -v
You can then check it against you latest ubertooth svn revision code
cd ~/Source/ubertooth-latest
svn info
Congratulations, you now have an ubertooth with the latest firmware.

No comments:

Post a Comment