(gelöst) kUbuntu 10.10 Probleme mit seriellen Port
(gelöst) kUbuntu 10.10 Probleme mit seriellen Port
Hallo Zusammen,
hat Erfahrungen damit gemacht, das sich offensichtlich etwas in der Ansteuerung der seriellen Schnittstetelle geändert hat.
Wenn ja, gibt es irgendwo ein Log, wo man nachlesen kann, was sich geändert hat.
Mein Binary Übertragung arbeiten nicht mehr, seit dem ich auf kUbuntu 10.10 mein System geupdated habe.
Gruss R.
Edit:
Störende Pakete sind 'brltty' oder 'brtty' und 'modem-manager'.
hat Erfahrungen damit gemacht, das sich offensichtlich etwas in der Ansteuerung der seriellen Schnittstetelle geändert hat.
Wenn ja, gibt es irgendwo ein Log, wo man nachlesen kann, was sich geändert hat.
Mein Binary Übertragung arbeiten nicht mehr, seit dem ich auf kUbuntu 10.10 mein System geupdated habe.
Gruss R.
Edit:
Störende Pakete sind 'brltty' oder 'brtty' und 'modem-manager'.
Zuletzt geändert von Ritchie am 10. Dezember 2010 16:11, insgesamt 3-mal geändert.
Ich hab kein Ubuntu, und auch keine Serielle Schnittstelle. Google hat nach ein wenig Quängeln aber das ausgespuckt:
http://www.linux.org/docs/ldp/howto/Ser ... TO-11.html
Bringt dich das weiter?
http://www.linux.org/docs/ldp/howto/Ser ... TO-11.html
Bringt dich das weiter?
Hallo,
nun ja, hinter dem Link ist eine Beschreibung, wie man die Software erstellen soll, wenn man eine serielle Schnittstelle abfragen will.
Mein Routine hat eigentlich unter kUbuntu 9.4 / 10.4 korrekt gearbeitet. Ich konnte zwischen diesen beiden Rechner eine Binäre-Datenübertragung ohne Probleme fahren.
(Habe ein Simulationsprogramm für das Protokoll 3964 von Siemens geschrieben und am laufen.
Bei der Erstellung hatte ich damals schon Probleme, alleine in Sachen Doku., konnte diese aber alle lösen.
Nach dem Update auf 10.10 habe ich jetzt keine stabile Verbindung mehr und teilweise lässt sich der Port ttyS0 nicht mehr öffnen. Hier kommt die Fehlermeldung dev nicht vorhanden,
jedoch ist die Datei /dev/ttyS0 vorhanden.
Ich suche eigentlich nur die Stelle(n), wo beschrieben ist, was die Entwickler in diesem Teilbereich geändert haben, damit ich mein Programm anpassen kann.
Edit1:
Scheint ein Sicherheitproblem zu sein:
http://www.ubuntu-forum.de/artikel/5158 ... enied.html
Jedoch sind meine Benutzer bereits Mitglied in "dialout".
Das Programm bleibt in diesem Aufruf hängen ??
Gruss R.
nun ja, hinter dem Link ist eine Beschreibung, wie man die Software erstellen soll, wenn man eine serielle Schnittstelle abfragen will.
Mein Routine hat eigentlich unter kUbuntu 9.4 / 10.4 korrekt gearbeitet. Ich konnte zwischen diesen beiden Rechner eine Binäre-Datenübertragung ohne Probleme fahren.
(Habe ein Simulationsprogramm für das Protokoll 3964 von Siemens geschrieben und am laufen.
Bei der Erstellung hatte ich damals schon Probleme, alleine in Sachen Doku., konnte diese aber alle lösen.
Nach dem Update auf 10.10 habe ich jetzt keine stabile Verbindung mehr und teilweise lässt sich der Port ttyS0 nicht mehr öffnen. Hier kommt die Fehlermeldung dev nicht vorhanden,
jedoch ist die Datei /dev/ttyS0 vorhanden.
Ich suche eigentlich nur die Stelle(n), wo beschrieben ist, was die Entwickler in diesem Teilbereich geändert haben, damit ich mein Programm anpassen kann.
Edit1:
Scheint ein Sicherheitproblem zu sein:
http://www.ubuntu-forum.de/artikel/5158 ... enied.html
Jedoch sind meine Benutzer bereits Mitglied in "dialout".
Code: Alles auswählen
if ((fd = open("/dev/ttyUSB0", (O_RDWR | O_NOCTTY | O_SYNC))) == -1)
{
Gruss R.
Ach wie war das... buntu installiert irgendein Programm welches die erste serielle Schnittstelle belegt. berilie berlly beryl ich komm nicht drauf. Irgendwas mit Blindenschrift, Eingabehilfe für Behinderte, oder sowas.
Wenn man danach sucht steht als erstes immer, man solle es deinstallieren ^^ Mir fällt dummerweise grad nicht ein wie es heisst und auf die schnelle auch nicht bei google gefunden. Aber vllt. hast du mehr Glück
Wenn man danach sucht steht als erstes immer, man solle es deinstallieren ^^ Mir fällt dummerweise grad nicht ein wie es heisst und auf die schnelle auch nicht bei google gefunden. Aber vllt. hast du mehr Glück
brltty heisst es
http://www.ladyada.net/learn/arduino/lesson0-lin.html
http://www.ladyada.net/learn/arduino/lesson0-lin.html
http://wiki.laptop.org/go/Serial_adapte ... 9_softwareIf you see something like this
[ 1900.712000] ftdi_sio 2-10:1.0: FTDI USB Serial Device converter detected
[ 1900.712000] drivers/usb/serial/ftdi_sio.c: Detected FT232BM
[ 1900.712000] usb 2-10: FTDI USB Serial Device converter now attached to ttyUSB0
[ 1901.868000] usb 2-10: usbfs: interface 0 claimed by ftdi_sio while 'brltty' sets config #1
[ 1901.872000] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[ 1901.872000] ftdi_sio 2-10:1.0: device disconnected
That means you have not uninstalled brltty and you should try again.
Debian (and derivative) distros come with the brltty package installed. This package conflicts with using the device as a plain serial port. Upon insertion the brltty driver takes over the device and disconnects the /dev/ttyUSBn device. The solution to this is to remove or disable the brltty package. On Debian (and derivatives) you can do this with
sudo apt-get remove brltty
Hallo "kater",
werde das heute abend sofort prüfen. Hat mich eine Menge Nerven gekostet, da ich mir das nicht erklären konnte.
Danach sollte ich wohl, wenn es das ist, eine Funktion einbauen, welche prüft, ob die serielle Schnittstelle von jemand anderem verwendet wird.
Hätte ich eigentlich von dem Aufruf erwartet, das er mit Fehlermeldung beendet wird und nicht einfach "stirbt".
Gruss R.
werde das heute abend sofort prüfen. Hat mich eine Menge Nerven gekostet, da ich mir das nicht erklären konnte.
Danach sollte ich wohl, wenn es das ist, eine Funktion einbauen, welche prüft, ob die serielle Schnittstelle von jemand anderem verwendet wird.
Hätte ich eigentlich von dem Aufruf erwartet, das er mit Fehlermeldung beendet wird und nicht einfach "stirbt".
Gruss R.
Weil ich eine Binäre Datenübertragung fahre und nicht haben will,
das Steuerzeichen interpretiert werden.
Die Software hat ja bereits ein Jahr lang so korrekt gearbeitet.
Edit1:
Joo, habe den Text "britty" erst gelesen und danach gesucht. Es ist aber BRTTY nur klein geschrieben. Das war noch auf einer Installation zu finden.
Ich habe jetzt gtkTerm auf beiden Rechner installiert und ich kann via Terminal in beiden Richtungen Daten übertragen. Die Schnittstellen sind also verfügbar. (jedenfalls für gtkTerm)
Jetzt habe ich auch den "ttyUSB0 Treiber gegen eine ttyS0 Schnittstelle an dem zweiten Rechner ersetzt. Läuft immer noch nicht
Edit 2:
So, ein Testprogramm von Rechner 1 zu 2 arbeitet auch korrekt.
Wird der Port vom Hauptprogramm einmal korrekt geöffnet, arbeitet die Übertragung korrekt.
Das ganze läuft in einem Thread im Hintergrund (SysTray), wurde evtl. der Stackbereich verkleinert ? Ich sehe immer in eine Stringumwandlung nach den Aufruf "Schmutzzeichen" ...
Edit 3:
Ach ja,
Gruss R.
das Steuerzeichen interpretiert werden.
Die Software hat ja bereits ein Jahr lang so korrekt gearbeitet.
Edit1:
Joo, habe den Text "britty" erst gelesen und danach gesucht. Es ist aber BRTTY nur klein geschrieben. Das war noch auf einer Installation zu finden.
Ich habe jetzt gtkTerm auf beiden Rechner installiert und ich kann via Terminal in beiden Richtungen Daten übertragen. Die Schnittstellen sind also verfügbar. (jedenfalls für gtkTerm)
Jetzt habe ich auch den "ttyUSB0 Treiber gegen eine ttyS0 Schnittstelle an dem zweiten Rechner ersetzt. Läuft immer noch nicht
Edit 2:
So, ein Testprogramm von Rechner 1 zu 2 arbeitet auch korrekt.
Wird der Port vom Hauptprogramm einmal korrekt geöffnet, arbeitet die Übertragung korrekt.
Das ganze läuft in einem Thread im Hintergrund (SysTray), wurde evtl. der Stackbereich verkleinert ? Ich sehe immer in eine Stringumwandlung nach den Aufruf "Schmutzzeichen" ...
Edit 3:
Ach ja,
Zeige keine offenen Dateien, es ist also kein anderer beteiligt, obwohl die Fehlermeldung aussagt. "Device nicht vorhanden"lsof /dev/tty*
Gruss R.
Zuletzt geändert von Ritchie am 8. Dezember 2010 20:56, insgesamt 2-mal geändert.
Hi,
habe es auch mal weg genommen. Keinen Einfluss. Es klappt ja auch mal, aber eben nicht stabil.
Wenn ich auf den ttyUSB0 Port schalte, arbeitet das Programm auf dem einen Rechner nicht mehr. Es bleibt im Aufruf stehen.
Hier habe ich jetzt eine echt serielle Schnittstelle, bis das Problem gelöst ist. (hoffe auf Treiberfehler)
Auf dem anderen Rechner scheint die Wandlung von QString nach ASC nicht immer korrekt zu arbeiten, daher wurde der Port nicht korrekt geöffnet (hier ist es bereits ttyS0).
Wo ist der Fehler ?
wahrscheinlich deshalb! Ein geändertes timing im OS könnte den Fehler hervorgerufen haben, der schon immer im Programm vorhanden ist/war.
Gruss R.
habe es auch mal weg genommen. Keinen Einfluss. Es klappt ja auch mal, aber eben nicht stabil.
Code: Alles auswählen
// p=comPortString.toLocal8Bit(); // Convert QT -> char
if ((fd = open("/dev/ttyS0", (O_RDWR | O_NOCTTY | O_SYNC ))) == -1)
{
error=errno;
ErrorText=tr("initPort: Can't open device %1 because of %2").arg(comPortString).arg(strerror(error));
qDebug() << ErrorText;
ErrorStatus=true;
return;
}
Hier habe ich jetzt eine echt serielle Schnittstelle, bis das Problem gelöst ist. (hoffe auf Treiberfehler)
Auf dem anderen Rechner scheint die Wandlung von QString nach ASC nicht immer korrekt zu arbeiten, daher wurde der Port nicht korrekt geöffnet (hier ist es bereits ttyS0).
Code: Alles auswählen
const char *p;
p=comPortString.toLocal8Bit(); // Convert QT -> char
wahrscheinlich deshalb! Ein geändertes timing im OS könnte den Fehler hervorgerufen haben, der schon immer im Programm vorhanden ist/war.
http://doc.trolltech.com/4.7/qstring.html
Note: All functions in this class are reentrant, except for ascii(), latin1(), utf8(), and local8Bit(), which are nonreentrant.
Gruss R.