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:~#
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Oprogramowanie / Software → Tworzenie aliasów dla portów szeregowych
Strony Poprzednia 1 2 3
Zaloguj się lub zarejestruj by napisać odpowiedź
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 k. Autokorekta robi swoje.
próbowałem dymyśliłem się
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
poszłoooo
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
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?
Zrob sobie mały debug przez logger "$coś tam" co drugą linię i zobacz jakie zmienne przychodzą i co on widzi.
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
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?
W /sys poszukaj.
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...
No zmienia się. Wiec albo bazujesz na tym że zawsze wkładasz do tego samego portu albo na podstawie serial number albo czegoś innego.
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
Nie dostarcza ci on seriala.
Strony Poprzednia 1 2 3
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Oprogramowanie / Software → Tworzenie aliasów dla portów szeregowych
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc