[SOLVED] Iceprog doesn't see TinyFPGA B2



Fist of all, thank you @lukevalenty for a great board. BTW it was delivered to Russia just in 2 weeks!

I’m having a little difficulties making it work with IceStorm though. The problem is that iceprog doesn’t see the board:

Can't find iCE FTDI USB device (vendor_id 0x0403, device_id 0x6010).

The device is successfully recognized by the system:

[194455.558409] usb 3-3: USB disconnect, device number 62
[194462.949464] usb 3-2: new full-speed USB device number 63 using xhci_hcd
[194463.090700] cdc_acm 3-2:1.0: ttyACM0: USB ACM device

Here is how it looks like in lsusb:

Bus 003 Device 063: ID 1209:2100 InterBiometrics

I tried to change device string according to the --help output, e.g:

iceprog -d i:0x1209:0x2100 main.bin

However it doesn’t help:

Can't find iCE FTDI USB device (device string i:0x1209:0x2100).

The full source code is here. Package version (I’m using Arch Linux):

Name            : icestorm-git
Version         : r410.69613a2-1

In the same time iceprog works with the IceStick board as expected.

I could use a little piece of advice.

UPD: turned out it works with sudo but now I have a different error:

Failed to get latency timer (reading latency timer failed).


Never mind, I figured it out. I had to use tinyfpgab instead:

sudo pip2 install tinyfpgab
tinyfpgab --program main.bin


Glad you were able to solve your problem, and thanks for marking the thread as solved :smile::+1:t2:


One thing I didn’t figure out yet - TinyFPGA doesn’t save the configuration after powering it off. I have to reconfigure the board every time I plug it into USB. Is there a way to save the configuration?


When you plug it into a computer, it will stay in bootloader mode until you program it or tell it to boot the user configuration.

You can boot it with the programmer: tinyfpgab -b

If you just plug it into a usb power supply it will boot into the user configuration after a second.


@afiskon: it does remember the last time you programmed it, but if you always plug it into a computer you wouldn’t notice it. I’ve been thinking of other options. For example, I might be able to create a template that would be able to detect a USB reset on its port. It would only take a tiny amount of logic and would allow the board to boot into the user configuration after a second or two even when plugged into a computer. Then the programmer application would reset the USB port the board is on, the reset logic in the template would detect the port reset and reboot the FPGA into the bootloader configuration.


Thanks for the explanation!