Arduino und Leap 15.1 - Rechteproblem?
Hallo Liste. Als user kann ich nicht meinen (Nachbau-) Arduino Leonardo mit der Arduino IDE (Version 1.8.5 und 1.8.10 getestet) programmieren. Als root oder an meinem Tumbleweed PC als user funktioniert es aber. Der user gehört aber zu den Gruppen dailout, lock, und Bei Tumbleweed reicht die Gruppe dailout offensichtlich aus. Hat jemand Leap15.1 mit Arduino am laufen? Sonstige Ideen? Gruß, Michael [Mo Nov 18 10:38:18 2019] usb 1-2: new full-speed USB device number 16 using xhci_hcd [Mo Nov 18 10:38:18 2019] usb 1-2: New USB device found, idVendor=2341, idProduct=8036 [Mo Nov 18 10:38:18 2019] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [Mo Nov 18 10:38:18 2019] usb 1-2: Product: Arduino Leonardo [Mo Nov 18 10:38:18 2019] usb 1-2: Manufacturer: Arduino LLC [Mo Nov 18 10:38:18 2019] cdc_acm 1-2:1.0: ttyACM0: USB ACM device miborn@linux-c219:~/Downloads/arduino-1.8.10> ll /dev/ttyACM0 crw-rw---- 1 miborn dialout 166, 0 18. Nov 19:36 /dev/ttyACM0 miborn@linux-c219:~/Downloads/arduino-1.8.10> id uid=1000(miborn) gid=100(users) Gruppen=100(users),5(tty),457(uucp),459(wwwrun),460(www),461(vboxusers),484(video),489(disk),490(dialout),491(cdrom),492(audio),494(lock),1000(plugdev) -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Die Ausgabe nach dem erfolgreichen Erstellen der hex Datei. ... Der Sketch verwendet 11208 Bytes (39%) des Programmspeicherplatzes. Das Maximum sind 28672 Bytes. Globale Variablen verwenden 1028 Bytes (40%) des dynamischen Speichers, 1532 Bytes für lokale Variablen verbleiben. Das Maximum sind 2560 Bytes. Erzwinge Reset durch öffnen/schließen mit 1200 bps auf dem Port /dev/ttyACM0 PORTS {/dev/ttyACM0, } / {} => {} PORTS {} / {/dev/ttyACM0, } => {/dev/ttyACM0, } Found upload port: /dev/ttyACM0 /home/miborn/Downloads/arduino-1.8.5/hardware/tools/avr/bin/avrdude -C/home/miborn/Downloads/arduino-1.8.5/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -P/dev/ttyACM0 -b57600 -D -Uflash:w:/tmp/arduino_build_934031/drehknopf_03.ino.hex:i avrdude: Version 6.3, compiled on Jan 17 2017 at 11:00:16 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "/home/miborn/Downloads/arduino-1.8.5/hardware/tools/avr/etc/avrdude.conf" Beim Hochladen des Sketches ist ein Fehler aufgetreten User configuration file is "/home/miborn/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : /dev/ttyACM0 Using Programmer : avr109 Overriding Baud Rate : 57600 avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied avrdude done. Thank you. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Die Ausgabe nach dem erfolgreichen Erstellen der hex Datei. avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
avrdude done. Thank you.
Hallo, Am Montag, 18. November 2019, 19:46:27 CET schrieb Michael Born: ... permission denied Da denke ich als erstes an Dateirechte UND apparmor https://blog.cboltz.de/uploads/osc12/apparmor-english-2012-v2.pdf Gruß Hugo Mahr -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Hugo, hallo Michael, hallo zusammen, Am Dienstag, 19. November 2019, 17:50:57 CET schrieb Hugo:
Am Montag, 18. November 2019, 19:46:27 CET schrieb Michael Born: ...
Die Ausgabe nach dem erfolgreichen Erstellen der hex Datei. avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
avrdude done. Thank you.
permission denied Da denke ich als erstes an Dateirechte UND apparmor https://blog.cboltz.de/uploads/osc12/apparmor-english-2012-v2.pdf
Freut mich, dass Du diesen Link griffbereit hast :-) Davon gibt es inzwischen eine neuere Version: https://blog.cboltz.de/uploads/apparmor-crash-course-2019.pdf und auch ein Video: https://media.ccc.de/v/froscon2019-2399-apparmor_crashkurs Voraussetzung für ein "permission denied" von AppArmor ist allerdings, dass das betroffene Programm überhaupt ein AppArmor-Profil hat. Bisher ist mir für avrdude oder die Arduino IDE noch keins über den Weg gelaufen, AppArmor ist also als Ursache eher unwahrscheinlich. Trotzdem kann ein Blick in /var/log/audit/audit.log nicht schaden ;-) Ich hatte übrigens schon "Spaß" mit dem Paket "brltty", das avrdude ein Device vor der Nase weggeschnappt hat. Falls Du das installiert hast und nicht brauchst, entferne es mal testweise. (Ich weiß nicht, wie schnell gelöschte udev-Regeln tatsächlich inaktiv werden - falls es nicht gleich klappt, teste nach einem Reboot nochmal.) Gruß Christian Boltz -- Ich habe sogar schon den passenden Werbespruch für suse-announce: *Nicht nur sauber sondern rein: Mails gewaschen und gebügelt mit t-prot! Noch nie war Mega-Perl so saugstark!!!* [Jan Trippler in suse-linux] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Danke für Eure Vorschläge. brltty habe ich zum Glück nicht installiert. Das hatte mir mal auf einer Ubuntu-Installation viel ärger gemacht (IIRC hat es USB-Seriell Adapter blockiert). Ich habe jetzt als user unter Leap 15.1 das Beispielprogramm "blink" auf einen Arduino Nano (Nachbau mit ch341-uart converter) erfolgreich geflasht. Das läuft allerdings über /dev/ttyUSB1 Der Arduino Leonardo geht noch immer nicht als user. Er nutzt nicht nur /dev/ttyACM0 sondern er nutzt auch einen anderen Programmiermodus. Sein USB/UART port wird erst mit 1200baud geöffnet und gleich wieder geschlossen. Da weiß der Leonardo, dass er in den Programmiermodus soll. Er meldet sich dann mit geänderter ID auch wieder als /dev/ttyACM0. Ich sehe leider nicht, wo es da schief läuft. Naja, zur Not programmiere ich ihn als root. Apparmor habe ich jetzt mal in Yast ausgeschaltet - das hat aber nichts geändert. Heute gehört das Device sogar dem user - und peinlicherweise weiß ich nicht warum. Aber, es läuft ja trotzdem nicht. linux-c219:/home/miborn/Downloads/arduino-1.8.10/hardware/tools/avr/bin # ll /dev/ttyACM0 crw-rw---- 1 miborn dialout 166, 0 19. Nov 22:01 /dev/ttyACM0 Schönen Abend, Michael -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Michael, Am Dienstag, 19. November 2019, 22:16:33 CET schrieb Michael Born:
Danke für Eure Vorschläge.
brltty habe ich zum Glück nicht installiert. Das hatte mir mal auf einer Ubuntu-Installation viel ärger gemacht (IIRC hat es USB-Seriell Adapter blockiert).
Ich habe jetzt als user unter Leap 15.1 das Beispielprogramm "blink" auf einen Arduino Nano (Nachbau mit ch341-uart converter) erfolgreich geflasht. Das läuft allerdings über /dev/ttyUSB1
Der Arduino Leonardo geht noch immer nicht als user. Er nutzt nicht nur /dev/ttyACM0 sondern er nutzt auch einen anderen Programmiermodus. Sein USB/UART port wird erst mit 1200baud geöffnet und gleich wieder geschlossen. Da weiß der Leonardo, dass er in den Programmiermodus soll. Er meldet sich dann mit geänderter ID auch wieder als /dev/ttyACM0. Ich sehe leider nicht, wo es da schief läuft.
Naja, zur Not programmiere ich ihn als root.
Apparmor habe ich jetzt mal in Yast ausgeschaltet - das hat aber nichts geändert.
Heute gehört das Device sogar dem user - und peinlicherweise weiß ich nicht warum. Aber, es läuft ja trotzdem nicht. linux-c219:/home/miborn/Downloads/arduino-1.8.10/hardware/tools/avr/bin # ll /dev/ttyACM0 crw-rw---- 1 miborn dialout 166, 0 19. Nov 22:01 /dev/ttyACM0
Schönen Abend, Michael Wahrscheinlich hast Du schon im arduino forum nachgesehen. Speziell https://forum.arduino.cc/index.php? PHPSESSID=c4m1ovgjmdg06bain7oud2bip6&topic=495039.15
Das war mein erster Treffer und scheint doch zu passen. Aufgefallen ist mir die Option a in chmod (post #6). Viele Grüße Hugo Mahr -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Hugo. Vielleicht verstehe ich ja Deinen Vorschlag nicht... Ich habe in der ersten Email gezeigt, dass mein user in allen relevanten Gruppen ist (dailout) und außerdem sogar der owner von /dev/ttyACM0. Auch wenn ich allen Lese- und Schreibrechte gebe, bekomme ich die "avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied" Fehlermeldung. Das ist ja das Verrückte, weshalb ich hier mit diesem total offensichtlichen (es fehlen halt die Zugriffsrechte) Problem nerve. Während der Arduino Leonardo in seinen Programmiermodus geschaltet wird, meldet er sich mit einer anderen idProduct=0036 als /dev/ttyACM0 an. Da verschwinden dann die a+rw Rechte. Nach 8 Sekunden (in denen beim Leonardo kein Programmierversuch ankam) meldet er sich wieder mit idProduct=8036 als /dev/ttyACM0. miborn@linux-c219:~> chmod a+rw /dev/ttyACM0 miborn@linux-c219:~> ll /dev/ttyACM0 crw-rw-rw- 1 miborn dialout 166, 0 20. Nov 20:30 /dev/ttyACM0 miborn@linux-c219:~> ll /dev/ttyACM0 crw-rw---- 1 miborn dialout 166, 0 20. Nov 20:50 /dev/ttyACM0 miborn@linux-c219:~> ll /dev/ttyACM0 In /var/log/messages steht für diesen Vorgang: 2019-11-20T20:28:19.318929+01:00 linux-c219 kernel: [147324.028432] usb 1-2: USB disconnect, device number 45 2019-11-20T20:28:19.662963+01:00 linux-c219 kernel: [147324.371529] usb 1-2: new full-speed USB device number 46 using xhci_hcd 2019-11-20T20:28:19.814937+01:00 linux-c219 kernel: [147324.524995] usb 1-2: New USB device found, idVendor=2341, idProduct=0036 2019-11-20T20:28:19.814946+01:00 linux-c219 kernel: [147324.524997] usb 1-2: New USB device strings: Mfr=2, Product=1, SerialNumber=0 2019-11-20T20:28:19.814947+01:00 linux-c219 kernel: [147324.524998] usb 1-2: Product: Arduino Leonardo 2019-11-20T20:28:19.814952+01:00 linux-c219 kernel: [147324.524999] usb 1-2: Manufacturer: Arduino LLC 2019-11-20T20:28:19.814953+01:00 linux-c219 kernel: [147324.525440] cdc_acm 1-2:1.0: ttyACM0: USB ACM device 2019-11-20T20:28:19.815724+01:00 linux-c219 mtp-probe: checking bus 1, device 46: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2" 2019-11-20T20:28:19.815849+01:00 linux-c219 mtp-probe: bus: 1, device: 46 was not an MTP device 2019-11-20T20:28:20.349995+01:00 linux-c219 kdeinit5[17825]: QObject::connect: invalid null parameter 2019-11-20T20:28:27.419944+01:00 linux-c219 kernel: [147332.128754] usb 1-2: USB disconnect, device number 46 2019-11-20T20:28:27.730953+01:00 linux-c219 kernel: [147332.439545] usb 1-2: new full-speed USB device number 47 using xhci_hcd 2019-11-20T20:28:27.878924+01:00 linux-c219 kernel: [147332.590209] usb 1-2: New USB device found, idVendor=2341, idProduct=8036 2019-11-20T20:28:27.878934+01:00 linux-c219 kernel: [147332.590210] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 2019-11-20T20:28:27.878935+01:00 linux-c219 kernel: [147332.590211] usb 1-2: Product: Arduino Leonardo 2019-11-20T20:28:27.878936+01:00 linux-c219 kernel: [147332.590212] usb 1-2: Manufacturer: Arduino LLC 2019-11-20T20:28:27.878937+01:00 linux-c219 kernel: [147332.590658] cdc_acm 1-2:1.0: ttyACM0: USB ACM device 2019-11-20T20:28:27.880757+01:00 linux-c219 mtp-probe: checking bus 1, device 47: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2" 2019-11-20T20:28:27.880962+01:00 linux-c219 mtp-probe: bus: 1, device: 47 was not an MTP device Ich weiß nicht, was dieses "mtp-probe" macht, aber ich sehe keine Fehlermeldungen... Falls noch jemand ne Idee hat, was ich probieren könnte... Schönen Abend, Michael PS: Ja, der Link kommt mir bekannt vor. Ich habe auch diverse Beiträge bei Stackexchange, Stackoverflow und in einigen Blogs gelesen - leider ohne funktionierende Lösung. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Mittwoch, 20. November 2019, 21:09:47 CET schrieb Michael Born:
Hallo Hugo.
Vielleicht verstehe ich ja Deinen Vorschlag nicht... Ich habe in der ersten Email gezeigt, dass mein user in allen relevanten Gruppen ist (dailout) und außerdem sogar der owner von /dev/ttyACM0. Ja. War mir nicht sicher ob Du chmod mit der a Option benutzt hast. Das hatte in dem zitierten Beitrag doch geklappt.
Auch wenn ich allen Lese- und Schreibrechte gebe, bekomme ich die "avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied" Fehlermeldung. Das ist ja das Verrückte, weshalb ich hier mit diesem total offensichtlichen (es fehlen halt die Zugriffsrechte) Problem nerve.
Während der Arduino Leonardo in seinen Programmiermodus geschaltet wird, meldet er sich mit einer anderen idProduct=0036 als /dev/ttyACM0 an. Da verschwinden dann die a+rw Rechte. Du meinst zwischen. 2019-11-20T20:28:19.814937+01:00 linux-c219 kernel: [147324.524995] usb 2019-11-20T20:28:27.878924+01:00 linux-c219 kernel: [147332.590209] usb Sehe ich auch so. Kann man in dieser Zeit (so nach ein paar Sekunden) die Rechte korrigieren? Doch da habe ich was neues (s.u.). Nach 8 Sekunden (in denen beim Leonardo kein Programmierversuch ankam) meldet er sich wieder mit idProduct=8036 als /dev/ttyACM0.
miborn@linux-c219:~> chmod a+rw /dev/ttyACM0 miborn@linux-c219:~> ll /dev/ttyACM0 crw-rw-rw- 1 miborn dialout 166, 0 20. Nov 20:30 /dev/ttyACM0 miborn@linux-c219:~> ll /dev/ttyACM0 crw-rw---- 1 miborn dialout 166, 0 20. Nov 20:50 /dev/ttyACM0 miborn@linux-c219:~> ll /dev/ttyACM0
In /var/log/messages steht für diesen Vorgang: 2019-11-20T20:28:19.318929+01:00 linux-c219 kernel: [147324.028432] usb 1-2: USB disconnect, device number 45 2019-11-20T20:28:19.662963+01:00 linux-c219 kernel: [147324.371529] usb 1-2: new full-speed USB device number 46 using xhci_hcd 2019-11-20T20:28:19.814937+01:00 linux-c219 kernel: [147324.524995] usb 1-2: New USB device found, idVendor=2341, idProduct=0036 2019-11-20T20:28:19.814946+01:00 linux-c219 kernel: [147324.524997] usb 1-2: New USB device strings: Mfr=2, Product=1, SerialNumber=0 2019-11-20T20:28:19.814947+01:00 linux-c219 kernel: [147324.524998] usb 1-2: Product: Arduino Leonardo 2019-11-20T20:28:19.814952+01:00 linux-c219 kernel: [147324.524999] usb 1-2: Manufacturer: Arduino LLC 2019-11-20T20:28:19.814953+01:00 linux-c219 kernel: [147324.525440] cdc_acm 1-2:1.0: ttyACM0: USB ACM device 2019-11-20T20:28:19.815724+01:00 linux-c219 mtp-probe: checking bus 1, device 46: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2" 2019-11-20T20:28:19.815849+01:00 linux-c219 mtp-probe: bus: 1, device: 46 was not an MTP device 2019-11-20T20:28:20.349995+01:00 linux-c219 kdeinit5[17825]: QObject::connect: invalid null parameter 2019-11-20T20:28:27.419944+01:00 linux-c219 kernel: [147332.128754] usb 1-2: USB disconnect, device number 46 2019-11-20T20:28:27.730953+01:00 linux-c219 kernel: [147332.439545] usb 1-2: new full-speed USB device number 47 using xhci_hcd 2019-11-20T20:28:27.878924+01:00 linux-c219 kernel: [147332.590209] usb 1-2: New USB device found, idVendor=2341, idProduct=8036 2019-11-20T20:28:27.878934+01:00 linux-c219 kernel: [147332.590210] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 2019-11-20T20:28:27.878935+01:00 linux-c219 kernel: [147332.590211] usb 1-2: Product: Arduino Leonardo 2019-11-20T20:28:27.878936+01:00 linux-c219 kernel: [147332.590212] usb 1-2: Manufacturer: Arduino LLC 2019-11-20T20:28:27.878937+01:00 linux-c219 kernel: [147332.590658] cdc_acm 1-2:1.0: ttyACM0: USB ACM device 2019-11-20T20:28:27.880757+01:00 linux-c219 mtp-probe: checking bus 1, device 47: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2" 2019-11-20T20:28:27.880962+01:00 linux-c219 mtp-probe: bus: 1, device: 47 was not an MTP device
Ich weiß nicht, was dieses "mtp-probe" macht, aber ich sehe keine Fehlermeldungen...
1.) Habe leider nicht so einen Adapter 2.) Ich nutze journalctl. Da scheint standardmäßig nicht soviel ausgegeben zu werden. Oder hast Du spezielle Optionen genutzt? 3.) Weitere Suche 3a Nach chmod restart 3b Aus 2012, Networkmanager kann stören.(https://forum.arduino.cc/ index.php?topic=130161.0) 3c Aus 2018. sudo udevadm test --action=add /sys/class/tty/ttyUSB0 (https://forum.ubuntuusers.de/topic/ttyusb0-keine-berechtigung/2/) Da sieht man vielleicht wer Rechte ändert. 3d Aus 2000. modemmanager (udev ENV{ID_MM_DEVICE_IGNORE}="1") 4.) Falls Du KDE/GNOME benutzt - teste mim einfachem DM. Viele Grüße und hoffentlich findet sich eine Lösung. Hugo Mahr -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (3)
-
Christian Boltz
-
Hugo
-
Michael Born