NEWS
Linux-Tipps: USB-Serial und ESP-Programmierung
-
Um ein ESP-Device mit einem USB-Port z. B. mit der Arduino IDE zu programmieren oder mit dem "tasmotizer" Tasmota hochzuladen, bietet sich folgendes Vorgehen in der Linux-Konsole an, wenn es Probleme mit der Verbindungsaufnahme mit dem ESP-Device über die USB-Schnittstelle gibt:
- Finden des Devices
Device an USB-Kabel, USB-Kabel an Linux-PC
tester@martin-D2836-S1:~$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 18e3:9102 Fitipower Integrated Technology Inc Multi Card Reader Bus 001 Device 004: ID 0c45:636b Microdia USB 2.0 Camera Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 002: ID 045e:0053 Microsoft Corp. Optical Mouse Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 004: ID 10c4:ea60 Silicon Labs CP210x UART Bridge tester@martin-D2836-S1:~$Der letzte Eintrag scheint interessant
Meist erscheinen die ESP-Devices als TTYUSBx oder TTYACMx im /dev Verzeichnisbaum - mal schauen:
tester@martin-D2836-S1:~$ ls /dev/ttyA* ls: Zugriff auf '/dev/ttyA*' nicht möglich: Datei oder Verzeichnis nicht gefunden tester@martin-D2836-S1:~$ ls -l /dev/ttyU* crw-rw---- 1 root dialout 188, 0 Okt 12 18:15 /dev/ttyUSB0 tester@martin-D2836-S1:~$root ist Owner des Devices, aber auch die User in Gruppe "dialout" hat Schreib/lesezugriff
"cu" ist ein ein einfaches serielles Terminalprogramm, was man per apt installieren kann
sudo apt install cuWenn man jetzt cu ausführt .. kein Erfolg
cu: open (/dev/ttyUSB0): Permission denied cu: /dev/ttyUSB0: Line in use tester@martin-D2836-S1:~$Grund: Nicht in der Gruppe "dialout"
tester@martin-D2836-S1:~$ groups tester sudo users tester@martin-D2836-S1:~$deshalb:
ester@martin-D2836-S1:~$ sudo adduser tester dialout [sudo] Passwort für tester: info: Füge Benutzer »tester« der Gruppe »dialout« hinzu … tester@martin-D2836-S1:~$ tester@martin-D2836-S1:~$ tester@martin-D2836-S1:~$ tester@martin-D2836-S1:~$ groups tester sudo usersWieso erscheint die neue Gruppenmitgliedschaft zu "dialout" nicht?
Die Gruppenmitgliedschaft wird erst nach An - und Abmelden des Users oder nach Absetzen des Kommandos "newgrp" aktiviert!
tester@martin-D2836-S1:~$ newgrp dialout tester@martin-D2836-S1:~$ groups dialout sudo users tester tester@martin-D2836-S1:~$Jetzt mit dialout!
... und es klappt:
tester@martin-D2836-S1:~$ cu -s 115200 -l /dev/ttyUSB0 Connected. ~[martin-D2836-S1]. Disconnected. tester@martin-D2836-S1:~$(Einschub: cu beendet man mit Betätigen der Tilde-Taste "~" und danach Punkt ".")
Wenn der User "tester" auch der ist, der in der grafischen Oberfläche des linux-Systems angemeldet ist, kann man jetzt weitere Experimente mit der arduino IDE, tasmotizer oder ähnlichem machen.


-
Um ein ESP-Device mit einem USB-Port z. B. mit der Arduino IDE zu programmieren oder mit dem "tasmotizer" Tasmota hochzuladen, bietet sich folgendes Vorgehen in der Linux-Konsole an, wenn es Probleme mit der Verbindungsaufnahme mit dem ESP-Device über die USB-Schnittstelle gibt:
- Finden des Devices
Device an USB-Kabel, USB-Kabel an Linux-PC
tester@martin-D2836-S1:~$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 18e3:9102 Fitipower Integrated Technology Inc Multi Card Reader Bus 001 Device 004: ID 0c45:636b Microdia USB 2.0 Camera Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 002: ID 045e:0053 Microsoft Corp. Optical Mouse Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 004: ID 10c4:ea60 Silicon Labs CP210x UART Bridge tester@martin-D2836-S1:~$Der letzte Eintrag scheint interessant
Meist erscheinen die ESP-Devices als TTYUSBx oder TTYACMx im /dev Verzeichnisbaum - mal schauen:
tester@martin-D2836-S1:~$ ls /dev/ttyA* ls: Zugriff auf '/dev/ttyA*' nicht möglich: Datei oder Verzeichnis nicht gefunden tester@martin-D2836-S1:~$ ls -l /dev/ttyU* crw-rw---- 1 root dialout 188, 0 Okt 12 18:15 /dev/ttyUSB0 tester@martin-D2836-S1:~$root ist Owner des Devices, aber auch die User in Gruppe "dialout" hat Schreib/lesezugriff
"cu" ist ein ein einfaches serielles Terminalprogramm, was man per apt installieren kann
sudo apt install cuWenn man jetzt cu ausführt .. kein Erfolg
cu: open (/dev/ttyUSB0): Permission denied cu: /dev/ttyUSB0: Line in use tester@martin-D2836-S1:~$Grund: Nicht in der Gruppe "dialout"
tester@martin-D2836-S1:~$ groups tester sudo users tester@martin-D2836-S1:~$deshalb:
ester@martin-D2836-S1:~$ sudo adduser tester dialout [sudo] Passwort für tester: info: Füge Benutzer »tester« der Gruppe »dialout« hinzu … tester@martin-D2836-S1:~$ tester@martin-D2836-S1:~$ tester@martin-D2836-S1:~$ tester@martin-D2836-S1:~$ groups tester sudo usersWieso erscheint die neue Gruppenmitgliedschaft zu "dialout" nicht?
Die Gruppenmitgliedschaft wird erst nach An - und Abmelden des Users oder nach Absetzen des Kommandos "newgrp" aktiviert!
tester@martin-D2836-S1:~$ newgrp dialout tester@martin-D2836-S1:~$ groups dialout sudo users tester tester@martin-D2836-S1:~$Jetzt mit dialout!
... und es klappt:
tester@martin-D2836-S1:~$ cu -s 115200 -l /dev/ttyUSB0 Connected. ~[martin-D2836-S1]. Disconnected. tester@martin-D2836-S1:~$(Einschub: cu beendet man mit Betätigen der Tilde-Taste "~" und danach Punkt ".")
Wenn der User "tester" auch der ist, der in der grafischen Oberfläche des linux-Systems angemeldet ist, kann man jetzt weitere Experimente mit der arduino IDE, tasmotizer oder ähnlichem machen.


Hier noch als Nachtrag eine "sinnvolle" Anwendung von cu, wenn das (fast) fertig programmierte ESP-Device in der Nähe des Proxmox Servers steht. Dann kann man für Feinschliff schön mitlesen, was passiert.
USB-Device zu einem "Spiel" Debian--LXC durchreichen, und Kontrollausgaben des ESP32 anzeigen lassen (kommen alle 10 Sekunden)
martin@DebianTest:~$ cu -s 115200 -l /dev/ttyACM0 Connected. Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.75 21.94 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.75 21.94 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.75 21.87 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.69 21.94 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.75 21.81 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.75 21.94 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.81 21.87 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.75 21.94 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.75 21.94 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.75 21.87 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.55 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.25 24.75 21.87 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.54 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.24 24.69 21.94 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.54 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.24 24.75 21.94 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.54 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.24 24.75 21.94 SollT 18.70 WiFi 1 MQTT 1 ok Difftemp:3.54 Hyst:0.15 ventState:0 pwmActual:0 Tmprtrs(22.24 24.75 21.87 SollT 18.70 WiFi 1 MQTT 1 ok