it-swarm.com.de

Arduino funktioniert nur in root

Ich habe Arduino installiert, aber wie der Titel sagt, kann ich nur mit Sudo hochladen. Und ja, mein Benutzer ist Teil der Gruppe dialout, das ist also die seltsame Sache.

Arduino funktionierte zuvor auf meinem System. Was könnte falsch sein?

Ausgabe ls -l:

ls -l /dev/ttyUSB*
crw-rw-rw- 1 root dialout 188, 0 apr  2 09:23 /dev/ttyUSB0
3
Sjors123

Wie in der Ausgabe Ihres Befehls ls gezeigt, gehören /dev/ttyUSB0 Und alle ähnlichen Gerätedateien zur Gruppe dialout.

crw-rw-rw- 1 root dialout 188, 0 apr 2 09:23 /dev/ttyUSB0

Daher müssen Sie sich mit dem Befehl usemod zu dieser Gruppe hinzufügen:

Sudo usermod -a -G dialout $USER

Die Änderung erfordert das Abmelden und erneutes Anmelden. Dies ist eine sehr häufige Lösung, die ich selbst für alle meine Entwicklungsboards verwende, für die eine serielle Konsole erforderlich ist.


Alternativ kann ein udev Skript eingerichtet werden, das den Besitz dieser Datei ändert, wenn eine Verbindung hergestellt wird. In vielen Fällen wird jedoch die Änderung der Benutzergruppe bevorzugt

Insbesondere sollten Sie die Ausgabe von dmesg untersuchen, um die Informationen zum Hersteller und zur Produkt-ID Ihres Arduino zu erhalten. Dann können Sie in /etc/udev/rules.d/ Das Skript 50-arduino.rules Einrichten. Zum Beispiel hier ein Beispiel für das, was ich für Alteras FPGA-Board verwende:

$ cat /etc/udev/rules.d/51-usbblaster.rules                                                                              
# USB-Blaster II
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="*", \
ENV{DEVTYPE}=="usb_device",MODE="0666"

Ersetzen Sie "09fb" Durch die Hersteller-ID Ihres Arduino. ATTR Teil kann gleich bleiben. Sie können chown mit dem Argument RUN ausführen. Verwenden Sie beispielsweise RUN = + "/ path/to/chmod_script.sh root: myuser% k". Siehe this für weitere Informationen.

1