Arduino IDE cannot load libusb-0.1.so.4

Hello, I have a problem using the Digispark ATtiny85 by Digistump. It seems that compiling works, but it fails at this line:
/home/rootofinfinity/.arduino15/packages/digistump/tools/micronucleus/2.0a4/micronucleus: error while loading shared libraries: libusb-0.1.so.4: cannot open shared object file: No such file or directory
For reference, the digispark is a very small usb board that can be used kinda like a rubber ducky, in that it transmits information to the computer in keyboard input and such. Hence why you need to upload and then plug it in. I don’t know if that has significance, but I’d thought I’d mention it. I thought it was just an issue of it assuming FHS, so I did it with a steam-run arduino-ide. Same error. Same error also appears when running the latest version appimage of Arduino IDE with appimage-run. Gotta be honest, kinda pulling my hair out at this error, would definitely appreciate it if anyone has a suggestion.


Picture for reference.

you should installed arduino-core from nixpkgs

libusb-0.1.so is include arduino-core (libusb-compat-0_1)

Have a look at these maybe:

There are few results with the issue you mention, just search online with these keywords: error while loading shared libraries: libusb-0.1.so.4: cannot open shared object file: No such file or directory

Seems to point to either:

  • symlink missing for the .so
  • 64 vs 32 bits compatibility

Thank you all for the support! I did some research, and found that libusb.0-1.so.4 is the OLD version of libusb, that is seemingly not in nixpkgs. There is pkgs.libusb-compat-0_1, that is supposed to translate libusb-0.1 calls to libusb-1.0 calls instead. I did not get that working, so I did more research into the digispark board specifically.
I found the ā€˜improved’ version of the package I was using on arduino-ide, as noted by this github page:
Available as Arduino Board Manager entry ā€œDigistump AVR Boardsā€ using the Board Manager URL: https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json
This thankfully works (finally), but we are left with arduino-ide not having the permissions to interact with said usb. Just add some udev rules as outlined by this github page:

  services.udev.extraRules = ''
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", OWNER:="rootofinfinity"
    KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", OWNER:="rootofinfinity", ENV{ID_MM_DEVICE_IGNORE}="1"
  '';

In the end, it was much more simplistic than I originally thought. Thanks for your help everyone!

1 Like