All of the reference VI units manufactured so far are pre-programmed with a USB bootloader (the OpenXC fork of the OpenLPC USB Bootloader). This means you can re-flash the device using USB, with no extra hardware required.

There are two versions of the bootloader in the prototype units:

To verify the VI was flashed correctly, we recommend trying the Android "smoke test" to make sure everything's working. You can also test from a regular computer with Python, but it's a bit more involved if you're not already familiar with the tools.

Use a paper clip or pencil to hold down the programming button on the VI. While holding down the programming button, connect a micro-USB cable to the VI and to the computer you will use to do the programming - an LED on the VI will flash green, and then you can let go of the button.

If your VI has the v1.1 bootloader, i.e. it does have an OpenXC sticker on the housing, you can copy the new firmware over in Finder. Browse to the LPC1759 drive that appears when you run it in bootloader mode, delete the firmware.bin file and copy your new firmware file .bin over (the new filename doesn't matter).

Eject the LPC1759 drive and unplug the VI. It's flashed!


If your VI has the v1.0 bootloader, i.e. it does not have OpenXC sticker, you must flash new firmware from the command line. Open the Terminal app and run this to update the firmware, assuming the file "newfirmware.bin" is in the current directory and is the new version of the firmware you want to flash:

$ cp newfirmware.bin /Volumes/LPC1759/firmware.bin

Eject the LPC1759 drive and unplug the VI. It's flashed!

Note: The LPC1759/firmware.bin file you see in Finder is just a placeholder. To check if your firmware is properly flashed, plug in the VI via USB and try running openxc-control version from the Terminal to get the firmware version.

Use a paper clip or pencil to hold down the programming button on the VI. While holding down the programming button, connect a micro-USB cable to the VI and to the computer you will use to do the programming - an LED on the VI will flash green, and then you can let go of the button.

If your VI has the v1.1 bootloader, i.e. it does have an OpenXC sticker on the housing, you can copy the new firmware over in any file manager. Browse to the LPC1759 drive that appears when you run it in bootloader mode, delete the firmware.bin file and copy your new firmware file .bin over (the new filename doesn't matter). Eject the LPC1759 drive and unplug the VI. It's flashed!


If your VI has the v1.0 bootloader, i.e. it does not have OpenXC sticker, you must flash new firmware from the command line with mdel and mcopy from the mtools package. Once you have mtools, clone the vi-firmware repository and run the bootloader-flash.sh script to program the VI:

$ git clone https://github.com/openxc/vi-firmware
$ cd vi-firmware
vi-firmware/ $ script/bootloader-flash.sh /dev/sdc new-vi-firmware.bin
where /dev/sdc is the device name of the LPC17xx (run dmesg to see what device it appears as when you plug it in with the bootloader button pressed down) and new-vi-firmware.bin is the binary firmware you want to flash, and it's located in the current directory. When the script exists, the VI is flashed - just unplug it.

Use a paper clip or pencil to hold down the programming button on the VI. While holding down the programming button, connect a micro-USB cable to the VI and to the computer you will use to do the programming - an LED on the VI will flash green, and then you can let go of the button.

The VI will appear as a typical USB drive named LPC1759 - open it.

The drive will have a firmware.bin file - delete it.

Drag and drop the new firmware .bin file onto the drive.

Eject or unmount the drive. When the drive is safe to remove, unplug the USB cable.

The next time you power up the VI (without pressing the programming button) it will be running the new firmware.

Note: The LPC1759/firmware.bin file you see in Windows Explorer is just a placeholder. To check if your firmware is properly flashed, plug in the VI via USB and try running openxc-control version from the command line to get the firmware version.