vor 3 Monaten habe ich meinen alten Debian-Server verschrottet und habe seitdem einen neuen am Laufen.
Auf dem alten lief ein selbstgebauter (vanilla) Kernel 2.6.19. Auf den neuen ein recht aktuelles squeeze mit debian eigenen Kernel 2.6.32.
Ich sende Daten an einen Mikrocontroller über ein PL2303 Interface (Handy-Datenkabel). Problem ist, dass das unter den aktuellen Kernel nicht mehr funktionieren will. Vor 3 Monaten lief das Interface noch problemlos auf dem alten Rechner, seitdem habe ich es nicht mehr genutzt.
Das Problem stellt sich folgendermaßen dar: pl2303 wird erkannt und /dev/ttyUSB0 wird erzeugt. Modul pl2303 ist geladen.
Code: Alles auswählen
[5459732.520099] usb 4-1: new full speed USB device using uhci_hcd and address 9
[5459732.670428] usb 4-1: New USB device found, idVendor=067b, idProduct=2303
[5459732.670446] usb 4-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[5459732.670787] usb 4-1: configuration #1 chosen from 1 choice
[5459732.674948] pl2303 4-1:1.0: pl2303 converter detected
[5459732.686862] usb 4-1: pl2303 converter now attached to ttyUSB0
stty 9600 ixon -echo < /dev/ttyUSB0
Es gibt keinerlei Rückmeldung und ich kann nur noch mit Ctrl-C abbrechen. Früher hat er das Kommando IIRC auch ohne Rückmeldung angenommen und ich war sofort auf der Konsole zurück.
Mit "stty -F /dev/ttyUSB0 9600" kann ich die Schnittstelle zwar auf 9600bps stellen, was ich mir auch anzeigen kann:
Code: Alles auswählen
stty -a -F /dev/ttyUSB0
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^A; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt
-echoctl -echoke
Ist es vielleicht nur eine Terminaleinstellung? Wird irgendwas zurück erwartet? Wie kann ich einfach ein rohes Zeichen an /dev/ttyUSB0 senden?
Wenn ich statt "stty 9600 ixon -echo < /dev/ttyUSB0" einfach "stty 9600 ixon -echo -F /dev/ttyUSB0" eingebe, wird das Kommando übrigens akzeptiert. Da muss sich wohl irgendwas verändert haben? Trotzdem kann ich kein Zeichen senden.
TIA,
Kermit
PS: Ich habe nun etliche zusätzliche stty Terminaleinstellungen durch. Zudem habe ich ein nagelneues PL2303 Interface ausgepackt (habe einige auf Vorrat). Selbst wenn an der Ausgangsseite des PL2303 nichts angeschlossen ist, müsste er beim Aussenden doch einfach ein Bitbanging an den Ausgangspins geben und das echo-Kommando beenden (echo Zeichen > ./dev/ttyUSB0). Warum tut er das nicht mehr?