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.