Port busy

Hi,

ich wollte ein kleines Beispielprogramm übernehmen und ausprobieren.

Kopiert in die Ide und übersetzt: geht.
Hochladen auf das Board: geht esrst nach mehreren Versuchen.
Sobald es gelungen ist will ich den seriellen Monitor öffnen und erhalte diese Fehlermeldung:

Fehler beim Öffnen des seriellen Ports "/dev/ttyACM0". (Port busy)

Was kann ich da tun?

Meine Umgebung:
Board: seeeduino LoRaWan
Arduino Ide: 1.8.5
PC: Ubuntu 18.04

Schönen Gruß
AugustQ

PS: das hat auch schon mal geklappt

Irgendwas belegt den Port. Da wir nicht auf Deinen Rechner schauen können, sehen wir nicht was.
Schau doch mal im proc-Filesystem, ob Du was sehen kannst.

oder nutze shell - Linux: Which process is causing "device busy" when doing umount? - Stack Overflow

Gruß Tommy

Hi,

in proc gibt es 418 Einträge. Welche könnten von Interesse sein?

Ich habe mal mit lsof nach dev/tty gesucht. In der Ausgabe finde ich kein /dev/ttyACMx. Auch die Suche nach ACM lieferte mir kein Ergebnis.

Es hat aber schon mal geklappt.

Was mir auffiel: gebe ich im Seriellen Monitor irgendetwas ein und schicke das an das Board, dann leuchtet kurz die LED Rx auf, in rot. Also geht doch irgendwas rüber vom PC an das Board, nur kommt nichts zurück.

Schönen Gruß
AugustQ

Hast Du das so probiert?

lsof | grep tty

Um mal zu sehen, was sich alles im tty-Bereich tummelt.

Gruß Tommy

also, mal in Schritten:

august@August-Ryzen:~$ ls -l /dev/ttyA*
crw-rw---- 1 root dialout 166, 0 Okt 25 14:34 /dev/ttyACM0
august@August-Ryzen:~$

Gerät ist da, dmesg sagt ähnliches. Arduino IDE sagt beim hochladen:

No device found on ttyACM0
Set binary mode
Beim Hochladen des Sketches ist ein Fehler aufgetreten
Send auto-baud
Set binary mode

Gerät ist also nicht da.

lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse.sshfs file system /home/august/RasPi
      Output information may be incomplete.
systemd-l 1069                  root    7r      REG               0,21      4096       9033 /sys/devices/virtual/tty/tty0/active
systemd-l 1069                  root   18u      CHR                4,6       0t0         25 /dev/tty6
systemd-l 1069                  root   22u      CHR                4,1       0t0         20 /dev/tty1
systemd-l 1069                  root   25u      CHR                4,2       0t0         21 /dev/tty2
gdm-wayla 1275                   gdm    0u      CHR                4,1       0t0         20 /dev/tty1
gmain     1275 1276              gdm    0u      CHR                4,1       0t0         20 /dev/tty1
gdbus     1275 1278              gdm    0u      CHR                4,1       0t0         20 /dev/tty1
gdm-x-ses 1718                august    0u      CHR                4,2       0t0         21 /dev/tty2
gmain     1718 1719           august    0u      CHR                4,2       0t0         21 /dev/tty2
gdbus     1718 1735           august    0u      CHR                4,2       0t0         21 /dev/tty2
Xorg      1720                august    0u      CHR                4,2       0t0         21 /dev/tty2
Xorg      1720                august   11u      CHR                4,2       0t0         21 /dev/tty2
amdgpu_cs 1720 1721           august    0u      CHR                4,2       0t0         21 /dev/tty2
amdgpu_cs 1720 1721           august   11u      CHR                4,2       0t0         21 /dev/tty2
disk_cach 1720 1722           august    0u      CHR                4,2       0t0         21 /dev/tty2
disk_cach 1720 1722           august   11u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1723           august    0u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1723           august   11u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1724           august    0u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1724           august   11u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1725           august    0u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1725           august   11u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1726           august    0u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1726           august   11u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1727           august    0u      CHR                4,2       0t0         21 /dev/tty2
si_shader 1720 1727           august   11u      CHR                4,2       0t0         21 /dev/tty2
gallium_d 1720 1728           august    0u      CHR                4,2       0t0         21 /dev/tty2
gallium_d 1720 1728           august   11u      CHR                4,2       0t0         21 /dev/tty2
InputThre 1720 1733           august    0u      CHR                4,2       0t0         21 /dev/tty2
InputThre 1720 1733           august   11u      CHR                4,2       0t0         21 /dev/tty2
august@August-Ryzen:~$

Mache ich das während der Hochladevorgang läuft, dann finde ich u.a.:

java      6745                august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6747           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6748           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6749           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6750           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6751           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6752           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6753           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6754           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6755           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0
java      6745 6756           august  100u      CHR              166,0       0t0        645 /dev/ttyACM0

und das war nur ein kleiner Ausschnitt.

Brauchst Du weitere Informationen?

Sag mal : Gehört dein User der Gruppe "dialout" an ??
Sonst läuft das unter Linux nämlich nicht !

Deshalb bin ich etwas verwirrt das du behauptest das ging schon mal !

Ulli

beeblebrox:
Sag mal : Gehört dein User der Gruppe "dialout" an ??
Sonst läuft das unter Linux nämlich nicht !

Deshalb bin ich etwas verwirrt das du behauptest das ging schon mal !

Ulli

Im Terminal
id
eingeben.
->(20)dialout

MfG

Hi,

ja, ich gehöre zur Gruppe dialout. Und: manchmal funktioniert es auch. Heute zum Beispiel, da konnte ich das Blink-Programm compilieren und hochladen. Danach habe ich eine Zeile eingefügt, die einen Text ausgeben soll. Ergebnis: es ist mir kaum möglich, das Programm hochzuladen. Und wenn es gelingt, dann sehe ich nichts im Monitor.

Mal schrittweise:
dmesg sagt mir:

[ 7693.740790] usb 1-4: new full-speed USB device number 20 using xhci_hcd
[ 7694.056674] usb 1-4: New USB device found, idVendor=2886, idProduct=000c
[ 7694.056678] usb 1-4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 7694.059463] cdc_acm 1-4:1.0: ttyACM0: USB ACM device

das Board ist also da. ls lieferte auch:

august@August-Ryzen:~$ ls -l /dev/ttyA*
crw-rw---- 1 root dialout 166, 0 Okt 26 11:07 /dev/ttyACM0
august@August-Ryzen:~$

und diese Meldung kam:

No device found on ttyACM0
Set binary mode
Send auto-baud
Set binary mode
Beim Hochladen des Sketches ist ein Fehler aufgetreten

Ein kurzer Blick per ls: Board ist da. Und dmesg sagte mir, daß es kein Abmelden/Neuanmelden gab.

Auch hatte ich mehrfach Exceptions/Stacktraces, aber heute noch keine (heute schreibe ich mit....).

Any idea?
AugustQ

mach mal ein 'ps -e |grep avrdude'

Ich hatte das schon mal das avrdude abgestürzt ist und dann die Schnittstelle festgehalten hat.

Ulli

Hi,

jetzt bin ich ja platt.

Also: das Kommando brachte keine Antwort. Also habe ich die IDE gestartet, mein Beispiel Blink geladen, compiliert und versucht, dieses auf das Board zu laden. Das hat geklappt. Das Kommando brachte immer noch keine Ausgabe.

Danach habe ich den Seriellen Monitor gestartet. Ich erhielt folgende Meldung:

CPU reset.
readWord(addr=0)=0x20007ffc
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
writeWord(addr=0xe000ed0c,value=0x5fa0004)
Fehler beim Öffnen des seriellen Ports "/dev/ttyACM0". (Port busy)

Wobei nur die letzte Zeile neu ist. Und natürlich keine Ausgaben. Auch das von Dir angegebene Kommando lieferte keine Zeile.

Irgendwie hatte ich den seriellen Monitor geschlossen. Nur so habe ich den mal erneut gestartet und ich sehe: meine Textzeile, die ich in das Programm eingebaut habe.

Hmmmmm. Jetzt versuche ich mal das nächste Programm.

Schönen Gruß
August

PS: das sind ja alles Pipifax-Programme im Vergleich zu dem, was ich sonst so an Software schreibe.

Hi,

ich habe mal weiter gespielt.

Nach dem Erfolg habe ich mich an das nächste, ebenfalls kleine Programm gewagt. Hochladen brach ab, dmesg lieferte diesen Eintrag:

[ 1383.935961] usb 1-4: USB disconnect, device number 9
[ 1384.708932] usb 1-4: new full-speed USB device number 10 using xhci_hcd
[ 1385.028870] usb 1-4: New USB device found, idVendor=2886, idProduct=000c
[ 1385.028874] usb 1-4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 1385.031634] cdc_acm 1-4:1.0: ttyACM0: USB ACM device
[ 1402.595032] usb 1-4: USB disconnect, device number 10

Nochmal versucht Abbruch. Nochmal versucht, wieder Abbruch, diesmal mit Abmeldung des Boards. Danach ging nichts mehr. Das Board wurde nicht mehr erkannt, neu anstecken brachte auch nichts. Nun gut, ein Reset ist notwendig. Danach wurde das Board wieder erkannt.

Erneut dieses Programm hochgeladen, zumindest versucht. In der IDE stand:

No device found on ttyACM0
Set binary mode
Send auto-baud
Set binary mode
Beim Hochladen des Sketches ist ein Fehler aufgetreten

dmesg lieferte keinen Hinweis, mit ls konnte ich die Existenz von /dev/ttyACM0 überprüfen.

Any ideas?
AugustQ

Hi,

irgendwie komme ich nicht weiter.

Also habe ich mal einen Arduino Uno genommen und ein "hello world"-Programm geschrieben, compiliert und rüberkopiert: geht. Innerhalb von Sekunden ist das Programm hochgeladen, danach den Monitor geöffnet und gewartet und gewartet und ..... und dann erschien mein Text.

Auch im Wiederholungsfall klappte das.

Für den Uno legt Ubuntu ein gerät /dev/ttyUSB0 an, alles ohne Probleme.

Was ist da jetzt mit dem seeeduino?

Schönen Gruß
AugustQ

Hi,

ich bin ein Stück weiter.

$ sudo apt-get --purge remove modemmanager

Das ist der Bösewicht: Modemmanager. Nachdem ich diesen entfernt habe läuft das Hochladen jetzt ohne Probleme.

Ab jetzt kann ich mich um die Probleme mit meinem Code kümmern (hoffe ich).

Schönen Gruß
AugustQ

PS: hier fand ich den Hinweis im Beitrag #14:
https://forum.arduino.cc/index.php?topic=129647.0

Hi

Und wer ist 'remove'?
sudo: superuser do (gib mir Super-Rechte und mache)
apt-get: Die Anwendung, Die sich um die Aplikationen kümmert
--purge: entferne und lösche ALLES, was dazu gehört
remove: als ERSTES angegeben ähnlich wie purge, nur ohne 'lösche Alles' - als weiteres Argument 'E: Paket remove kann nicht gefunden werden.'
modemmanager: Paketmane, Der zum vollständigen Entfernen gesucht wird (--purge)

--remove ist wie --install, nur 'anders herum'.
Bei INSTALL kann man Pakete durch vorgesetztes - (Minus) ebenfalls entfernen, wie man bei REMOVE durch vorgesetztes + (PLUS) ebenfalls installieren kann.

Näheres im Terminal:man apt-get (Manual von apt-get)
MfG

Hi,

im angegebenen Link findet man das Kommando, das ich kopiert habe. Um die Details des Kommandos habe ich mich nicht gekümmert, da es funktioniert.

Nach 3 Wochen experimentieren kann ich mich nun um die Software für das Board kümmern, und das ist mein Schwerpunkt, eigentlich.

Schönen Gruß
AugustQ

Ich sage: Danke für die Mitteilung.

Ein potentieller Verursacher,für solche Probleme, ist identifiziert.

im angegebenen Link findet man das Kommando, das ich kopiert habe. Um die Details des Kommandos habe ich mich nicht gekümmert,

Irgendwelche gefundenen Kommandos ungeprüft per sudo ausführen, kann einen Kopf und Kragen kosten.

Hier ist alles gut gegangen.
(zum Glück)

Hi

Ich muß leider in die gleiche Presche schlagen:
sudo ist sau gefährlich!!
Wenn ich irgendwelche Terminal-Probleme habe, ist meine Anlaufstelle zumeist das Ubuntu-Forum (auch, wenn ich aktuell Mint nutze).
Ebenfalls richtig gefährlich sind Dateirechte 777, damit irgend ein Skript endlich läuft - damit gibst Du auch Gästen (also Benutzern ohne Konto auf diesem Rechner) das Recht, diese Datei zu verändern, auszuführen.

Bei Linux bestimmst Du, was passiert - deshalb kannst Du dort auch die Festplatte komplett löschen, ohne Widerworte!
Ok, wenn der Rechner damit fertig ist, wird's langsam eng, aber die Platte ist dann 'porentief rein' - und Linux Geschichte.
(ok, ein sudo brauchts schon noch - Du musst also auch in der Gruppe (27)sudo sein - sonst dürfte Das ja Jeder)

MfG

Wieso soll sudo saugefährlich sein?
Wen man Weiss, was man tut, ist es ein Instrument. Sonst ist jedes Kommando gefährlich.

Z. B. Format c: /y unter Win/DOS

Gruß Tommy

Hi

Lässt sich Windows mittlerweile formatieren? (gleich Mal eine VM installieren gg)
Das Problem bei sudo ist, daß man dem aufgerufenem Befehl alle Macht gibt, Die man selber haben kann - als User 1000 ist Das so ziemlich godlike.
Klar muß man bei jedem Befehl aufpassen, was man treibt - das Home-Verzeichnis darf ich auch ohne sudo löschen und würde ähnlich fatal enden, wie rm -rf (Nein Kinder, NICHT eingeben, besonders nicht mit sudo).

Eigentlich ist Es zu Win kein großer Unterschied: Unter Win sollte man keine fremden EXE-Files starten (macht man immer, spätestens, wenn man einen Treiber braucht) - außerdem hat wohl die Rechte-Verwaltung die letzten Versionen stark zugelegt..
Unter Linux soll man keinen Script per sudo ausführen, wenn man nicht genau weiß, was Der treibt - macht man, gerade bei Installationen aber auch (wobei ich schon laaange Nichts mehr im Terminal getrieben hätte).
Bei meinen 'Normal-Problemen' komme ich aber mit ein/zwei Terminal-Aufrufen hin und dazu kann man sich zuvor einlesen, sogar auf Deutsch.

MfG