CUL via ser2net und OpenWRT (>18.06.2)

Begonnen von yersinia, 04 Juli 2019, 20:54:30

Vorheriges Thema - Nächstes Thema

yersinia

Hallo Foren-Gemeinde.

Ich bin gerade auf einem meiner Router von OpenWRT 18.06.2 auf 18.06.4 umgestiegen und habe feststellen müssen, dass ser2net nicht mehr wie gewohnt funktioniert. Ich konnte es lösen und möchte hier meine Erfahrungen teilen - hoffentlich kann es jmd. gebrauchen.

Nachdem man die Firmware von OpenWRT aktualisiert hat, muss man ser2net nachinstallieren.
Hinweis: solange man nicht selbst baut, müssen die Schritte nach jedem sysupgrade wiederholt werden.
Für meinen nanoCUL ist das auf der Console (via ssh):
opkg update
opkg install ser2net kmod-usb2 kmod-usb-serial kmod-usb-serial-ftdi

Hierbei kann es Warnungen geben, dass /etc/ser2net.conf vom Packet abweicht und daher die Packet-Version nach /etc/ser2net.conf-opkg kopiert worden ist.

Nach der Installation sollte man zunächst kontrollieren, dass der CUL einem Device zugewiesen ist. Ich tat dies via
dmesg | grep usb
und erhalte eine Ausgabe wie:
usb 1-1: Detected FT232RL
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0

Der CUL ist via /dev/ttyUSB0 erreichbar.

Mit der nun ausgelieferten ser2net Version (mWn 3.5) wird ser2net auch über UCI konfiguriert (siehe auch source). Dies bedeutet, dass man die Port-Konfiguration entweder im config file (/etc/ser2net.conf) oder über die UCI Datei ausprägen kann (/etc/config/ser2net). Das deutlich komplexere Startup-Script (etc/initd/ser2net) parst dabei beide Dateien und kopiert diese zu einer neuen config datei unter tmp (/tmp/ser2net.conf) zusammen. Dies heisst, ohne Zutun startet ser2net nicht sauber und FHEM hat keine Verbindung zum CUL. Zum Bearbeiten der Dateien nutze ich den mitgeliefertn vi auf der Console via SSH.

Zunächst stoppe ich den Service
/etc/init.d/ser2net stop

Die config datei /etc/ser2net.conf habe ich angepasst in dem ich die relevante Zeile einfach auskommentiert habe - folgenden Inhalt hat diese Datei (ich nutze den Port 28682):
#28682:raw:0:/dev/ttyUSB0:38400 8DATABITS NONE 1STOPBIT HANGUP_WHEN_DONE
(Die Datei /etc/ser2net.conf-opkg habe ich mittels rm /etc/ser2net.conf-opkg gelöscht)

Die UCI-Datei /etc/config/ser2net habe ich wie folgt angepasst:

  • Auskommentieren der config default Sektion
  • config controlport enabled bleibt 0 (deaktiviert)
  • ein config proxy wird aktiviert (enabled 1 und die Daten aus dem ser2net.conf werden kopiert - siehe Eintrag unter # nanoCUL)
  • alle anderen config proxy bleiben auf enabled 0
config controlport   
        option enabled 0
        option host localhost
        option port 2000
                       
#config default             
#       option speed 115200
#       option databits 8
#       option parity 'none'
#       option stopbits 1 
#       option rtscts false
#       option local false 
#       option remctl true
                           
#config led rx           
#       option driver sysfs
#       option device 'duckbill:green:rs485'
#       option duration 20
#       option state 1     
                                           
#config led tx           
#       option driver sysfs
#       option device 'duckbill:red:rs485'
#       option duration 20
#       option state 1     
                                         
config proxy             
        option enabled 0
        option port 5000
        option protocol telnet
        option timeout 0
        option device '/dev/ttyAPP0'
        option baudrate 115200
        option databits 8
        option parity 'none'       
        option stopbits 1     
#       option led_tx 'tx'
#       option led_rx 'rx' 
        option rtscts false
        option local false
        option xonxoff false
        list options ''   
                         
# nanoCUL                   
config proxy           
        option enabled 1
        option port 28682
        option protocol raw
        option timeout 0
        option device '/dev/ttyUSB0'
        option baudrate 38400
        option databits 8
        option parity 'none'       
        option stopbits 1   
                         
config proxy               
        option enabled 0
        option port 5002
        option protocol raw
        option timeout 0
        option device '/dev/ttyUSB1'
        option baudrate 9600
        option databits 8
        option parity 'none'       
#       option stopbits 1

Achtung: die /etc/config/ser2net überlebt kein sysupgrade und muss vorher gesichert werden (sollte im Backup drin sein, überprüfen).

Mittels
/etc/init.d/ser2net enable
/etc/init.d/ser2net start

starte ich den service ser2net neu, dann sieht man den Prozess mittels ps:
3114 root       992 S    /usr/sbin/ser2net -n -c /tmp/ser2net.conf

Die generierte config Datei /tmp/ser2net.conf hat dann folgenden Inhalt (die erste Zeile ist aus der /etc/ser2net.conf:
#28682:raw:0:/dev/ttyUSB0:38400 8DATABITS NONE 1STOPBIT HANGUP_WHEN_DONE

#
# Following part is auto-generated from UCI settings in /etc/config/ser2net
#
28682:raw:0:/dev/ttyUSB0:38400 8DATABITS NONE 1STOPBIT


Hinweis: der Port auf dem Router muss noch in der Firewall geöffnet werden, sonst wird der Zugriff geblockt. Beispielhafter Auszug aus der /etc/config/firewall (kann aber auch über LUCI gepflegt werden; dest ip ist die IP des Routers):
config rule                                     
        option target 'ACCEPT'                 
        option proto 'tcp udp'                 
        option name 'ser2net_nanoCUL'
        option family 'ipv4'               
        option src 'lan'                   
        option dest_ip '192.168.10.1'       
        option dest_port '28682'


FHEM kann dann direkt auf den CUL Zugreifen, Definition via
define ser2netCUL CUL 192.168.10.1:28682 0000

Hilfreiche FHEM-Wiki-Einträge:
https://wiki.fhem.de/wiki/OpenWRT#CUL
https://wiki.fhem.de/wiki/CUL_ueber_Netz#ser2net

Ich hoffe, es hilft dem ein oder anderen. :)
Ich weiss gar nicht genau ob das eher ein CUL, Netzwerk oder Linux Thema ist - deswegen stelle ich das Thema erstmal hier ein.  ::)
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

eehmke

Hallo,
ich bin dieser Anleitung gefolgt und war nur teilweise erfolgreich. Ich habe ein GL-AR150 mit OpenWrt 19.07.4. Ich kann das Device /dev/ttyUSB0 erzeugen, jedoch wird es nicht mit der richtigen Baudrate eingerichtet. Ich kann das Gerät ansprechen, am USB-Port steckt ein PL2303 Kabel. Das Kabel steckt an meinem PC auf /dev/ttyS0. Auf dem Port läuft ein Minicom. Auf dem ser2net Port ist en Telnet geöffnet. Es werde Daten übertragen, jedoch egal welche Baudrate ich in Minicom einstelle, sind es unlesbare Zeichen. Das Kommando stty -F /dev/ttyUSB0 zeigt 9600 baud, obwohl ich 19200 eingerichtet habe. Der Versuch, die speed mit stty zu ändern, führt zu dieser Fehlermeldung:
stty: /dev/ttyUSB0: unable to perform all requested operations
Irgendwelche Ideen?

yersinia

Zitat von: eehmke am 05 Oktober 2020, 17:42:01ich bin dieser Anleitung gefolgt und war nur teilweise erfolgreich. [...] am USB-Port steckt ein PL2303 Kabel. Das Kabel steckt an meinem PC auf /dev/ttyS0. Auf dem Port läuft ein Minicom. Auf dem ser2net Port ist en Telnet geöffnet. Es werde Daten übertragen, jedoch egal welche Baudrate ich in Minicom einstelle, sind es unlesbare Zeichen.
Irgendwelche Ideen?
Wenn ich in einer Suchmaschine nach OpenWRT PL2303 suche, finde ich kmod-usb-serial-pl2303 sowie USB serial adapter PL2303.
Hast du den richtigen Treiber kmod-usb-serial-pl2303 installiert? Wenn du dieser Anleitung gefolgt bist, hast du auch einen ftdi Treiber installiert welchen du wahrscheinlich gar nicht benötigst.
opkg update
opkg remove kmod-usb-serial-ftdi
opkg install ser2net kmod-usb2 kmod-usb-serial kmod-usb-serial-pl2303
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

eehmke

Danke für die Antwort.

Ich habe
opkg remove kmod-usb-serial-ftdi
ausgeführt.

opkg install ser2net kmod-usb2 kmod-usb-serial kmod-usb-serial-pl2303
hat nur bestätigt, dass diese Pakete bereits in der aktuellen Version installiert sind. Am Verhalten hat sich nichts verändert.

Das Kommando stty zeigt immer die Speed von /dev/ttyUSB0 als 9600 baud, unabhängig von der Einstellung in ser2net. Auch wenn ich Minicom auf diese Baudrate einstelle, werden nur unlesbare Zeichen übertragen.

yersinia

#4
Hast du dich mal hier->USB serial adapter PL2303 langgehangelt?
Den Adapter abstecken, den ganzen driss deinstallieren, neu anfangen:
Zitat von: ibuyopenwrtopkg update
opkg remove kmod-usb-serial-ftdi
opkg remove kmod-usb-serial-pl2303
opkg install kmod-usb-serial-pl2303

lsmod
pl2303                  6688  0
usbserial              17633  1 pl2303
Zwischendurch mal den Router(?) neustarten könnte helfen, bezgl ser2net hilft auch mal den Service bzw das Netzwerk-Interface neuzustarten.
Und dann muss erst der pl2303 richtig laufen bevor ser2net konfiguriert wird.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

eehmke

Es läuft! Mein Fehler war, anzunehmen dass die USB-Seriel Adapter alle PL2303 kompatibel wären. Mein Adapter brauchte aber den kmod-usb-serial-ch341 Treiber. Kaum macht man es richtig...  Danke, deine Hinweise waren hilfreich, den Fehler zu finden.