How to fix PlatformIO STM32 Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
Problem:
While trying to program your STM32 board using stlink and PlatformIO (most programmers integrated onto a development board are STLink programmers), you see this error message:
xPack OpenOCD, x86_64 Open On-Chip Debugger 0.11.0-00155-ge392e485e (2021-03-15-16:43)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
debug_level: 1
hla_swd
Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
Error: open failed
in procedure 'program'
** OpenOCD init failed **
shutdown command invoked
Solution
You need to setup the correct permissions for the STLink usb devices - in other words, install the correct stlink
udev rules files. On Ubuntu, install stlink-tools
using
sudo apt -y install stlink-tools
sudo systemctl restart udev
After that, unplug your stlink (or development board) for 5 seconds and plugin it in again. This will cause the new device permissions to take effect.
Now you can retry uploading the firmware from PlatformIO.
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow