usb.core.USBError: [Errno 5] Input/Output Error



So I’ve been having problems uploading to my TinyFPGA BX. I’m on macOS Catalina (10.15.5).

I came across this post from two years ago which appeared to be having a similar problem. The solution was to install the ch340g-ch34g-ch34x-mac-os-x-driver package. However, from the GitHub of that driver:

Do not install if you have the current macOS Mojave 10.14 or later. macOS Mojave 10.14 (released in October 2018) includes a CH34x driver by Apple.

So this cannot be the issue.

What happens is when uploading via the Atom apio-ide, I always get this error at the end of a program:

File "/usr/local/lib/python3.7/site-packages/usb/backend/", line 595, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 5] Input/Output Error

The program appears to work. But if I unplug the device and plug it back in it goes back directly into bootloader mode. I believe this is most likely not the desired operation. Trying to upgrade the bootloader gives the same problem. It says complete and that it’s up to date, but when I unplug the tinyfpga and plug it back in it’s out of date again.

If I run apio upload directly from the commandline I get the same error.

Additionally, many times when uploading I actually get the following error:

    Using device id 1d50:6130
    No port was specified and no active bootloaders found.
    Activate bootloader by pressing the reset button.

Despite the FPGA being in bootloader mode. If I run the same command many times in a row, after 2-5 tries it eventually works. So why would tinyprog be able to find the device SOMETIMES seemingly randomly?