Kurztipp: brltty stört esptool.py unter Pop!_OS
Beim Benutzen von ESPHome bzw. esptool.py stieß ich unter Pop!_OS 22.04 kürzlich auf das Problem, dass sich Entwicklungsplatinen (ESP8266, ESP32) nicht flashen ließen:
1$ esphome upload hurrdurr.yml
2INFO Reading configuration hurrdurr.yml...
3esptool.py v3.3.1
4Serial port /dev/ttyUSB0
5Connecting....
6Chip is ESP8266EX
7Features: WiFi
8Crystal is 26MHz
9...
10Writing at 0x000123da... (22 %)
11ERROR Running command failed: Could not configure port: (5, 'Input/output error')
12ERROR Please try running esptool.py --before default_reset --after hard_reset --baud 460800 --port /dev/ttyUSB0 --chip esp8266 write_flash -z --flash_size detect 0x0 /home/[...]/firmware.bin locally.
In den Kernel-Protokollen tauchte das verbundene Entwicklungsboard kurzzeitig über den erwarteten Geräteknoten /dev/ttyUSB0 auf, verschwand dann aber nach einigen Sekunden:
1[ 133.972859] usb 1-2: new full-speed USB device number 7 using xhci_hcd
2[ 134.122504] usb 1-2: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
3[ 134.122510] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
4[ 134.122513] usb 1-2: Product: CP2104 USB to UART Bridge Controller
5[ 134.122515] usb 1-2: Manufacturer: Silicon Labs
6[ 134.122517] usb 1-2: SerialNumber: 01EAFBD6
7[ 134.126272] cp210x 1-2:1.0: cp210x converter detected
8[ 134.127300] usb 1-2: cp210x converter now attached to ttyUSB0
9[ 134.350687] usb 1-2: usbfs: interface 0 claimed by cp210x while 'brltty' sets config #1
10[ 134.352606] cp210x ttyUSB0: cp210x converter now disconnected from ttyUSB0
Nach einiger Recherche stieß ich darauf, dass hierfür augenscheinlich das Tool brltty verantwortlich ist. Der Hintergrunddienst steuert Braille-Displays in der Textkonsole an und ermöglicht Blinden so die Verwendung des System außerhalb der grafischen Oberfläche. In meinem Fall löste das Abschalten des Dienstes das Problem:
1# systemctl disable --now brltty.service brltty-udev.service
2# systemctl mask brltty.service brltty-udev.service
Die Firmware konnte anschließend übertragen werden:
1$ esphome upload hurrdurr.yml
2INFO Reading configuration hurrdurr.yml...
3esptool.py v3.3.1
4Serial port /dev/ttyUSB0
5Connecting....
6Chip is ESP8266EX
7Features: WiFi
8Crystal is 26MHz
9...