Skip to content

Instantly share code, notes, and snippets.

@azaslavskis
Created February 17, 2026 15:51
Show Gist options
  • Select an option

  • Save azaslavskis/27a4477fd40178b7915215000e3ffbd6 to your computer and use it in GitHub Desktop.

Select an option

Save azaslavskis/27a4477fd40178b7915215000e3ffbd6 to your computer and use it in GitHub Desktop.
Install esp udev rules
cat <<'EOF' | sudo tee /usr/local/sbin/install-esp-udev-rules.sh >/dev/null
#!/usr/bin/env bash
set -euo pipefail
RULES_FILE="/etc/udev/rules.d/99-esp32.rules"
echo "[+] Writing udev rules to: ${RULES_FILE}"
sudo tee "${RULES_FILE}" >/dev/null <<'RULES'
# ESP / USB-Serial common chips (dialout access, stable perms)
# CP210x (Silicon Labs)
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", MODE="0666", GROUP="dialout", TAG+="uaccess"
# CH340/CH341 (WCH)
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", MODE="0666", GROUP="dialout", TAG+="uaccess"
# FT232/FTDI (FTDI)
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", MODE="0666", GROUP="dialout", TAG+="uaccess"
# PL2303 (Prolific)
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", MODE="0666", GROUP="dialout", TAG+="uaccess"
# CDC-ACM (many dev boards expose /dev/ttyACM*)
SUBSYSTEM=="tty", KERNEL=="ttyACM[0-9]*", MODE="0666", GROUP="dialout", TAG+="uaccess"
# Native USB (ESP32-S2/S3/C3 etc) in ROM bootloader often shows as USB device:
# Espressif vendor id 303a -> allow access to USB device nodes
SUBSYSTEM=="usb", ATTR{idVendor}=="303a", MODE="0666", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM=="usb_device", ATTR{idVendor}=="303a", MODE="0666", GROUP="plugdev", TAG+="uaccess"
RULES
echo "[+] Ensuring groups exist (dialout, plugdev) and adding current user: ${SUDO_USER:-$USER}"
sudo groupadd -f plugdev
sudo usermod -aG dialout,plugdev "${SUDO_USER:-$USER}"
echo "[+] Reloading udev rules"
sudo udevadm control --reload-rules
sudo udevadm trigger
echo
echo "[OK] Done."
echo "Next:"
echo " 1) Unplug/replug the ESP board"
echo " 2) Log out/in (or reboot) so group changes apply"
echo " 3) Check ports: ls -l /dev/ttyUSB* /dev/ttyACM* 2>/dev/null"
EOF
sudo chmod +x /usr/local/sbin/install-esp-udev-rules.sh
sudo /usr/local/sbin/install-esp-udev-rules.sh
@azaslavskis
Copy link
Author

Usage (check link)

curl -sSL "link" | bash

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment