ioBroker / ioBroker.rflink

Support of RFLink
MIT License
11 stars 11 forks source link

Set USB port by-ID #9

Open biohazardxxx opened 6 years ago

biohazardxxx commented 6 years ago

Hi,

since with every reboot of Raspberry(belive it is the same with other UNIX systems) the USB port assignments are jepardized if several serial devices are attached. Like /dev/ttyUSB0 can be /dev/ttyUSB1 at next boot. It would be better to have the possilbity to select the device by id path for example: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0

Apollon77 commented 6 years ago

The better way would be that you "pin" the device to a USB device name via linux config ...

like so https://unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name or such ... more generic

biohazardxxx commented 6 years ago

Good idea! Did that and got my /dev/rflink But the adapter doesn show this device in the dropdown. Does it need to start with tty*?

biohazardxxx commented 6 years ago

This is what I have:

pi@rpi:~ $ ls -l /dev/ttyUSB1 crw-rw---- 1 root dialout 188, 1 Feb 6 10:47 /dev/ttyUSB1 pi@rpi:~ $ ls -l /dev/ttyRflink lrwxrwxrwx 1 root root 7 Feb 6 10:44 /dev/ttyRflink -> ttyUSB1

Looks fine or?

Log says:

2018-02-06 10:47:04.905 - info: rflink.0 List of port: [{"comName":"/dev/ttyUSB0","manufacturer":"FTDI","serialNumber":"FTDI_FT232R_USB_UART_AI03VVGR","pnpId":"usb-FTDI_FT232R_USB_UART_AI03VVGR-if00-port0","vendorId":"0x0403","productId":"0x9999"},{"comName":"/dev/ttyUSB1","manufacturer":"1a86","serialNumber":"1a86_USB2.0-Serial","pnpId":"usb-1a86_USB2.0-Serial-if00-port0","vendorId":"0x1a86","productId":"0x9999"}]

Apollon77 commented 6 years ago

Hast du das selbst als Link angelegt? Dann wird es nicht erkannt :-) Nur echte devices.

biohazardxxx commented 6 years ago

Ja ist ein symlink wie in der Anleitung beschrieben die du verlinkt hattest. Das device einen anderen festen namen zugeben ist glaube so nicht möglich.

Apollon77 commented 6 years ago

Naja, ich hatte eher auf das hier refereziert. funktioniert bei mir super:

As suggested, you can add some udev rules. I edited the /etc/udev/rules.d/10-local.rules to contain:

ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="my_uart"

You can check for the variables of your device by running

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)

There is a more in depth guide you can read on http://www.reactivated.net/writing_udev_rules.html

biohazardxxx commented 6 years ago

Genau, das erstellt lediglich ein symlink.

Apollon77 commented 6 years ago

Aajhhh ok. Ich muss mal schauen.

Quick hack schau mal: objekte -> system.adapter.rflink.0 und dort rechts auf den stift. Ggf musst du expertenmodus einschalten. Dann gibt’s dort einen tab mit raw Experten only. Dort steht dir konfig des Adapters als json. Trag da mal den Port manuell ein. Dann speichern und Adapter neu starten. Nimmt er es?

Apollon77 commented 6 years ago

Also das Dropdown wird von Serialport generiert, das ist die Library die verwendet wird. Was die sieht kannst DU checken indem du unter

/opt/iobroker/node_modules/iobroker.rflink/node_modules/serialport/bin

ein list.js

führe das mal aus mit

node list.js

Dann kommt die Liste der Systemdevices ... und die werden gelistet

biohazardxxx commented 6 years ago

Mit dem editieren im RAW expertenmodus hat funktioniert!

  "native": {
    "comName": "/dev/ttyRflink",
    "board": "mega",
    "connTimeout": "600000",
    "baudRate": "57600",
    "inclusionTimeout": "0"
  },

Mit dem list.js klappt's leider nicht:

pi@rpi:/opt/iobroker/node_modules/iobroker.rflink/node_modules/serialport/bin $ node list.js module.js:471 throw err; ^

Error: Cannot find module '/opt/iobroker/node_modules/iobroker.rflink/node_modules/serialport/bin/list.js' .....

Aber serialport-list.js :-)

pi@rpi:/opt/iobroker/node_modules/iobroker.rflink/node_modules/serialport/bin $ node serialport-list.js /dev/ttyUSB0 usb-FTDI_FT232R_USB_UART_AI03VVGR-if01-port0 FTDI /dev/ttyUSB1 usb-1a88_USB2.0-Serial-if00-port0 1a88

Apollon77 commented 6 years ago

Ok, dann hast Du noch ne alte Serialport Version drauf. Aber wie du siehst: daher kommts ... Mal überlegen für die Zukunft

biohazardxxx commented 6 years ago

Leider wird beim neustart der manuell gesetzte port via RAW mode nicht beibehalten 😢 Evtl. wäre es sinnvoll ein request für das seriaport modul zustellen um auch symlinks anzuzeigen.

Apollon77 commented 6 years ago

Adapter-Konfig sollte sich nicht ändern ... komisch. Verstehe ich nicht. Ja kannst das bei Serialport gern auf machen :-)

biohazardxxx commented 6 years ago

Done! #1476

GermanBluefox commented 6 years ago

Das kann nicht sein. Beim Neustart wird definitiv beibehalten.

13 февр. 2018 г. 9:45 пользователь "biohazardxxx" notifications@github.com написал:

Leider wird beim neustart der manuell gesetzte port via RAW mode nicht beibehalten 😢 Evtl. wäre es sinnvoll ein request für das seriaport modul zustellen um auch symlinks anzuzeigen.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/ioBroker/ioBroker.rflink/issues/9#issuecomment-365189684, or mute the thread https://github.com/notifications/unsubscribe-auth/AEXqgBGbyl82BZffgsSt2RAvBGQfP2ntks5tUUudgaJpZM4R6oWg .

Apollon77 commented 6 years ago

Wichtig: Wenn du es einmal manuell geändert hast ruft jeder Aufruf mit Seichern der Admin-Konfig-Oberfläche zu einer Änderung. Hast Du das ggf gemacht?

biohazardxxx commented 6 years ago

Konnte im syslog sehen das alle USB devices reconnecten von Zeit zu Zeit, vermute das ist das Problem.

forelleblau commented 4 years ago

Hallo Die Frage ist zwar schon etwas länger her. Ich habe das oben beschriebene Problem eben damit gelöst, dass ich im RAW den Port mit /dev/serial/by-id/'id des rfling-Anschlusses' eingetragen haben.

Hatte bei anderen Anwendungen auch schon das Problem, dass die ttyUSBx - Zuordnungen nicht stabil waren und konnte das über eine 'by-id' Zuordnung lösen.

Wäre es ev. möglich, dass in der rfling-Config statt der ttyUSBx - Auswahl die Auswahl aus /dev/serial/by-id zur Verfügung steht?

Apollon77 commented 4 years ago

In einem nächsten Serialport soll es möglich sein die IDs mit auszulesen, dann kann man den by-id Pfad nehmen. Und dann muss man halt alles umbauen - backwards kompatibel

Berchemer commented 3 years ago

In einem nächsten Serialport soll es möglich sein die IDs mit auszulesen, dann kann man den by-id Pfad nehmen. Und dann muss man halt alles umbauen - backwards kompatibel

Danke... Hat bei mir unter Proxmox auch die Lösung gebracht 👍 :-)

Die Frage ist zwar schon etwas länger her. Ich habe das oben beschriebene Problem eben damit gelöst, dass ich im RAW den Port mit /dev/serial/by-id/'id des rfling-Anschlusses' eingetragen haben.

Danke... Hat bei mir unter Proxmox auch die Lösung gebracht 👍 :-)

Wäre es ev. möglich, dass in der rfling-Config statt der ttyUSBx - Auswahl die Auswahl aus /dev/serial/by-id zur Verfügung steht?

Würde ich auch befürworten. Oder die Lösung des JeeLink-Adapters, bei dem man in der Config einfach den kompletten Namen z.B. "/dev/JeeLink" oder hier /dev/rfLink" einträgt.