51

Odp: Tworzenie aliasów dla portów szeregowych

root@OpenWrt:~# cat /sys/Kernel/debug/USB/devices
cat: can't open '/sys/Kernel/debug/USB/devices': No such file or directory
root@OpenWrt:~#

52

Odp: Tworzenie aliasów dla portów szeregowych

Małe k. Autokorekta robi swoje.

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

53 (edytowany przez smereka 2025-01-21 14:57:38)

Odp: Tworzenie aliasów dla portów szeregowych

próbowałem dymyśliłem się wink ale coś marudzi

root@OpenWrt:~# cat /sys/kernel/debug/USB/devices
cat: can't open '/sys/kernel/debug/USB/devices': No such file or directory
root@OpenWrt:~#


małe usb ok big_smile poszłoooo

54

Odp: Tworzenie aliasów dla portów szeregowych

Co tu może być źle?

# Description: Action executed on boot (bind) and with the system on the fly
if [ "${ACTION}" = "bind" ]; then
  case "${PRODUCT}" in
    6001*) # Telit HE910 3g modules product id prefix
      DEVICE_NAME="$(ls /sys/${DEVPATH} | grep tty)"
      DEVICE_TTY="$(ls /sys/${DEVPATH}/tty/)"
      # Module Telit HE910-* connected to minipciexpress slot MAIN
      if [ "${DEVICENAME}" = "3-1.5:1.0" ]; then
        ln -s /dev/${DEVICE_TTY} /dev/RS485
        logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyMODULO1_DIAL created"
      elif [ "${DEVICENAME}" = "1-1.3:1.6" ]; then
        ln -s /dev/${DEVICE_TTY} /dev/ttyMODULO1_DATA
        logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyMODULO1_DATA created"
      # Module Telit HE910-* connected to minipciexpress slot SECONDARY
      elif [ "${DEVICENAME}" = "1-1.2:1.0" ]; then
        ln -s /dev/${DEVICE_TTY} /dev/ttyMODULO2_DIAL
        logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyMODULO2_DIAL created"
      elif [ "${DEVICENAME}" = "1-1.2:1.6" ]; then
        ln -s /dev/${DEVICE_TTY} /dev/ttyMODULO2_DATA
        logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyMODULO2_DATA created"
      fi
    ;;
  esac
fi
# Action to remove the symlinks
if [ "${ACTION}" = "remove" ]; then
  case "${PRODUCT}" in
    6001*)  # Telit HE910 3g modules product id prefix
     # Module Telit HE910-* connected to minipciexpress slot MAIN
      if [ "${DEVICENAME}" = "3-1.5:1.0" ]; then
        rm /dev/RS485
        logger -t hotplug "Symlink /dev/ttyMODULO1_DIAL removed"
      elif [ "${DEVICENAME}" = "1-1.3:1.6" ]; then
        rm /dev/ttyMODULO1_DATA
        logger -t hotplug "Symlink /dev/ttyMODULO1_DATA removed"
      # Module Telit HE910-* connected to minipciexpress slot SECONDARY
      elif [ "${DEVICENAME}" = "1-1.2:1.0" ]; then
        rm /dev/ttyMODULO2_DIAL
        logger -t hotplug "Symlink /dev/ttyMODULO2_DIAL removed"
      elif [ "${DEVICENAME}" = "1-1.2:1.6" ]; then
        rm /dev/ttyMODULO2_DATA
        logger -t hotplug "Symlink /dev/ttyMODULO2_DATA removed"
      fi
    ;;
  esac
fi

55 (edytowany przez smereka 2025-01-24 12:16:02)

Odp: Tworzenie aliasów dla portów szeregowych

Zmieniłem tak:

T:  Bus=03 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#=  4 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0403 ProdID=6001 Rev= 6.00
S:  Manufacturer=FTDI
S:  Product=FT232R USB UART
S:  SerialNumber=A50285BI
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 90mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms


# Description: Action executed on boot (bind) and with the system on the fly
if [ "${ACTION}" = "bind" ]; then
  case "${PRODUCT}" in
    6001*) # Telit HE910 3g modules product id prefix
      DEVICE_NAME="$(ls /sys/${DEVPATH} | grep tty)"
      DEVICE_TTY="$(ls /sys/${DEVPATH}/tty/)"
      # Module Telit HE910-* connected to minipciexpress slot MAIN
      if [ "${DEVICENAME}" = "3-1.5:1.0" ]; then
        ln -s /dev/${DEVICE_TTY} /dev/ttyRS485
        logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyRS485 created"
      fi
    ;;
  esac
fi
# Action to remove the symlinks
if [ "${ACTION}" = "remove" ]; then
  case "${PRODUCT}" in
    6001*)  # Telit HE910 3g modules product id prefix
     # Module Telit HE910-* connected to minipciexpress slot MAIN
      if [ "${DEVICENAME}" = "3-1.5:1.0" ]; then
        rm /dev/ttyRS485
        logger -t hotplug "Symlink /dev/ttyRS485 removed"
      fi
    ;;
  esac
fi

Wyjęcie i włożenie konwertera do portu USB objawia się tak:

Fri Jan 24 12:15:14 2025 kern.info kernel: [  627.209060] usb 3-1.5: USB disconnect, device number 4
Fri Jan 24 12:15:14 2025 kern.info kernel: [  627.209671] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
Fri Jan 24 12:15:14 2025 kern.info kernel: [  627.213288] ftdi_sio 3-1.5:1.0: device disconnected
Fri Jan 24 12:15:15 2025 kern.info kernel: [  628.526824] usb 3-1.5: new full-speed USB device number 5 using xhci-hcd
Fri Jan 24 12:15:15 2025 kern.info kernel: [  628.666212] ftdi_sio 3-1.5:1.0: FTDI USB Serial Device converter detected
Fri Jan 24 12:15:15 2025 kern.info kernel: [  628.666504] usb 3-1.5: Detected FT232RL
Fri Jan 24 12:15:15 2025 kern.info kernel: [  628.673170] usb 3-1.5: FTDI USB Serial Device converter now attached to ttyUSB0
Fri Jan 24 12:15:15 2025 user.notice root: A50285BI




I nie działa mi na /dev/ttyRS485   Co robię Cezary nie tak?

56

Odp: Tworzenie aliasów dla portów szeregowych

Zrob sobie mały debug przez logger "$coś tam" co drugą linię i zobacz jakie zmienne przychodzą i co on widzi.

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

57 (edytowany przez smereka 2025-01-24 14:01:58)

Odp: Tworzenie aliasów dla portów szeregowych

Dla potomnych działa ten oto skrypcik znaleziony na openwrt.org:

cat << "EOF" > /etc/hotplug.d/usb/20-cp210x
CP210_PRODID='10c4/ea60/100'
SYMLINK="my_link"

set -eu

if [ "${DEVTYPE:-}" = 'usb_interface' ] && \
   [ "${PRODUCT:-}" = "${CP210_PRODID}" ]; then
    if [ "${ACTION:-}" = 'bind' ]; then
        if [ -L "/dev/${SYMLINK}" ]; then
            logger -t hotplug "Symlink '/dev/${SYMLINK}' already exists"
            exit 0
        fi

        DEVICE_NAME="$(find /sys${DEVPATH:-} -maxdepth 1 -type d -iname 'ttyUSB*' -exec basename {} \;)"
        if [ -z "${DEVICE_NAME}" ]; then
            logger -t hotplug 'Warning: DEVICE_NAME is empty'
            exit 0
        fi

        logger -t hotplug "Device name of cp210 is '${DEVICE_NAME}'"
        ln -s "/dev/${DEVICE_NAME}" "/dev/${SYMLINK}"
        logger -t hotplug "Symlink from '/dev/${DEVICE_NAME}' to '/dev/${SYMLINK}' created"
    fi


    if [ "${ACTION:-}" = 'unbind' ]; then
        rm "/dev/${SYMLINK}"
        logger -t hotplug "Symlink '/dev/${SYMLINK}' removed"
    fi
fi
EOF

W przypadku mojego konwertera PRODID='403/6001/600'

Działa zarówno podczas startu systemu jak i po załadowaniu. Można wsadzać i wyjmować ile się chce razy a i tak kojarzy link tak jak trzeba

58 (edytowany przez smereka 2025-05-21 10:42:19)

Odp: Tworzenie aliasów dla portów szeregowych

Próbuje zrobić aliasy do modemu EC200 w sensie, że ponazywać sobie /dev/ttyUSB1 np jako "odczyt3ginfo" , /dev/ttyUSB2 np. jako "data" itp. Na openwrt przedstawia się on tak:

T:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#=  6 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=2c7c ProdID=0901 Rev= 3.18
S:  Manufacturer=Android
S:  Product=Android
C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=400mA
A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS= 512 Ivl=4096ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 7 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=8a(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=89(I) Atr=03(Int.) MxPS= 512 Ivl=4096ms
I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms


Chce wykorzytać skrypt znaleziony na openwrt org:

if [ "${ACTION}" = "bind" ]; then
  case "${PRODUCT}" in
    1bc7*) # Telit HE910 3g modules product id prefix
      DEVICE_NAME="$(ls /sys/${DEVPATH} | grep tty)"
      DEVICE_TTY="$(ls /sys/${DEVPATH}/tty/)"
      # Module Telit HE910-* connected to minipciexpress slot MAIN
      if [ "${DEVICENAME}" = "1-1.3:1.0" ]; then
        ln -s /dev/${DEVICE_TTY} /dev/ttyMODULO1_DIAL
        logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyMODULO1_DIAL created"
      elif [ "${DEVICENAME}" = "1-1.3:1.6" ]; then
        ln -s /dev/${DEVICE_TTY} /dev/ttyMODULO1_DATA
        logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyMODULO1_DATA created"
      # Module Telit HE910-* connected to minipciexpress slot SECONDARY
      elif [ "${DEVICENAME}" = "1-1.2:1.0" ]; then
        ln -s /dev/${DEVICE_TTY} /dev/ttyMODULO2_DIAL
        logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyMODULO2_DIAL created"
      elif [ "${DEVICENAME}" = "1-1.2:1.6" ]; then
        ln -s /dev/${DEVICE_TTY} /dev/ttyMODULO2_DATA
        logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyMODULO2_DATA created"
      fi
    ;;
  esac
fi
# Action to remove the symlinks
if [ "${ACTION}" = "remove" ]; then
  case "${PRODUCT}" in
    1bc7*)  # Telit HE910 3g modules product id prefix
     # Module Telit HE910-* connected to minipciexpress slot MAIN
      if [ "${DEVICENAME}" = "1-1.3:1.0" ]; then
        rm /dev/ttyMODULO1_DIAL
        logger -t hotplug "Symlink /dev/ttyMODULO1_DIAL removed"
      elif [ "${DEVICENAME}" = "1-1.3:1.6" ]; then
        rm /dev/ttyMODULO1_DATA
        logger -t hotplug "Symlink /dev/ttyMODULO1_DATA removed"
      # Module Telit HE910-* connected to minipciexpress slot SECONDARY
      elif [ "${DEVICENAME}" = "1-1.2:1.0" ]; then
        rm /dev/ttyMODULO2_DIAL
        logger -t hotplug "Symlink /dev/ttyMODULO2_DIAL removed"
      elif [ "${DEVICENAME}" = "1-1.2:1.6" ]; then
        rm /dev/ttyMODULO2_DATA
        logger -t hotplug "Symlink /dev/ttyMODULO2_DATA removed"
      fi
    ;;
  esac
fi

Ale jak teraz wyczaić który z tych ttyUSB* jaką ma nazwę DEVICENAME. Jest gdzieś w systemie to odnalezienia?

59

Odp: Tworzenie aliasów dla portów szeregowych

W /sys poszukaj.

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

60 (edytowany przez smereka 2025-05-21 12:19:31)

Odp: Tworzenie aliasów dla portów szeregowych

Nie mogę tego jakoś odnaleźć. Masz może jakiś modem i router u siebie żeby sprawdzić na owrt gdzie to leży?


Ok znalazłem polecenie:

root@:~# ls -l /sys/bus/usb-serial/devices
lrwxrwxrwx    1 root     root             0 Jan  1  1970 ttyUSB0 -> ../../../devices/platform/101c0000.ehci/usb2/2-1/2-1.1/2-1.1:1.0/ttyUSB0
lrwxrwxrwx    1 root     root             0 May 21 13:14 ttyUSB1 -> ../../../devices/platform/101c0000.ehci/usb2/2-1/2-1.3/2-1.3:1.0/ttyUSB1
lrwxrwxrwx    1 root     root             0 May 21 13:14 ttyUSB2 -> ../../../devices/platform/101c0000.ehci/usb2/2-1/2-1.2/2-1.2:1.2/ttyUSB2
lrwxrwxrwx    1 root     root             0 May 21 13:14 ttyUSB3 -> ../../../devices/platform/101c0000.ehci/usb2/2-1/2-1.2/2-1.2:1.3/ttyUSB3
lrwxrwxrwx    1 root     root             0 May 21 13:14 ttyUSB4 -> ../../../devices/platform/101c0000.ehci/usb2/2-1/2-1.2/2-1.2:1.4/ttyUSB4
lrwxrwxrwx    1 root     root             0 May 21 13:14 ttyUSB5 -> ../../../devices/platform/101c0000.ehci/usb2/2-1/2-1.2/2-1.2:1.5/ttyUSB5
lrwxrwxrwx    1 root     root             0 May 21 13:14 ttyUSB6 -> ../../../devices/platform/101c0000.ehci/usb2/2-1/2-1.2/2-1.2:1.6/ttyUSB6
lrwxrwxrwx    1 root     root             0 May 21 13:14 ttyUSB7 -> ../../../devices/platform/101c0000.ehci/usb2/2-1/2-1.2/2-1.2:1.7/ttyUSB7
lrwxrwxrwx    1 root     root             0 May 21 13:14 ttyUSB8 -> ../../../devices/platform/101c0000.ehci/usb2/2-1/2-1.2/2-1.2:1.8/ttyUSB8

Ale lipa bo jak wyjmę przed startem konwerter rs485 to już ostatni z modułów modemu jest nie ttyUSB8 a ttyUSB7 i jego nazwa to 2-1.2:1.7 a nie 2-1.2:1.8 wiec się zmienia nie da się tego od tej danej uzależnić ech...

61

Odp: Tworzenie aliasów dla portów szeregowych

No zmienia się. Wiec albo bazujesz na tym że zawsze wkładasz do tego samego portu albo na podstawie serial number albo czegoś innego.

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

62

Odp: Tworzenie aliasów dla portów szeregowych

Własnie tamte pozostałe interfejsy nie mają serial numebr albo ja nie wiem jak to sprawdzić. Robiłem Twoim skryptem i w /tmp jest tylko: 

DEVNAME=bus/usb/002/006
USER=root
ACTION=bind
SHLVL=1
HOME=/
SEQNUM=1154
BUSNUM=002
MAJOR=189
HOTPLUG_TYPE=usb
DEVPATH=/devices/platform/101c0000.ehci/usb2/2-1/2-1.2
LOGNAME=root
DEVICENAME=2-1.2
TERM=linux
SUBSYSTEM=usb
PATH=/usr/sbin:/usr/bin:/sbin:/bin
MINOR=133
DRIVER=usb
TYPE=0/0/0
DEVNUM=006
PRODUCT=2c7c/901/318
PWD=/
DEVTYPE=usb_device

63

Odp: Tworzenie aliasów dla portów szeregowych

Nie dostarcza ci on seriala.

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