For using various measurement tools like oscilloscopes, multimeters, logic analyzers etc. under Linux there is an amazing tool – sigrok. I was trying to make my cheap chinese logic analyzer LWLA1016 work and this is how I succeeded.
First I tried to install sigrok and signal view from standard repo (I’m using Ubuntu) but it didn’t work. Ok, the binaries in repo might be too old, I thought.
So I compiled everything (libsigrok libsigrokdecode pulseview sigrok-cli sigrok-firmware) from sources but it still didn’t work. puseview started ok, detected lwla but when I tried to capture some samples I’ve got an error “unspecified error”.
Side note: The device consists of high-speed usb to parallel interface chip and FPGA. It doesn’t have any flash to hold FPGA firmware so it needs to be loaded before each use. On the other side, this allows you to easily reconfigure the FPGA for different purposes. You could possibly try to implement some protocol handling in FPGA and passing data to USB which is what I want to try later.
After fiddling with usb permissions and other settings it still didn’t work. So I started VirtualBox and captured USB traffic via usbmon device.
It was obvious, that the software under windows is loading some firmware into FPGA. But the data loaded into device was not the same as data in rbf firmware files.
After some googling I found this thread. The key is the very last post. So here is simplified guide how to make it work:
- Install app shipped with LWLA1016
- Copy folder C:\Program Files\LWLA1016 to your linux machine
- cd into LWLA1016\bin
- download extract script
wget 'http://sigrok.org/gitweb/?p=sigrok-util.git;a=blob_plain;f=firmware/sysclk-lwla/sigrok-fwextract-sysclk-lwla1016;hb=HEAD' -O sigrok-fwextract-sysclk-lwla1016
- run extract script
bash sigrok-fwextract-sysclk-lwla1016 ../. .././bin/lwla1016.dll: OK .././bin/lwla1016_2008.dll: FAILED .././bin/lwla1016_2508.dll: FAILED sha256sum: WARNING: 2 computed checksums did NOT match 69334+0 records in 69334+0 records out 69334 bytes (69 kB) copied, 0.104074 s, 666 kB/s 70588+0 records in 70588+0 records out 70588 bytes (71 kB) copied, 0.105039 s, 672 kB/s 69451+0 records in 69451+0 records out 69451 bytes (69 kB) copied, 0.0999514 s, 695 kB/s 73711+0 records in 73711+0 records out 73711 bytes (74 kB) copied, 0.104762 s, 704 kB/s 69337+0 records in 69337+0 records out 69337 bytes (69 kB) copied, 0.102592 s, 676 kB/s 74951+0 records in 74951+0 records out 74951 bytes (75 kB) copied, 0.10779 s, 695 kB/s
cp *.rbf ~/.local/share/sigrok-firmware/
After this, your LWLA1016 should work OK!
At least mine does 🙂