2012-11-19 10 views
7

Ich habe gerade von Ubuntu 10.04 auf ein Projekt aktualisiert, das ein Embedded-Gerät über eine USB serielle Schnittstelle mit 115.200 Baud verbindet. Nach der Aktualisierung funktionierte es nicht, aber ich startete neu und konnte eine Verbindung herstellen. Seit dem Herunterfahren und Neustarten meines Systems konnte ich keine Verbindung herstellen. Die serielle Schnittstelle sieht aus wie es an der falschen Baudrate (schnelle Folge von Zeichen wie die aussehen wie verbunden ist.Baudrate für USB Ubuntu 12.04 kann nicht eingestellt werden

"'''''''''''''''''ppppp'''''''''''''''pppppp'''''''''''"... 

Das USB-Gerät als /dev/ttyUSB0 wird erkannt und eingerichtet Wenn ich versuche, die Baudrate mit stty Einstellung ich bekomme:

$ sudo stty -F /dev/ttyUSB0 115200 
stty: /dev/ttyUSB0: unable to perform all requested operations 

Wenn ich 9600 versuchen sie, scheint es zu funktionieren:

$ sudo stty -F /dev/ttyUSB0 9600 

Aber irgendetwas anderes fa ils:

$ sudo stty -F /dev/ttyUSB0 4800 
stty: /dev/ttyUSB0: unable to perform all requested operations 

Hier ist, was stty sieht:

$ stty -F /dev/ttyUSB0 
speed 9600 baud; line = 0; 
min = 1; time = 0; 
-brkint -icrnl -imaxbel 
-opost -onlcr 
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke 

ich andere Werte stty verwenden ändern kann (Echo, echoe, etc.), nicht aber die Baudrate.

Ich sah einen Kommentar online, dass jemand Baud mit Minicom einstellen konnte, aber nicht von der Befehlszeile, so habe ich Minicom und versuchte es, aber ich bekomme das gleiche Ergebnis (was scheint die falsche Baudrate zu sein).

Ich habe auch versucht setserial, aber das lehnt auch die /dev/ttyUSB Geräte zu akzeptieren:

$ sudo setserial /dev/ttyUSB0 -a 
Cannot get serial info: Invalid argument 
$ sudo setserial /dev/ttyS0 -a 
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4 
    Baud_base: 115200, close_delay: 50, divisor: 0 
    closing_wait: 3000 
    Flags: spd_normal skip_test 

Schließlich sind von dmesg die Geräte und ihre Einrichtung, hier:

$ ls -l /dev/ttyUSB* 
crw-rw-rw- 1 root dialout 188, 0 Nov 19 15:53 /dev/ttyUSB0 
crw-rw-rw- 1 root dialout 188, 1 Nov 19 16:00 /dev/ttyUSB1 
$ dmesg | grep ttyUSB 
[ 32.444445] usb 4-1: generic converter now attached to ttyUSB0 
[ 32.444549] usb 8-2: generic converter now attached to ttyUSB1 

ich gearbeitet hatte mit diesem Gerät unter Ubuntu 10.04 für ein paar Monate und konnte sie letzte Woche verwenden, aber seit dem Herunterfahren und Neustarten konnte ich nicht. Ich habe online gesucht und ein paar Leute mit einem ähnlichen Problem gefunden, aber keine mit Lösungen. Wie kann ich dieses Problem beheben?

+0

Haben Sie versucht, setserial zu verwenden? – exussum

+0

ja, setserial Aufrufe/dev/ttyUSB0 ein "ungültiges Argument" (siehe Ende der Frage) – user1835090

Antwort

3

Ich weiß immer noch nicht, was passiert ist, aber es funktioniert jetzt. Für jeden, der auf das gleiche Problem stößt, habe ich "modprobe -r usbserial" versucht (ich dachte mir, ob der alte Treiber mit modprobe -f geladen werden konnte, konnte es nicht) und lud dann das Modul "modprobe usbserial" neu. . Diesmal funktionierte die Serie richtig - ich weiß nicht warum.

Nun, wenn ich es tun Stty berichtet:

~$ stty -F /dev/ttyUSB0 
speed 115200 baud; line = 0; 
min = 1; time = 0; 
-brkint -icrnl -imaxbel 
-opost 
-isig -icanon -iexten -echo 

und ich kann die Baudrate ändern (Habe ich es bis 9600 und dann wieder auf 115.200).

So gibt es keine befriedigende Antwort, aber scheinbar damit spielen kann es funktionieren - so wie es nach dem Neustart das erste Mal funktioniert.

+0

Alter Thread, aber wenn Sie nur den Befehl wiederholen ('stty -F/dev/ttyUSB0'), wird es funktionieren. Ich weiß nicht, warum es zwei Versuche benötigt, aber das sollte funktionieren. – corpico

0

Zum Ändern der Einstellungen ist eine Schreibberechtigung für die Gerätedatei erforderlich. Sie können es mit einfacher Auflistung steuern. Z.B.

$ ls -l 
crw-rw-r-T 1 root dialout 188, 0 jan 9 16:16 /dev/ttyUSB0 

Im Fall über alle haben die Erlaubnis gelesen (r), um den Super-User root und die dialout Gruppe auch Schreibrechte haben (rw).

Wenn Sie Mitglied der dialout Gruppe sind, können Sie die Geschwindigkeit durch die oben erwähnte stty -F /dev/ttyUSB0 115200 Befehl ohne zusätzliche nichts ändern sonst müssen Sie sudo verwenden.

Sie können Ihren Mitgliedsstatus mit dem Befehl id steuern.

Verwandte Themen