stm32_udev_rules.md
July 26, 2026 ยท View on GitHub
Linux permissions for USB devices
In order to flash STM32 boards in DFU mode without sudo, your user needs
permission on the DFU USB device node.
Ready-to-use rule file in this repository:
mpflash/udev_rules/65-mpflash-stm32-dfu.rules
Install (copy/paste)
sudo cp mpflash/udev_rules/65-mpflash-stm32-dfu.rules /etc/udev/rules.d/65-mpflash-stm32-dfu.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
Then unplug/replug the STM32 board (or re-enter DFU mode).
Rule contents
# mpflash STM32 DFU access rule
# Device: STMicroelectronics STM Device in DFU Mode (0483:df11)
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="df11", MODE="0660", GROUP="plugdev", TAG+="uaccess"
Verify
lsusb | grep -i "0483:df11"
groups
If your user is not in plugdev, add it and log out/in once:
sudo usermod -aG plugdev "$USER"
To check
Enter STM32 bootloader mode:
mpremote bootloader
List usb devices
(.venv) jos@jvnuc:~/projects/mpflash$ lsusb -vv -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 10000M
ID 1d6b:0003 Linux Foundation 3.0 root hub
/sys/bus/usb/devices/usb2 /dev/bus/usb/002/001
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
ID 1d6b:0002 Linux Foundation 2.0 root hub
/sys/bus/usb/devices/usb1 /dev/bus/usb/001/001
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 12M
ID 0a05:7211 Unknown Manufacturer hub
/sys/bus/usb/devices/1-1 /dev/bus/usb/001/002
|__ Port 1: Dev 4, If 0, Class=Hub, Driver=hub/4p, 12M
ID 0a05:7211 Unknown Manufacturer hub
/sys/bus/usb/devices/1-1.1 /dev/bus/usb/001/004
|__ Port 2: Dev 22, If 0, Class=Application Specific Interface, Driver=, 12M
ID 0483:df11 STMicroelectronics STM Device in DFU Mode
/sys/bus/usb/devices/1-1.2 /dev/bus/usb/001/022
|__ Port 10: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)
/sys/bus/usb/devices/1-10 /dev/bus/usb/001/003
|__ Port 10: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)
/sys/bus/usb/devices/1-10 /dev/bus/usb/001/003
Lookup the STM32 device path (/dev/bus/usb/001/022), and check if group
plugdev is granted access:
(.venv) jos@jvnuc:~/projects/mpflash$ ll /dev/bus/usb/001/022
crw-rw-r-- 1 root plugdev 189, 21 mrt 11 22:38 /dev/bus/usb/001/022
Check groups to see if user is in plugdev:
(.venv) jos@jvnuc:~/projects/mpflash$ groups
jos adm disk dialout cdrom sudo dip plugdev kvm lpadmin lxd sambashare usb