Firmware

Dominic Spill edited this page Aug 18, 2016 · 10 revisions

How To Update Firmware

First, grab the latest Ubertooth release. Then, extract the archive and change into directory ubertooth-one-firmware-bin.

You may then run the ubertooth-dfu command like so:

$ ubertooth-dfu -d bluetooth_rxtx.dfu -r
Checking firmware signature
No DFU devices found - attempting to find Ubertooth devices

1) Found 'Ubertooth One' with address 0x1d50 0x6002

Select a device to flash (default:1, exit:0):

Press enter, and the device will automatically enter DFU mode and flash the firmware. When done, you can return it into regular operation mode by unplugging and replugging it, or running ubertooth-dfu --detach.

Troubleshooting:

If you run into an error such as "libUSB Error: Command Error: (-1)" or the Ubertooth's 4 LEDs next to each other perform a distinctive chasing pattern, run:

make clean all && make && ubertooth-dfu -r -d bluetooth_rxtx.dfu

What Version Am I Running?

In non-DFU mode, you can obtain firmware information with ubertooth-util -v. The latest release (2014-02-R1) will appear like this:

$ ubertooth-util -v
Firmware revision: 2014-02-R1
$ ubertooth-util -V
ubertooth 2014-02-R1 (dominicgs@mercury) Wed Jan 29 23:10:46 GMT 2014

Developing Firmware

You'll need a toolchain that supports ARM Cortex-M3. The Makefiles in the firmware directory are designed for GCC and a Linux-based toolchain, specifically arm-none-eabi-gcc and libnewlib-arm-none-eabi. If you are running a Debian based distribution, you can run:

apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi

Otherwise it can be downloaded from https://launchpad.net/gcc-arm-embedded, just unpack the archive and add the bin directory to your PATH.

To build the firmware, start from the directory where you cloned or unpacked the source and run the following:

cd firmware/bluetooth_rxtx/
make

This will produce a file named bluetooth_rxtx.dfu which can be written to the Ubertooth using

ubertooth-dfu -d bluetooth_rxtx.dfu -r

Although firmware source and binary images can be found in the release downloads, you will probably want fresh code from git if you are planning to modify the firmware.