OpenBench Logic Sniffer Firmware Update

I had an old OpenBench Logic Sniffer (OLS) laying around that I was trying to use with PulseView. It didn’t work as nicely as I had hoped so I figured I’d try a firmware update. My device is quite old and since I bought it, the OpenBench Logic Sniffer (OLS) and its firmware are regarded as mature. This should mean: No Bugs (yeah!).

In general, I tried to follow the Guideline I found here:

Unfortunately, this also means that the information surrounding the device can be quite dated and sometimes obsolete. So after I got it to work, I figured I’d share what I needed to do.

All of the below was done on Ubuntu 20.04.2 LTS.

Obtaining Files

The biggest challenge was obtaining the latest FPGA and PIC Firmware Binaries. Unfortunately, the links at the official OpenBench Logic Sniffer (OLS) site to the GadgetFactory-hosted Binaries are dead.

Through this link at µ I found a direct download link to what seemed like an official source.

Here is a direct Link to Download the File ols-0308-expert.tgz from what looks to be the official GadgetFactory GitHub Page.

For completeness, here’s the Link to the Source Code of the official OpenBench Logic Sniffer Tools.

Enter Update Mode

To put the Device in Update Mode, press the “Update” and “Reset” button at the same time. Now let go of the “Reset” button, then release the “Update” button.

The device will light both the “PWR” and the “ACT” LED near the USB Port.

FPGA Bitstream Update

The first update step is to flash the FPGA Bitstream:

$ ./ols-loader -write -erase -p:/dev/ttyACM0 -wB:./logic_sniffer_3.07-Demon-Core.bit
Logic Sniffer ROM loader v0.3 (November 9, 2010)
Opening serial port '/dev/ttyACM0' @ 921600 … OK
Found OLS HW: 1, FW: 3.0, Boot: 2
Found flash: WINBOND W25X40 
Chip erase … done :)
Reading BIN file 'logic_sniffer_3.07-Demon-Core.bit' … OK! (binary size = 169314)
Will write 662 pages 
Page 0x0000 write … (0x0000 0x0000)OK
Page 0x0001 write … (0x0000 0x0001)OK
Page 0x0293 write … (0x0002 0x0093)OK
Page 0x0294 write … (0x0002 0x0094)OK
Page 0x0295 write … (0x0002 0x0095)OK

PIC Firmware Update

Now, on to updating the PIC. First, the PIC needs to enter its Boot Loader:

$ ./ols-loader -p:/dev/ttyACM0 -t:115200 -boot
Logic Sniffer ROM loader v0.3 (November 9, 2010)
Opening serial port '/dev/ttyACM0' @ 921600 … OK
Found OLS HW: 1, FW: 3.0, Boot: 2
Found flash: WINBOND W25X40 
OLS switched to bootloader mode

The device will now show up as a Human Interface Device (HID) with USB Device ID 0xfc90 and Vendor ID 0x04d8:

$ lsusb | grep 04d8:fc90
Bus 003 Device 087: ID 04d8:fc90 Microchip Technology, Inc. 

In the dmesg Output, it can be seen like this:

$ dmesg | tail
[18973.744317] usb 3-10.1: USB disconnect, device number 86
[18973.971031] usb 3-10.1: new full-speed USB device number 87 using xhci_hcd
[18974.072878] usb 3-10.1: New USB device found, idVendor=04d8, idProduct=fc90, bcdDevice= 0.22
[18974.072880] usb 3-10.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[18974.072882] usb 3-10.1: Product: Diolan
[18974.072884] usb 3-10.1: Manufacturer: Diolan
[18974.076704] hid-generic 0003:04D8:FC90.0010: hidraw6: USB HID v1.01 Device [Diolan Diolan] on usb-0000:00:14.0-10.1/input0

Finally, it’s time to actually flash the new PIC Firmware:

$ sudo ./ols-fw-update -e -w -m flash -vid 0x04d8 -pid 0xfc90 -ix OLSv1.firmware.v3.0.hex
U2IO flash erasing: DONE.
U2IO flash programming: DONE.
RESET Device
Operation successfully completed.

Note that the last Command needs to be run as root. Failure to do so will yield this error message:

U2IO flash erasing: FAILED.
Device is not found.
Operation aborted.