RS232-USB-Adapter an Fritzbox

WolliK

Neuer User
Mitglied seit
7 Sep 2006
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
Hallo RalfFriedl,
SORRY Alles zurück, in meiner Struktur tauchen nun die ttyUSB.. auf. Ich hatte nochmal mir dmesg nachgeschaut und die USB Wandler waren disconnect, vermutlich nach dem Reconnect oder was auch immer.

Hier nun meine Struktur:

# find /sys -print | grep USB
/sys/class/tty/ttyUSB1
/sys/class/tty/ttyUSB1/device
/sys/class/tty/ttyUSB1/dev
/sys/class/tty/ttyUSB0
/sys/class/tty/ttyUSB0/device
/sys/class/tty/ttyUSB0/dev
/sys/bus/usb-serial/drivers/PL-2303/ttyUSB1
/sys/bus/usb-serial/drivers/PL-2303/ttyUSB0
/sys/bus/usb-serial/devices/ttyUSB1
/sys/bus/usb-serial/devices/ttyUSB0
/sys/devices/ahci-hcd/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4:1.0/ttyUSB1
/sys/devices/ahci-hcd/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4:1.0/ttyUSB1/bus
/sys/devices/ahci-hcd/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4:1.0/ttyUSB1/driver
/sys/devices/ahci-hcd/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/ttyUSB0
/sys/devices/ahci-hcd/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/ttyUSB0/bus
/sys/devices/ahci-hcd/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/ttyUSB0/driver
# pwd
/sys/class/tty
# cat ttyUSB0/dev
188:0
#


Ich kann nun auch die Speed setzen, und diese überprüfen.

#
# stty -F /var/ttyUSB0 9600
# stty -F /var/ttyUSB0
speed 9600 baud;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-brkint -imaxbel
# stty -F /var/ttyUSB0 19200
# stty -F /var/ttyUSB0
speed 19200 baud;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-brkint -imaxbel
# stty -F /var/ttyUSB0
#


Mein nächstes Problem ist die etwas ungewöhnliche Speed von 3200 Baud, die stty nicht kennt, dazu müßte das stty um diesen Speedeintrag für 3200 erweiter werden, ich habe aber keine Toolchain.

# stty -F /var/ttyUSB0 3200
stty: invalid argument '3200'
#


Bitte gibt es evtl. schon ein erweitertes stty das auch diese 'krumme' Speed von 3200 kennt oder kommt die Fehlermeldung vom PL-2303 Driver, der diese Speed nicht versteht ?

Viele Grüße
WolliK
 
Zuletzt bearbeitet:

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
0
Ob /sys oder /var/sysfs ist nicht weiter wichtig, solange überhaupt etwas erscheint. Das Verzeichnis /sys ist Standard, /var/sysfs hat AVM in früheren Versionen der Firmware verwendet. Wenn sie inzwischen auch /sys verwenden, dann umso besser.

Das Verzeichnis /sys/class/tty/ttyUSB0 muss von selbst erscheinen, wenn das Gerät angesteckt ist und nie notwendigen Module geladen sind. Ich sehe gerade, dass das inzwischen funktioniert. Die Datei /sys/class/tty/ttyUSB0/dev gibt die Nummern für mknod an, diese passen.

Die Baudrate 3200 ist allerdings sehr ungewöhnlich. Bist Du sicher, dass die richtig ist?
Jedenfalls, wenn die vom Treiber oder von der Hardware nicht unterstützt wird, dann ist es schlecht. Wenn es am Treiber liegt, kannst Du versuchen, das zu ändern, wobei dazu wohl genaue Kenntnisse über den Treiber und den Chip notwendig wären.
 

WolliK

Neuer User
Mitglied seit
7 Sep 2006
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
Hallo RalfFriedel,
JA die Speed von 3200 ist nötig um den Datenlogger für meinen Fronius Sunrise MAXI Wechselrichter auszulesen. Der USB nach RS232 Wandler kann das unter Windows was ich schon seit langem benutze und dazu natürlich auch die Windows COMx Schnittstelle auf diesen krummen Wert von 3200 Baud umgestellt habe.

Nun will ich mir den Stromverbrauch meines Windows Thin Clients schenken und das direkt mit der 7170 machen. Mein Plan ist das mit der onboard 3,3V Schnittstelle zu machen, aber bevor ich ans Löten gehe, wollte ich das erst mit meinem USB-Wandler versuchen und bin nun Dank Deiner Hilfe schon so weit gekommen, das ich die Schnittstelle mit stty und Standard Speeds bedienen kann.

Wie kompliziert meinst Du ist das, das stty Programm um diesen Eintrag zu erweitern ?
Der Driver sollte eigentlich nur ein neues Teilerverhältniß für den UART einstellen müssen oder wie siehst Du das?


Viele Grüße
WolliK
 
Zuletzt bearbeitet:

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
0
Es sieht aus, als gäbe es da gleich zwei Probleme. Der Treiber unterstützt 3200 nicht, und stty auch nicht.

Der Treiber ist in /source/kernel/ref-ohio-8mb-04.87/linux/drivers/usb/serial/pl2303.c, das Setzen der Baudrate ab Zeile 427. So wie es aussieht, sollte es möglich sein, eine der Standard-Baudraten so anzupassen, dass 3200 verwendet wird.

Die elegantere Lösung wäre, stty und den Treiber so anzupassen, dass beliebige Werte unterstützt werden.
 

WolliK

Neuer User
Mitglied seit
7 Sep 2006
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
Hallo RalfFriedl,
das klingt erst einmal nicht seht optimistisch das so hinzubiegen. Als Erstes brauchen wir einmal die verwendeten Chip und die damit verbundene Baud_base Rate, wozu man/fran das setserial aus einer neuern Busybox heranziehen kann.

Bei meiner Fritzbox sieht das wie folgt aus:

# ./busybox-mipsel setserial -gav /dev/ttyS0
/dev/ttyS0, Line 0, UART: RM9000, Port: 0x0000, IRQ: 15
Baud_base: 3906250, close_delay: 50, divisor: 0
closing_wait: 3000
Flags: spd_normal
#


Für meine /dev/ttyS0 würden die Divisor Einstellungen also so aussehen:

Speed:
2400: 3906250/2400= 1628
3200: 3906250/3200= 1221
4800: 3906250/4800= 814

Um nun den Chip und die Baud_base auszulesen, versuchte ich das nun mit meinem USB to Serial Wandler, den ich mir per mknode auf /var/ttyUSB0 angelegt habe aber bekomme folgenden Fehler:

# ./busybox-mipsel setserial -gav /var/ttyUSB0
setserial: can't get serial info: Invalid argument


Ich komme hier nicht sehr weit evtl. kann ich über Windows diese Parameter auslesen. Ich melde mich, wenn ich dazu etwas mehr heraus bekomme. Oder hat hier noch jemand eine Idee ?

Viele Grüße
WolliK
 
Zuletzt bearbeitet:

WolliK

Neuer User
Mitglied seit
7 Sep 2006
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
Hallo ins Forum,
das setserial scheint nicht zu funktionieren, da es vermutlich auf den HW Chip (UART) geht um dessen Parameter auszulesen. Der USB Wandler hat zwar auch einen UART, wird aber anscheinend vom PL2303 Driver gekapselt.

Auch diese beinen Antworten meines 7170 bringen mich auf diese Annahme:

# ls /proc/tty/driver/*serial*
/proc/tty/driver/serial /proc/tty/driver/usbserial

# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:OHIO_UART port:00000000 irq:15 tx:8585 rx:0 RTS|DTR

# cat /proc/tty/driver/usbserial
usbserinfo:1.0 driver:v2.0
0: module:pl2303 name:"PL-2303" vendor:067b product:2303 num_ports:1 port:1
path:usb-ahci_hcd-1.2.1
1: module:pl2303 name:"PL-2303" vendor:067b product:2303 num_ports:1 port:1
path:usb-ahci_hcd-1.2.4
#


Damit hänge ich nun wieder im "LIMBO" fest und hoffe jemand kann mir helfen meinen USB-Adapter mit dem PL2303 Driver auf eine Baud von 3200 einzustellen.


Viele Grüße
WolliK
 
Zuletzt bearbeitet:

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
0
Warum willst Du unbedingt den eingebauten Port nutzen? Beim Start der Box kommen dort etliche Meldungen, die man nicht ganz verhindern kann, und mit einer original Firmware erst recht nicht.

Nimm einfach den USB Adapter, ändere im Treiber bei einer der Einstellungen die Geschwindigkeit auf 3200 ab und es sollte funktionieren.
 

WolliK

Neuer User
Mitglied seit
7 Sep 2006
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
Hallo RalfFriedl,
den eingebauten Port will ich evtl. erst später nutzen, jetzt kämpfe ich mit dem USB zu RS232 Adapter!

Dem Treiber sollte es eigentlich egal sein welchen Teiler er zum Einstellen der Speed bekommt. Ich bräuchte ein geändertes stty Programm, das den Teiler für diese krumme Speed einstellt. Wenn ich den Teilerwert für eine Standart Speed z.B. 4800 Baud hätte könnte ich den neuen Teiler für meine 3200 Baud über den Baud_Base Wert errechnen mit:

(Baud_base = Teiler * Speed)

also:

Teiler(Divisor von bekannter Baudrate) * bekannte Baudrate (4800) / neue Baudrate (3200) = neuer Teiler

Hier am Beispiel für die Speed von 4800 Baud:

UART RM9600 (Divisor = 814 für 4800 Baud)
4800 * 814 / 3200 = 1221

Bei einem UART 16550 A (Divisor = 24 für 4800 Baud)
4800 * 24 / 3200 = 36

Dann wäre einfach ein weiterer Wert für die Speed 3200 Baud und den errechneten Teiler eintragen, leider habe ich weder den Source noch eine Toolchain um das selbst zu machen. Aber ich hoffe es gibt hier jemanden im Forum der das für mich machen könnte.

Viele Grüße
WolliK
 
Zuletzt bearbeitet:

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
0
Ist das jetzt ein Test auf Farbblindheit kombiniert mit Nachhilfe im Dreisatz?

Source und Toolchain könntest Du herunter laden, wenn Du es wolltest.

Der Treiber bekommt keinen Teiler, und stty sendet keinen. Es gibt eine Liste mit vordefinierten Werten, und stty setzt einen davon. Der Treiber reagiert auf die Werte in dieser Liste. 3200 ist nicht auf dieser Liste.
 

WolliK

Neuer User
Mitglied seit
7 Sep 2006
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
Hallo RalfFriedel,
SORRY mit den Farben, ich wollte dieses Teilerverhalten einfach nur verständlich darstellen, denn es gibt evtl. auch Forumsmitglieder, die dann unseren Thread evtl. besser verstehen.

Warum ich immer so auf diesem Teiler rumreite ist die Möglichkeit mittels Setzen des ASYNC_SPD_CUST Flags den Treiber für NonStandard Speed vorzubereiten und dann mit dem neuen Divisor auch für diese neue Speed einzustellen.

Ich wollte eingentlich den Weg über ioctl gehen um dieses für meine benötigte Speed zu setzten, was der kleinere Aufwand wäre, bevor ich mir eine Toolchain für eine USB Treiberumgebung baue.

Weiter hatte ich gehofft, dass hier jemand im Forum so eine Toolchain Umgebung mit den Sourcen für PL2303.c, stty.c und all den benötigten Headerfiles in der Schublade hat, schon eimal ein Programm geändert und auf der Fritzbox zum laufen gebracht hat und die oben beschriebene Ergänzungen evtl. für mich machen würde.


Viele Grüße
WolliK
 
Zuletzt bearbeitet:

RalfFriedl

IPPF-Urgestein
Mitglied seit
22 Apr 2007
Beiträge
12,343
Punkte für Reaktionen
1
Punkte
0
ASYNC_SPD_CUST ist eine unschöne Lösung, um auf einem Standard COM Port eine abweichende Baudrate einzustellen. Der eingebaute serielle Baustein der Box unterstützt diese anscheinend nicht, und der PL2303 unterstützt diese ganz sicher nicht. Der PL2303 kennt überhaupt nicht so etwas wie eine Teiler, den man setzt.
 

reel

Neuer User
Mitglied seit
6 Dez 2012
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
hallo forum! hab grade mal versucht mich in das thema einzulesen... aber puhh ich glaube da fehlen mir die grundlagen an allen ecken und enden. egal! kurze frage: ich wuerde gerne die fritzbox (7390)an eine stiebel eltron waermepumpe schliessen (datenlogging). ich hab nich so ganz verstanden ob das jetzt schon jemand hinbekommen hat oder es nur theoretisch moeglich ist. vielen dank schon mal reel
 

molfi

Neuer User
Mitglied seit
17 Okt 2006
Beiträge
141
Punkte für Reaktionen
0
Punkte
16

reel

Neuer User
Mitglied seit
6 Dez 2012
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
danke fuer die schnelle antwort! jetzt hab ich noch zwei fragen. ich kann da keine software fuer die fritzbox finden... und leider habe ich eine "wpl" keine "lwz"... gibts da auch was fuer bzw. kann man das sogar nehmen?

edit: was ich leider auch nicht finden kann ist wie jetzt genau die verbindung realisiert wird. kann aber auch sein, dass ich das alles nicht finde weil ich im krankenhaus bin und uebers iphone surfen muss (die page wird nicht richtig dargestellt glaub ich)
 
Zuletzt bearbeitet:

molfi

Neuer User
Mitglied seit
17 Okt 2006
Beiträge
141
Punkte für Reaktionen
0
Punkte
16
heatpumpmonitor ist eine Software auf Pythonbasis; also kein binary wie Du evtl angenommen hast. Heatpumpmonitor funktioniert nur mit LWZ oder Bauglichen, nicht mit WPL soweit ich weiß.

Welche Schnittstelle(n) hat denn die WPL?
 

reel

Neuer User
Mitglied seit
6 Dez 2012
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
also an dem waermepumpen-manager ist ein optischer anschluss (mit "pc" gekennzeichnet). ich glaube wenn dann muesste ich damit arbeiten! der ist nur ganz winzig und unscheinbar
 

WolliK

Neuer User
Mitglied seit
7 Sep 2006
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
Hallo reel,
ich hatte vor meiner jetzigen WP auch eine Stiebel Eltron mit einem WPMW (Best-Nr. 073806). Dieser hat wie Du beschrieben hast diesen optischen PC Anschluss. Als ich vor einigen Jahren einmal von Stiebel Eltron das Interface kaufen wollte, verlangten diese noch über € 140, was mir zu teuer war nur um zu Spielen.
Es gab auch keine Informationen zu der Beschaltung um mir so etwas selbst zu bauen. Leider waren auch keine Protokoll Informationen zu bekommen, und nur für Händler gab es die SW zur erstmaligen Inbetriebnahme. Für Privatanwender gab es damals keinen Preis, aber der dürfte vermutlich auch nicht für mich als Hobbylogger erschwinglich gewesen sein.
Bitte versuche Dein Glück doch heute noch einmal bei Stiebel Eltron evtl. gibt es nun erschwingliche Interfaces und Protokollinformationen oder sogar SW.
Die SW wird es vermutlich nur für Windows geben, also nicht für den Einsatz auf einer Fritzbox weshalb wir eigentlich eher die Protokoll- und Interface Details bräuchten.
Meinen MPWM habe ich noch und kann die auch für Dich an der 7170 testen, sobald wir die Interface Daten und das verwendete Protokoll herausbekommen haben.

Viele Grüße
WolliK
 

WolliK

Neuer User
Mitglied seit
7 Sep 2006
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
Hallo reel,
ich bin einmal auf die Suche gegangen und es sieht so aus als ob die ein optisches RS232 Interface mit CAN Protokoll verwenden, nun stellt sich die Frage ob wir ein CAN oder ein RS232 Interface and die FB kopplen müssen, was natürlich wieder eine Kostenfrage ist. Ich google noch ein wenig.

Viele Grüße
WolliK
 

reel

Neuer User
Mitglied seit
6 Dez 2012
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
hallo und danke für die antworten! ja von stiebel gibt es ein sogenanntes ISG (Internet Service Gateway) das wird, so wie ich das verstanden habe, an den wärmepumpenmanager geschlossen und man kann dann sogar aus dem internet drauf zugreifen und die WP schalten. das ding kostet meinen recherchen nach allerdings um die 360 euro und... das ist es mir einfach nicht wert. man kan dann von stiebel auch noch so sachen dazubuchen von wegen service und parameteroptimierung... naja ich will eigentlich nur ein paar kurven sehen. wie oft die pumpe anspringt usw.
 
3CX

Neueste Beiträge

Statistik des Forums

Themen
234,972
Beiträge
2,053,999
Mitglieder
355,348
Neuestes Mitglied
Totti82