Odp: Sposób na działające USSD
Nie mam. Udev nie występuje na openwrt, więc domyślnie tego nie znajdziesz. Czeka cię tworzenie i kompilacja pakietu od początku.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Oprogramowanie / Software → Sposób na działające USSD
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
Nie mam. Udev nie występuje na openwrt, więc domyślnie tego nie znajdziesz. Czeka cię tworzenie i kompilacja pakietu od początku.
Znalazłem skrypt do hotpluga, który wiąże urządzenia do konkretnych portów tak jak tego potrzebowałem: https://openwrt.org/docs/guide-user/base-system/hotplug
Skrypt działa i po podpięciu modemu tworzy symlinki w katalogu dev:

#!/bin/sh
# Description: Action executed on boot (bind) and with the system on the fly
if [ "${ACTION}" = "bind" ]; then
case "${PRODUCT}" in
12d1*) # E173 3g modem product id prefix
DEVICE_NAME="$(ls /sys/${DEVPATH} | grep tty)"
DEVICE_TTY="$(ls /sys/${DEVPATH}/tty/)"
# Module E173-* connected to slot 1
if [ "${DEVICENAME}" = "1-1:1.0" ]; then
ln -s /dev/${DEVICE_TTY} /dev/ttyGSMO1_AT
logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyGSMO1_AT created"
elif [ "${DEVICENAME}" = "1-1:1.1" ]; then
ln -s /dev/${DEVICE_TTY} /dev/ttyGSMO1_DATA
logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyGSMO1_DATA created"
elif [ "${DEVICENAME}" = "1-1:1.2" ]; then
ln -s /dev/${DEVICE_TTY} /dev/ttyGSMO1_AT2
logger -t hotplug "Symlink from /dev/${DEVICE_TTY} to /dev/ttyGSMO1_AT2 created"
fi
;;
esac
fi
# Action to remove the symlinks
if [ "${ACTION}" = "remove" ]; then
case "${PRODUCT}" in
12d1*) # E173 3g modem product id prefix
# Module E173-* connected to slot 1
if [ "${DEVICENAME}" = "1-1:1.0" ]; then
rm /dev/ttyGSMO1_AT
logger -t hotplug "Symlink /dev/ttyGSMO1_AT removed"
elif [ "${DEVICENAME}" = "1-1:1.1" ]; then
rm /dev/ttyGSMO1_DATA
logger -t hotplug "Symlink /dev/ttyGSMO1_DATA removed"
elif [ "${DEVICENAME}" = "1-1:1.2" ]; then
rm /dev/ttyGSMO1_AT2
logger -t hotplug "Symlink /dev/ttyGSMO1_AT2 removed"
fi
;;
esac
fi
EOF...Jednak co z tego skoro są one nieużywalne i smsd wywala taki błąd:
2021-11-23 00:57:55,3, GSM1: Couldn't open serial port /dev/ttyGSMO1_AT, error: Is a directory, waiting 30 sec.
2021-11-23 00:57:55,3, GSM2: Couldn't open serial port /dev/GSM2_0, error: No such file or directory, waiting 30 sec.Dla przykładu ten "GSM2" nie jest w ogóle podpięty.
Wynik zapytania:
dmesg | grep ttyPokazuje to:
[ 20.012509] option 1-1:1.0: GSM modem (1-port) converter detected
[ 20.019136] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 20.026780] option 1-1:1.1: GSM modem (1-port) converter detected
[ 20.033406] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 20.040952] option 1-1:1.2: GSM modem (1-port) converter detected
[ 20.047585] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2Nie robisz nigdzie /dev/GSM2_0, więc czemu się dziwisz że nie działa? Ponad to - chyba pomyliłeś O (litera) z 0 (cyfra) w linkach bo inaczej się to wyświetla.
Tu nie chodzi o błąd "GSM2_0" bo on w ogóle nie jest podpięty więc to normalne, że taki błąd wywala, ale o to "/dev/ttyGSMO1_AT, error: Is a directory, waiting 30 sec" - niby mam symlinka w katalogu ale jest jakby nieaktywny. Testuje na razie przy minimalnej konfiguracji, na jednym modemie. Wrzuciłem, ten log GSM2_0 aby pokazać, że komunikaty błędów się różnią. Inaczej wygląda komunikat o błędzie jeśli symlink w ogóle nie istnieje w a inaczej jeśli symlink niby jest w katalogu ale z jakiegoś powodu nie działa.
Ale mniejsza z tym, bo znalazłem już inny skrypt do hotpluga. Wygląda może mniej elegancko i czytelnie ale przynajmniej działa jak należy.
#!/bin/sh
#
# /etc/hotplug.d/tty/10-persistent_ttys
#
# creates persistent USB tty device links under /dev/serial/by-port based on usb port number (eg hub port)
#
# Sat Jan 26 23:28:14 CET 2019 Michael Rausch <mrausch (at) netadair.de> Initial version
# Tue Mar 17 16:24:29 CET 2020 Michael Rausch Fixed regex for ttyACM
#
# TODO: check with multi-tty UMTS adapters
#
. /lib/functions.sh
. /lib/functions/procd.sh
logger -t DEBUG "hotplug tty: action='$ACTION' devicename='$DEVICENAME' devname='$DEVNAME' devpath='$DEVPATH' product='$PRODUCT' type='$TYPE' interface='$INTERFACE'"
# Sun Jan 20 10:35:27 2019 user.notice DEBUG: hotplug tty: action='add' devicename='ttyUSB1' devname='ttyUSB1' devpath='/devices/pci0000:00/0000:00:13.0/usb1/1-2/1-2.2/1-2.2:1.0/ttyUSB1/tty/ttyUSB1' product='' type='' interface=''
# /dev/serial/by-port//sys/devices/platform/ehci-platform/usb1/1-1/1-1:1.0/tty/ttyACM0
# NB: not sure if this works properl in all cases, eg multiple dev nodes per physical device
[ -z "${DEVNAME}" ] && exit
SERIALPATH=/dev/serial/by-port
[ ! -d "$SERIALPATH" ] && mkdir -p "$SERIALPATH"
#USBPORT=$(echo "/sys$DEVPATH" | sed -r -e 's/(^.*\/)(.*)(\/tty.*\/tty\/tty.*$)/\2/' )
USBPORT=$(echo "/sys$DEVPATH" | sed -r -e 's#(/tty.*$)##' | sed -r -e 's#(^.*/)(.*$)#\2#' )
if [ "${ACTION}" = "add" ]; then
if [ -z "${USBPORT}" ]; then
logger -t WARN "hotplug tty: Warning, usb port is empty"
exit
fi
ln -sf /dev/$DEVICENAME "${SERIALPATH}/${USBPORT}"
logger -t INFO "hotplug tty: Symlink to /dev/$DEVICENAME from ${SERIALPATH}/${USBPORT} created"
fi
if [ "${ACTION}" = "remove" ]; then
if [ -z "${USBPORT}" ]; then
logger -t WARN "hotplug tty: Warning, usb port is empty"
exit
fi
rm "${SERIALPATH}/${USBPORT}"
logger -t INFO "hotplug tty: Symlink from ${SERIALPATH}/${USBPORT} removed"
fiDziała to tak, że w katalogu dev tworzy on ścieżkę składającą się z dwóch podkatalogów dev/serial/by-port/ gdzie w tym ostatnim folderze mam już symlinki do poszczególnych interfejsów modemu czyli w configu smsd podaje np. coś takiego:
device = /dev/serial/by-port/1-1:1.0Co odpowiada: "/dev/ttyUSB0" Dopóki modemy będą wpięte w te same porty huba to wszystko będzie działać.
Ale ogólnie muszę powiedzieć, że dramat z tym hotplugiem.. Uważam, że skoro społeczność odpowiedzialna za OpenWrt zdecydowała na usunięcie udeva, to przykładów rozwiązań tutaj https://openwrt.org/docs/guide-user/base-system/hotplug powinno być więcej a okazuje się, że nawet to co tam jest nie zupełnie działa. Wszystkie tego typu rozwiązania w innych systemach opartych na linuxie opierają się na regułach udev i chyba tylko OpenWrt z tego korzysta. Skoro domyślnie udev-a nie ma to powinna być chociaż możliwość jego prostej instalacji dla tych co tego potrzebują a tak jak widać na tym przykładzie tworzy to masę problemów, bo nie każdy jest od razu programistą basha ![]()
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Oprogramowanie / Software → Sposób na działające USSD
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc