XRF Firmware upload with a Raspberry Pi


1. Overview

2. Things you need

3. Getting the Pi Ready

4. Plugging in the XRF

5. Firmware Uploading



1 Overview

Uploading new LLAP Device and Serial firmwares to XRF's from the Raspberry Pi.

The XCM software is normally used to uploaded new firmwares to the XRF's however this is currently a windows based program.
For GNU/Linux we have a simple command line tool that can be used to upload the .bin firmware files.
Thanks to the Raspberry Pi's on board 3v3 UART this upload can be done with nothing more than a Slice of Pi or a few jump wires and the target XRF, yes no need for and FTDI or similar USB to TTL-Serial.
Although the following instructions are aimed at the Raspberry Pi the XRF Uploader should compile and work on most GNU/Linux and OSX systems.

VERY IMPORTANT: Upgrading your radio is not something that should be done without knowing the risks and making sure you are fully happy with what you are about to do. We have seen many times that failed upgrades require the radio to be sent back to us for a "hardware" program.
THE RISKS: If the upgrade fails or the wrong combination of Bootloader and Firmware are used you can cause the radio to stop working.
SHOULD I UPDATE? Only update if you are 100% sure that you need too. We have seen many people see there is a new file and update without knowing why. The radio code has remained largely the same for a long time. The various simple generations have fixes for issues people have found. If you are not experiencing any issues and have a working system WE HIGHLY recommend you do not update the firmware.

Current Uploader Limits:

Any XRF/SRF/other radio sold by Ciseco after May 2012 can use this uplaoder.

The uploader cannot update the Bootloader. 



2 Things you need

Raspberry Pi
Slice Of Pi or Passive XBBO and 4 jump wires


3 Getting the Pi Ready

These instructions are based around the Debian image and may be slightly different for others.
For this examples we have a v1.5 XRF with bootloader V3d and will update it to llapThermistor-V0.47-24MHz.bin

Disabling the Serial Console and Terminal
By default Debian used the serial UART durning boot to output kernel messages and once booted it can be used as a normal login terminal.
There is a great article here with detail's of how to disable this: www.irrational.net

Getting the XRF Uploader and compiling
The XRF Uploader source can be downloaded from GitHub here
Use the following command to compile the source and make it executable


$ g++ xfr_uploader.cpp -o xrf_uploader
$ chmod +x xrf_uploader


4 Plugging in the XRF


If you have a Slice of Pi simply plug the XRF into the slice then put the slice onto the Raspberry Pi
It should look like this

If you have an XBBO you can used four jumper wire to hook up GND TX and RX as follows.
Power depends on which XBBO you have.
For a passive XBBO use the 3v3 pin from the Raspberry Pi.
For a active XBBO you can used the 5v0 pin from the Raspberry Pi


5 Firmware Uploading

Download the firmware you wish to use from here and put it in the same folder as the compiled xrf_uploader program
For this examples we will upload llapThermistor-V0.56-24MHz.bin

In order to download the file navigate to the file (for our example select XRF-LLAP and then the file) - so that is is displayed in Github and then press RAW to download it.


The onboard UART is listed as /dev/ttyAMA0 in Debian so we use the following command
$ ./xrf_uploader -d /dev/ttyAMA0 -f llapThermistor-V0.56-24MHz-ok.bin

You should see the following output

If you see a load off "ERR" errors coming back from the XRF try try opening the serial port with a terminal application like screen and make sure up can talk to the XRF by entering command mode

$ screen /dev/ttyAMA0
+++ // you might not see this echoed back
OK // response from the XRF

To exit screen hit 'Ctrl-a' then 'k' then 'y'
Try the firmware upload again. we are working on this and will update the source on Github as soon as possible.

If you have any other errors please post details to the forum so we can help you out.