26

Odp: przypisanie na stałe urządzeń ttyUSB

Powstawiaj sobie logger co którąś linię i zobacz co właściwe idzie w zmiennych.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

27

Odp: przypisanie na stałe urządzeń ttyUSB

Wstawiłem logger tam gdzie skanuje serial number tutaj:

#!/bin/sh

if [ "$DEVTYPE" = "usb_interface" ] && [ "$ACTION" = "add" ]; then
    for tty in /sys/$DEVPATH/ttyUSB*; do
        [ -d "$tty" ] || continue
        if [ "$PRODUCT" = "403/6001/600" ]; then
           # to jest mój konwerter
           echo "tty: $tty" >> /tmp/log.txt
           OLDD=${tty##*/}
           echo "$OLDD" >> /tmp/log.txt
           echo "serial: "$(cat /sys/$DEVPATH/../serial) >> /tmp/log.txt

           # Szukanie po serial number
# Do RS232

SERIALNUMEBR=$(cat /sys/$DEVPATH/../serial)
logger $(cat /sys/$DEVPATH/../serial)
if [ "$SERIALNUMBER" = "AR0JV9NL" ]; then
  rm /dev/RS232
  ln -s /dev/$OLDD /dev/RS232
fi
   
# Do RS485

if [ "$SERIALNUMBER" = "AL00Q3MN" ]; then
  rm /dev/RS485
  ln -s /dev/$OLDD /dev/RS485
fi

       fi
    done
fi

No i w logach przy wyjęciu i włozeniu poszczególnych konwerterów mam:

Mon Jun 26 08:28:26 2023 kern.info kernel: [234969.528287] usb 3-1.2: USB disconnect, device number 12
Mon Jun 26 08:28:26 2023 kern.info kernel: [234969.534925] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
Mon Jun 26 08:28:26 2023 kern.info kernel: [234969.537968] ftdi_sio 3-1.2:1.0: device disconnected
Mon Jun 26 08:28:27 2023 kern.info kernel: [234970.602990] usb 3-1.2: new full-speed USB device number 14 using xhci-hcd
Mon Jun 26 08:28:27 2023 kern.info kernel: [234970.752020] ftdi_sio 3-1.2:1.0: FTDI USB Serial Device converter detected
Mon Jun 26 08:28:27 2023 kern.info kernel: [234970.752347] usb 3-1.2: Detected FT232RL
Mon Jun 26 08:28:27 2023 kern.info kernel: [234970.759549] usb 3-1.2: FTDI USB Serial Device converter now attached to ttyUSB1
Mon Jun 26 08:28:27 2023 user.notice root: AL00Q3MN
Mon Jun 26 08:28:34 2023 kern.info kernel: [234977.976610] usb 3-1.4: USB disconnect, device number 13
Mon Jun 26 08:28:34 2023 kern.info kernel: [234977.984293] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
Mon Jun 26 08:28:34 2023 kern.info kernel: [234977.987405] ftdi_sio 3-1.4:1.0: device disconnected
Mon Jun 26 08:28:36 2023 kern.info kernel: [234979.572248] usb 3-1.4: new full-speed USB device number 15 using xhci-hcd
Mon Jun 26 08:28:36 2023 kern.info kernel: [234979.728715] ftdi_sio 3-1.4:1.0: FTDI USB Serial Device converter detected
Mon Jun 26 08:28:36 2023 kern.info kernel: [234979.729288] usb 3-1.4: Detected FT232RL
Mon Jun 26 08:28:36 2023 kern.info kernel: [234979.738289] usb 3-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
Mon Jun 26 08:28:36 2023 user.notice root: AR0JV9NL


Czyli wyczaja te seriale tak?

28

Odp: przypisanie na stałe urządzeń ttyUSB

Dodaj jeszcze logger $OLDD żeby zobaczyć czy interfejs znalazło. Jeżeli to to nie ma powodu żeby się nie robiło, Możesz do if'a dodać

if [ "$SERIALNUMBER" = "AL00Q3MN" ]; then
  logger "Znalazłem RS485"
  rm /dev/RS485
  ln -s /dev/$OLDD /dev/RS485
fi

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

29 (edytowany przez smereka 2023-06-26 07:50:17)

Odp: przypisanie na stałe urządzeń ttyUSB

Dodałem i faktycznie po wyjęciu i włożeniu nie ma tego wpisu "Znalazłem RS485"

Może coś po minąłem zabrało jakiegoś znaku żeby to wyczajał?

30

Odp: przypisanie na stałe urządzeń ttyUSB

Ehh, masz złe nazwy zmiennych

SERIALNUMEBR <>  SERIALNUMBER

Czeski błąd, popraw literówkę.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

31 (edytowany przez smereka 2023-06-26 07:56:32)

Odp: przypisanie na stałe urządzeń ttyUSB

Hurra teraz jest wpis smile Sprawdzę mbusd czy zatrybi...

Tak czy siak ślepota ze mnie


Dziękuję Cezary

32 (edytowany przez smereka 2023-06-26 08:05:44)

Odp: przypisanie na stałe urządzeń ttyUSB

Cezary a jest sposób na to, żeby po ponownym włączeniu to działało bo teraz widzę, że te konwertery startują dość szybko po ponownym odpaleniu routera i przypuszczam, że hotplog wykonuje się prawie na końcu przez co mbusd komunikuje brak RS232 co jest w gruncie rzeczy zasadne. Można to jakoś obejść?

33

Odp: przypisanie na stałe urządzeń ttyUSB

Wyłącz sobie mbusd z autostartu i uruchamiaj go w hotplugu jak pojawi się interfejs po zrobieniu linka do niego.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

34 (edytowany przez smereka 2023-06-26 08:10:10)

Odp: przypisanie na stałe urządzeń ttyUSB

No tak ale tu chodzi o to, że te linki nie tworzą się po starcie routera. Dopiero jak on się uruchomi i ja wyjmę i włożę fizycznie konwertery do huba to się pojawiają. Bez wyjęcia są po prostu /dev/ttyUSB0 i /dev/ttyUSB1

35

Odp: przypisanie na stałe urządzeń ttyUSB

Ok, chodzi o to że interfejsy tworzą się przez uruchomieniem hotpluga. To trzaśnij sobie podobny kod w /etc/rc.local który to zrobi poszukiwanie ttyUSB0 i ttyUSB1 w /sys, znajdziesz sobie jego serial i na jego podstawie zrobisz linka i odpalisz  mbusd

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

36

Odp: przypisanie na stałe urządzeń ttyUSB

Dobrze rozumiem, że wystarczy wywalić pierwszą linijke i fi na końcu czyli?

#!/bin/sh

    for tty in /sys/$DEVPATH/ttyUSB*; do
        [ -d "$tty" ] || continue
        if [ "$PRODUCT" = "403/6001/600" ]; then
           # to jest mój konwerter
           echo "tty: $tty" >> /tmp/log.txt
           OLDD=${tty##*/}
           echo "$OLDD" >> /tmp/log.txt
           echo "serial: "$(cat /sys/$DEVPATH/../serial) >> /tmp/log.txt

           # Szukanie po serial number
# Do RS232

SERIALNUMBER=$(cat /sys/$DEVPATH/../serial)
logger $(cat /sys/$DEVPATH/../serial)
if [ "$SERIALNUMBER" = "AL00Q3MN" ]; then
logger "Znalazlem RS232"
  rm /dev/RS232
  ln -s /dev/$OLDD /dev/RS232
fi
   
# Do RS485

if [ "$SERIALNUMBER" = "AR0JV9NL" ]; then
logger "Znalazlem RS485"
  rm /dev/RS485
  ln -s /dev/$OLDD /dev/RS485
fi

       fi
    done

37

Odp: przypisanie na stałe urządzeń ttyUSB

Nie, w /etc/rc.local nie będziesz miał zmiennych $DEVPATH, ACTION i tyle. Zakładasz że /dev/ttyUSB0 i /dev/ttyUSB1 już istnieją i resztę masz sobie sam poszukać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

38

Odp: przypisanie na stałe urządzeń ttyUSB

Shameless plug:

https://gist.github.com/Leo-PL/b5ee737e … c182707c8e

Popełniłem coś co daje podobne linki jak te generowane przez udev - na razie samo nie generuje eventów które mogłyby być konsumowane np przez netifd do sterowania interfejsami, ale zapewne można to dodać.

39

Odp: przypisanie na stałe urządzeń ttyUSB

Przydałoby się wspomnieć, że skrypt zaprezentowany przez Leo-PL należy umieścić w katalogu /etc/hotplug.d/tty a nie w /etc/hotplug.d/usb. Skrypty w podkatalogu tty są wykonywane również w trybie coldplug czyli przy starcie systemu. Dodatkowo zamiast zmiennej DEVNAME jest zmienna DEVICENAME. Przynajmniej w wersji 22.05. Możliwe, że we wcześniejszych wersjach było inaczej.

W oparciu o ten skrypt stworzyłem własny który działa w wersji 22.05. Dodatkowo jest on konfigurowalny przez uci. Paczkę można pobrać i zainstalować ręcznie z GitHuba. Plik konfiguracyjny to /etc/config/persistent-tty. Po zainstalowaniu domyślnie skrypt nie jest aktywny. Trzeba go uaktywnić poleceniem:

uci set persistent-tty.general.enabled=yes
uci commit

Następnie podpinamy nasze urządzenie do USB i w logu powinny pojawić się odpowiednie wpisy:

Wed Jul 12 09:18:40 2023 user.notice tty: [DRY RUN] ttyUSB3 ===> serial/by-path/platform_soc_1c14000.usb_usb1_1-1_1-1.2_1-1.2:1.0
Wed Jul 12 09:18:40 2023 user.notice tty: [DRY RUN] ttyUSB3 ===> serial/by-id/usb-FTDI:FT232R_USB_UART-if00-port0
Wed Jul 12 09:18:40 2023 user.notice tty: [DRY RUN] ttyUSB3 ===> serial/by-id/usb-0403:6001-if00-port0
Wed Jul 12 09:18:40 2023 user.notice tty: [DRY RUN] ttyUSB3 ===> serial/by-id/usb-AH05WPW6-if00-port0

Jak widać linki wciąż nie są tworzone bo skrypt działa w trybie dry run czyli tylko pokazuje co zrobi. Tryb dry run wyłączamy poleceniem

uci set persistent-tty.general.dry_run=off
uci commit

Teraz po wyjęciu i ponownym wpięciu urządzenia powinny utworzyć się odpowiednie linki:

Wed Jul 12 09:36:39 2023 user.notice tty: ttyUSB3 ===> serial/by-path/platform_soc_1c14000.usb_usb1_1-1_1-1.2_1-1.2:1.0
Wed Jul 12 09:36:39 2023 user.notice tty: ttyUSB3 ===> serial/by-id/usb-FTDI:FT232R_USB_UART-if00-port0
Wed Jul 12 09:36:39 2023 user.notice tty: ttyUSB3 ===> serial/by-id/usb-0403:6001-if00-port0
Wed Jul 12 09:36:39 2023 user.notice tty: ttyUSB3 ===> serial/by-id/usb-AH05WPW6-if00-port0

Możemy też dodać własne linki:

uci set persistent-tty.ftdi=by_id
uci set persistent-tty.ftdi.manufacturer='FTDI'
uci set persistent-tty.ftdi.product='FT232R USB UART'
uci set persistent-tty.ftdi.link='ftdi-${serial}'
uci commit

albo po ID:

uci set persistent-tty.ftdi=by_id
uci set persistent-tty.ftdi.manufacturerId='0403'
uci set persistent-tty.ftdi.productId='6001'
uci set persistent-tty.ftdi.link='ftdi-${serial}'
uci commit

W każdej sekcji można też niezależnie ustawić opcje enabled oraz dry_run:

uci set persistent-tty.ftdi.dry_run=1
uci commit

40 (edytowany przez Leo-PL 2023-07-12 17:07:11)

Odp: przypisanie na stałe urządzeń ttyUSB

Faktycznie to było /etc/hotplug.d/tty. Ale nigdzie też nie napisałem, że trzeba wrzucić to do /etc/hotplug.d/usb. Nawet mam sprawdzenie na subsystem "tty" na początku skryptu.

Z tego co pamiętam, DEVNAME było mi łatwiej przerobić na ścieżkę, stąd taka a nie inna decyzja. Ideałem dla mnie byłyby linki tożsame z tymi generowanymi przez udev, nie tylko zbliżone, ale nie mam specjalnie czasu rozgrzebywać tego na nowo.

41

Odp: przypisanie na stałe urządzeń ttyUSB

Cezary przypomnisz polecenie do konsoli wyświetlający wszystkie dostępne /dev/tyUSB?

42

Odp: przypisanie na stałe urządzeń ttyUSB

ls -al /dev/ttyUSB*

?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.