1 (edytowany przez client22 2021-11-07 21:56:25)

Temat: Sposób na działające USSD

Panowie macie jakiś sprawdzony sposób na wysyłanie kodów USSD? Jestem na  21.02.0 ...Sprawdziłem wszystko i nic poza gammu nie działa. Poniżej wyniki testów poszczególnych aplikacji.

Gammu zajmuje mi praktycznie całą pamięć ale ostatecznie mógłbym z tego korzystać, pytanie tylko:

1. W którym pliku znajduje się konfiguracja tej aplikacji? ..Wydaje się, że korzysta on z smsd.conf i tu jest problem bo smsd wykorzystuje już z smstools3. Mam kilka modemów i nie wiem z którego modemu wysyłany jest USSD. Przed wysłaniem kodu pojawia się ostrzeżenie, że Gammu nie znalazło pliku z konfiguracją i korzysta z domyślnej.

2. W jaki sposób odpowiedzieć na kod USSD gdy ten wymaga podjęcia określonej akcji np. trzeba wybrać określone opcje w menu?

sms_tool

root@OpenWrt:~# sms_tool -d /dev/ttyUSB1 ussd "*124*#"
No response from modem.
root@OpenWrt:~#

picocom

COMMAND NOT SUPPORT

AAAAAAAT+


COMMAND NOT SUPPORT

AAAAAAAT+


COMMAND NOT SUPPORT

AAAAAAAT+


COMMAND NOT SUPPORT

AAAAAAAT+


COMMAND NOT SUPPORT

minicom

Welcome to minicom 2.7.1
OPTIONS: 
Port /dev/GSM2_0

Press CTRL-A Z for help on special keys

AT+CUSD=1,"*124*#",15AT+CUSD=1,"*124*#",15

+CME ERROR: UNKNOWN

2

Odp: Sposób na działające USSD

Odnośnie punktu 2:
- jaki to modem?
- sprawdzałeś na innych interfejsach?
- użyj opcji -R bo może modem nie chce gadać w pdu.

Wysyła się po prostu np "0" czy "9", dokładnie tak samo jak to robi się w telefonie.

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

3

Odp: Sposób na działające USSD

Modem to E173.

Z tą opcją -R to mówisz w kontekście sms_tool czy minicom? ..Bo z picocom to nie działa

root@OpenWrt:~# picocom -r 115200 /dev/ttyUSB0
Unexpected non-option arguments: /dev/ttyUSB0 
root@OpenWrt:~# 

Testuje na interfejsie ttyUSB0 Do niczego innego nie wykorzystuje modemów więc wykluczam jakiś konflikt.

root@OpenWrt:~# picocom -b 115200 /dev/ttyUSB0
picocom v3.1

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
hangup is      : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,
logfile is     : none
initstring     : none
exit_after is  : not set
exit is        : no

!! Settings mismatch !! Type [C-a] [C-v] to see actual port settings
Type [C-a] [C-h] to see available commands
Terminal ready
AT+CUSD=1,"*124*#",15
ERROR
Cezary napisał/a:

Odnośnie punktu 2:
Wysyła się po prostu np "0" czy "9", dokładnie tak samo jak to robi się w telefonie.

 
No właśnie gdy kilka dni temu testowałem z gammu to za bardzo nie chciało działać ale możliwe, że był problem z zasięgiem. W tej chwili modem przestawiłem w inne miejsce, tyle, że aktualnie nie jestem w stanie nawet przetestować bo Orange akurat teraz postanowiło prowadzić jakieś prace modernizacyjne na tym kodzie i ma to trwać do 7 dni wiec czekam aż wróci do działania.

4

Odp: Sposób na działające USSD

Pisałem o sms_tool. Tak działa jak pisałem:

root@MiFi:~# sms_tool -r -R -d /dev/ttyUSB2 ussd "*111#"
Play 24 Menu
1 Konto
2 Uslugi / Promocje
3 Finanse
0 Wyjscie
Wiecej opcji znajdziesz w Play24 na http://24.play.pl
root@MiFi:~# sms_tool -r -R -d /dev/ttyUSB2 ussd "0"
Dziekujemy za skorzystanie z uslugi.
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez client22 2021-11-09 08:42:33)

Odp: Sposób na działające USSD

U mnie w żaden sposób to nie chce funkcjonować, włącznie z prostym sprawdzeniem konta. 3ginfo wskazuje zasięg na poziomie 35% tak więc nie wiem co jest tego przyczyną. Gammu działa więc obstawiam problem softwarowy niż z samym modemem. Poniżej rezultat testów na dwóch modemach, które łącznie tworzą 5 interfejsów.

root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB0 ussd "*124*#"
error: 100

root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB1 ussd "*124*#"
No response from modem.
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB2 ussd "*124*#"
error: 100
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB3 ussd "*124*#"
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB3 ussd "*124*#"
No response from modem.
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB3 ussd "*124*#"
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB3 ussd "*124*#"
No response from modem.
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB4 ussd "*124*#"
No response from modem.
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB5 ussd "*124*#"
No response from modem.
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB3 ussd "*124*#"
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB6 ussd "*124*#"
open(/dev/ttyUSB6)
tcgetattr(/dev/ttyUSB6)
tcsetattr(/dev/ttyUSB6)
reopen(/dev/ttyUSB6)
failed tcsetattr(/dev/ttyUSB6): Bad file descriptor
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB1 ussd "*660*#"
No response from modem.
root@OpenWrt:~# sms_tool -r -R -d /dev/ttyUSB2 ussd "*660*#"
error: 100

6

Odp: Sposób na działające USSD

Modem zwraca to 100, co oznacza... "CME ERROR: 100    Unknown error smile

Zainstaluj sobie picocom, zrób picocom -b 115200 /dev/ttyUSB2, napisz at i daj enter. Jak odpowie ok to wpisz

AT+CUSD=1,"*124#",15

I pokaż co wyszło. Pewnie +CME ERROR: 100...

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

7 (edytowany przez client22 2021-11-09 23:23:42)

Odp: Sposób na działające USSD

No rezultat z picocom taki jak napisałeś:

root@OpenWrt:~# picocom -b 115200 /dev/ttyUSB2
picocom v3.1

port is        : /dev/ttyUSB2
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
hangup is      : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,
logfile is     : none
initstring     : none
exit_after is  : not set
exit is        : no

!! Settings mismatch !! Type [C-a] [C-v] to see actual port settings
Type [C-a] [C-h] to see available commands
Terminal ready

OK

+CME ERROR: 100

Próbowałem też z gammu i okazuje się, że o ile główne menu idzie wywołać to z uzyskaniem odpowiedzi z USSD  już jest problem:

root@OpenWrt:~# gammu --getussd *660*#
Warning: No configuration file found!
Warning: No configuration read, using builtin defaults!
Press Ctrl+C to break…
USSD received
Status               : Action needed
Service reply        : "Twoj numer to 510xxxxxx.
Twoja taryfa to Orange Free na karte.
1. Zmien numer
2. Zmien taryfe
3. Zaakceptuj i zakoncz
4. Anuluj i zakoncz
"
1
USSD received
Status               : Terminated
Service reply        : ""

Czasem odpowiedź wygląda tak:

root@OpenWrt:~# gammu --getussd *660*#
Warning: No configuration file found!
Warning: No configuration read, using builtin defaults!
No response in specified timeout. Probably the phone is not connected.

Modem wpięty na aktywnym hubie. Zasilacz 2-amperowy. Próbowałem na dwóch modemach i na każdym wygląda to tak samo.

8

Odp: Sposób na działające USSD

Zrób

gammu textall --getussd *660*#

I pokaż co wyszło. Modem gada z tobą, ale jak widać coś bardzo opornie.

PS. Jeżeli wywołasz to menu to nie możesz natychmiast wywoływać innego ussd bo on czeka na odpowiedzi na swoje menu, więc stąd może być ten error. Operator ma jakiś timeout po którym możesz znów wykonywać ussd, albo wcześniej musisz zakończyć to menu, w twoim przypadku - przez wybranie 3 lub  4.

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

9 (edytowany przez client22 2021-11-10 23:24:33)

Odp: Sposób na działające USSD

Wyszło podobnie jak w poprzedniej próbie.. Cezary, na jakiej wersji testujesz u siebie smstools? Ja jestem na 21.02.0 i myślę, że powodem tego, że te kody w żaden sposób nie działają to problem z jakimiś zależnościami w 21.02 Sprawdzałem ten modem na Debianie z modem-manager-gui i tam wszystko działa bez problemu włącznie z wysyłaniem odpowiedzi na kody USSD.

Myślałem aby zrobić downgrade do 19.07 i tam próbować ale problem w tym, że nawet nie bardzo do czego mogę się cofnąć wink

https://openwrt.org/toh/xiaomi/miwifi_mini

root@OpenWrt:~# gammu textall --getussd *660*#
Warning: No configuration file found!
Warning: No configuration read, using builtin defaults!
No response in specified timeout. Probably the phone is not connected.
root@OpenWrt:~# gammu textall --getussd *660*#
Warning: No configuration file found!
Warning: No configuration read, using builtin defaults!
Press Ctrl+C to break…
USSD received
Status               : Action needed
Service reply        : "Twoj numer to 510xxxxxx.
Twoja taryfa to Orange Free na karte.
1. Zmien numer
2. Zmien taryfe
3. Zaakceptuj i zakoncz
4. Anuluj i zakoncz
"
1
root@OpenWrt:~# 1
-ash: 1: not found
root@OpenWrt:~# gammu textall --getussd *660*#
Warning: No configuration file found!
Warning: No configuration read, using builtin defaults!
No response in specified timeout. Probably the phone is not connected.
root@OpenWrt:~# gammu textall --getussd *660*#
Warning: No configuration file found!
Warning: No configuration read, using builtin defaults!
Press Ctrl+C to break…
USSD received
Status               : Action needed
Service reply        : "Twoj numer to 510xxxxxx.
Twoja taryfa to Orange Free na karte.
1. Zmien numer
2. Zmien taryfe
3. Zaakceptuj i zakoncz
4. Anuluj i zakoncz
"
1
root@OpenWrt:~# 1
-ash: 1: not found
root@OpenWrt:~# 

10

Odp: Sposób na działające USSD

Na każdej od 12... bo jeszcze mam takie routery. To jest niezależne od wszystkiego.

Dlaczego ty chcesz wpisywać 1 na konsoli? To nie jest interaktywne przecież. Wpisujesz

gammu  --getussd *660*#
gammu  --getussd 1

To jest polecenie ussd a nie polecenie do routera.

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

11 (edytowany przez client22 2021-11-13 08:21:51)

Odp: Sposób na działające USSD

Gdyby ktoś miał podobny problem to sprawę załatwia ModemManager. Żadne inne rozwiazanie w żaden sposób nie działa.

Natrafiłem za to na dziwny problem z smstools3 z odbieraniem sms z kilku modemów. Zaznaczam, że pierwotnie wszystko działało, później zacząłem trochę testować z mapowaniem portów usb i aktualnie na jednym z modemów jest jakiś problem (a w sumie na 3 które mają to samo oznaczenie PRODUCT).

Nie wnikając w szczegóły: jak mogę usunąć całą partycję i przywrócić wszystko do początkowego stanu jak świeżo po flashowaniu? Próbowałem:

mtd -r erase rootfs_data 

...i niby wszystko wyczyściło ale zauważyłem, że np. niektóre katalogi w /dev mają datę 1.1.1970 Nie rozwiązało to także problemu z smstools3.

Gdy podłącze modem pod inny system (Debian/Windows) normalnie loguje się do sieci wszystkie i smsy spływają, więc wygląda jakby coś było przyblokowane. Gdy podłącze jeden z 4 modemów, które ma inne oznaczenie PRODUCT ustawiając ttyUSB0 to także działa. Nie działają 3 modemy, które mają to samo oznaczenie PRODUCT (12d1/1436).

Log smsd nic nie mówi i wszystko wydaje się działać jak wcześniej więc najpewniejszym rozwiązaniem byłoby wrzucenie całego systemu na nowo bo nie mam już pomysłu gdzie szukać problemu.

12

Odp: Sposób na działające USSD

Zrobiłeś na nowo - usunięcie roofs_data przywraca  obraz do stanu początkowego, a data jest jak najbardziej poprawna.

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

13 (edytowany przez client22 2021-11-15 01:00:15)

Odp: Sposób na działające USSD

Ostatecznie doszedłem do wniosku, że przyczyną wszystkich problemów może być modem E173. Z tego co widzę te modemy występują w różnych wersjach hardwarowych...Na te chwilę posiadam 4 takie modemy (jutro będę miał kolejny) w wersji u-1 + jeden s-2 z czego najsprawniej działa ten ostatni, co widać po zapytaniach wysyłanych do konsoli poniżej ("modem2" to wersja s-2). To samo jest z odbieraniem sms. s-2 odbiera bez problemu. Na u-2 są problemy i zdarza się, że nie działa. Aktualnie 2 u-2 "ożyły" i odbierają sms ale jednego za nic nie mogę zmusić do poprawnego działania pod OpenWrt. Najgorsze jest to, że nawet nie wiem czy mam aktualny soft bo Huawei usunął wszystkie ślady po tym modemie ze swojej strony.

W jednym z u-1 było wgrane 11.126.83.00.264, wykonałem update do 11.126.85.00.209 ale zbyt dużo to nie pomogło i nadal wysyłanie USSD nie działa zbyt sprawnie.

W dwóch pozostałych u-1 siedzi: 11.126.85.01.00 i rezultat zapytań USSD jest podobny do tego poniżej:

root@OpenWrt:~# mmcli -L
    /org/freedesktop/ModemManager1/Modem/1 [huawei] E173
root@OpenWrt:~# mmcli -m 1 -e
successfully enabled the modem
root@OpenWrt:~# mmcli -m 1 --3gpp-ussd-initiate="*124*#"
error: couldn't initiate USSD session: 'Timeout was reached'
root@OpenWrt:~# mmcli -m 1 --3gpp-ussd-initiate="*124*#"
error: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.WrongState: Cannot initiate USSD: a session is already active'
root@OpenWrt:~# mmcli -m 1 --3gpp-ussd-initiate="*124*#"
error: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.WrongState: Cannot initiate USSD: a session is already active'
root@OpenWrt:~# mmcli -m 1 --3gpp-ussd-initiate="*124*#"
error: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.WrongState: Cannot initiate USSD: a session is already active'
root@OpenWrt:~# mmcli -m 1 --3gpp-ussd-initiate="*124*#"
error: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.WrongState: Cannot initiate USSD: a session is already active'
root@OpenWrt:~# mmcli -L
    /org/freedesktop/ModemManager1/Modem/1 [huawei] E173
root@OpenWrt:~# mmcli -L
    /org/freedesktop/ModemManager1/Modem/1 [huawei] E173
    /org/freedesktop/ModemManager1/Modem/2 [huawei] E173
root@OpenWrt:~# mmcli -m 2 -e
successfully enabled the modem
root@OpenWrt:~# mmcli -m 2 --3gpp-ussd-initiate="*124*#"
USSD session initiated; new reply from network: 'Twoja oferta to Orange Free.
1.Stan konta glownego: 0.00 zl. Srodki wazne 0 dni.'



root@OpenWrt:~# mmcli --modem=1
  -----------------------------
  General  |              path: /org/freedesktop/ModemManager1/Modem/1
           |         device id: 1d469cd4f40e235e9b133c748d7aeca33f39f39c
  -----------------------------
  Hardware |      manufacturer: huawei
           |             model: E173
           | firmware revision: 11.126.85.00.209
           |         supported: gsm-umts
           |           current: gsm-umts
           |      equipment id: 869xxxxxxxxx
  -----------------------------
  System   |            device: /sys/devices/platform/101c0000.ehci/usb1/1-1/1-1.1
           |           drivers: option1, cdc_ether
           |            plugin: huawei
           |      primary port: ttyUSB0
           |             ports: ttyUSB0 (at), wwan0 (net)
  -----------------------------
  Numbers  |               own: +48510xxxxxx
  -----------------------------
  Status   |    unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
           |             state: registered
           |       power state: on
           |       access tech: edge
           |    signal quality: 40% (recent)
  -----------------------------
  Modes    |         supported: allowed: 2g, 3g; preferred: none
           |                    allowed: 2g, 3g; preferred: 2g
           |                    allowed: 2g, 3g; preferred: 3g
           |                    allowed: 2g; preferred: none
           |                    allowed: 3g; preferred: none
           |           current: allowed: 2g, 3g; preferred: 3g
  -----------------------------
  IP       |         supported: ipv4, ipv6
  -----------------------------
  3GPP     |              imei: 8698780xxxxxxx
           |       operator id: 26003
           |     operator name: Orange
           |      registration: home
  -----------------------------
  SIM      |  primary sim path: /org/freedesktop/ModemManager1/SIM/1


root@OpenWrt:~# mmcli --modem=2
  -----------------------------
  General  |              path: /org/freedesktop/ModemManager1/Modem/2
           |         device id: 065250671b3e80ecc8bf7de5d15809421efaad71
  -----------------------------
  Hardware |      manufacturer: huawei
           |             model: E173
           | firmware revision: 21.017.09.00.00
           |         supported: gsm-umts
           |           current: gsm-umts
           |      equipment id: 352xxxxxxxxxxx
  -----------------------------
  System   |            device: /sys/devices/platform/101c0000.ehci/usb1/1-1/1-1.4/1-1.4.3
           |           drivers: option1
           |            plugin: huawei
           |      primary port: ttyUSB5
           |             ports: ttyUSB3 (at), ttyUSB5 (at)
  -----------------------------
  Numbers  |               own: +48510xxxxx
  -----------------------------
  Status   |    unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
           |             state: registered
           |       power state: on
           |       access tech: edge
           |    signal quality: 38% (recent)
  -----------------------------
  Modes    |         supported: allowed: 2g, 3g; preferred: none
           |                    allowed: 2g, 3g; preferred: 2g
           |                    allowed: 2g, 3g; preferred: 3g
           |                    allowed: 2g; preferred: none
           |                    allowed: 3g; preferred: none
           |           current: allowed: 2g, 3g; preferred: 3g
  -----------------------------
  IP       |         supported: ipv4
  -----------------------------
  3GPP     |              imei: 352xxxxxxxxx
           |       operator id: 26003
           |     operator name: Orange
           |      registration: home
  -----------------------------
  SIM      |  primary sim path: /org/freedesktop/ModemManager1/SIM/2

 

@cezary, czy w 21.02 jest udev? ..Szukając wcześniej byłem pewien, że nie ma. Aktualnie po instalacji ModemManager w katalogu lib pojawił się udev. ..Masz może jakiś skrypt, który ogrania nazwy interfejsów? ..Wcześniej mając dwa modemy z różnymi oznaczeniami PRODUCT, korzystałem z tego poniższego do hotplug.d ale w tej chwili mam 3 modemy, które mają takie samo oznaczenie (x12d1:1436). Modemy mam ponumerowane i wpinam w te same porty huba wiec mógłbym opierać się na stałych ścieżkach konkretnych portów (jeśli rzeczywiście się one nie zmieniają).


     #!/bin/sh
    if [ "$DEVTYPE" = "usb_interface" ] && [ "$ACTION" = "add" ]; then
        for tty in /sys/$DEVPATH/ttyUSB*; do
            [ -d "$tty" ] || continue
            OLDD=${tty##*/}

            # to jest E173 1
            if [ "x$PRODUCT" = "x12d1/1c05/102" ]; then
                NEWD="GSM1_"${DEVPATH##*.}
                rm /dev/$NEWD
                ln -s /dev/$OLDD /dev/$NEWD
            fi
    
            # to jest E173 2
            if [ "x$PRODUCT" = "x12d1/1436/0" ]; then
                NEWD="GSM2_"${DEVPATH##*.}
                rm /dev/$NEWD
                ln -s /dev/$OLDD /dev/$NEWD
            fi

        done
    fi

  

14

Odp: Sposób na działające USSD

Nie ma. Openwrt nie korzysta z tego mechanizmu, modemmanager tylko dodaje pliki do udeva choć nie wiem po co bo i tak nie jest kompilowany z udevem.

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

15 (edytowany przez client22 2021-11-16 08:29:44)

Odp: Sposób na działające USSD

ModemMenager posiada wbudowany mechanizm, który ogarnia nazwy modemów (każdy modem dostaje swoje unikalne id) i pewnie w tym celu są tam te pliki udev-a.

ModemMenager domyślnie oznacza modemy jako "Modem 0", "Modem 1" itd. ale dodając poniższy zapis do reguł, można to zmienić i posługiwać się własnymi nazwami. W moim przypadku jest to "GSM1":

ACTION!="add|change|move", GOTO="mm_naming_rules_end"

DEVPATH=="/sys/devices/platform/101c0000.ehci/usb1/1-1/1-1.4/1-1.4.3",ENV{ID_MM_PHYSDEV_UID}="GSM1"

LABEL="mm_naming_rules_end"
LABEL="mm_candidate_end"
root@OpenWrt:~# mmcli -L
    /org/freedesktop/ModemManager1/Modem/1 [huawei] E173
root@OpenWrt:~# mmcli -m GSM1 -d
successfully disabled the modem

Tak więc ogólnie problem z kodami USSD mam rozwiązany. Same modemy będę wymieniał na wersję U-2.

Jedyny problem to modyfikacja tego skryptu hotplug-a tak aby generował symlink w oparciu o ścieżkę/port danego urządzenia. Potrzebowałbym jakiś przykład, szukałem ale większość tego typu rozwiązań jest pod udev-a.

Przykładowa ścieżka do pierwszego modemu wygląda u mnie tak:

/sys/devices/platform/101c0000.ehci/usb1/1-1/1-1.4/1-1.4.3
#!/bin/sh
if [ "$DEVTYPE" = "usb_interface" ] && [ "$ACTION" = "add" ]; then
    for tty in /sys/$DEVPATH/ttyUSB*; do
        [ -d "$tty" ] || continue
        OLDD=${tty##*/}

        # to jest E173 1
        if [ "x$PRODUCT" = "x12d1/1c05/102" ]; then
            NEWD="GSM1_"${DEVPATH##*.}
            rm /dev/$NEWD
            ln -s /dev/$OLDD /dev/$NEWD
        fi

    done
fi

16

Odp: Sposób na działające USSD

Czyli to: https://eko.one.pl/?p=openwrt-linkidoportowszeregowych i tak jak masz na początku -  zrób sobie debug środowiska, włóż każdy modem i będziesz wiedział jakimi danymi dysponujesz i po czym możesz je rozpoznać.

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

17 (edytowany przez client22 2021-11-17 08:52:01)

Odp: Sposób na działające USSD

Zrobiłem debug dla dwóch identycznych modemów i wyszły ciekawe rzeczy bo debug twierdzi, że oba modemy (oba e173 s-2) mają różne oznaczenia PRODUCT:

GSM1
----
USER=root
ACTION=add
SHLVL=1
HOME=/
SEQNUM=697
HOTPLUG_TYPE=usb
DEVPATH=/devices/platform/101c0000.ehci/usb1/1-1/1-1.4/1-1.4.3/1-1.4.3:1.0
LOGNAME=root
DEVICENAME=1-1.4.3:1.0
TERM=linux
SUBSYSTEM=usb
PATH=/usr/sbin:/usr/bin:/sbin:/bin
MODALIAS=usb:v12D1p1C0Bd0102dc00dsc00dp00ic08isc06ip50in00
TYPE=0/0/0
PRODUCT=12d1/1c0b/102
INTERFACE=8/6/80
PWD=/
DEVTYPE=usb_interface
GSM2
----
USER=root
ACTION=add
SHLVL=1
HOME=/
SEQNUM=713
HOTPLUG_TYPE=usb
DEVPATH=/devices/platform/101c0000.ehci/usb1/1-1/1-1.4/1-1.4.2/1-1.4.2:1.0
LOGNAME=root
DEVICENAME=1-1.4.2:1.0
TERM=linux
SUBSYSTEM=usb
PATH=/usr/sbin:/usr/bin:/sbin:/bin
MODALIAS=usb:v12D1p1C05d0102dc00dsc00dp00icFFiscFFipFFin00
TYPE=0/0/0
PRODUCT=12d1/1c05/102
INTERFACE=255/255/255
PWD=/
DEVTYPE=usb_interface

Tutaj natomiast wynik zapytania lsusb w konsoli, który pokazuje 2 takie same oznaczenia, więc nie mam pojęcia który wynik jest prawdziwy.

root@OpenWrt:~# lsusb
Bus 002 Device 001: ID 1d6b:0001 Linux 5.4.143 ohci_hcd Generic Platform OHCI controller
Bus 001 Device 006: ID 12d1:1c05 HUAWEI HUAWEI Mobile
Bus 001 Device 008: ID 12d1:1c05 HUAWEI HUAWEI Mobile

18

Odp: Sposób na działające USSD

Złapałeś dane modemu PRZED przełączeniem  (12d1:1c0b) a pokazałeś wynik na konsoli modemów po przełączeniu już. Wiesz że modem jest wirtualnym napędem cd który jest później przełączany do faktywnego trybu modemu?

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

19

Odp: Sposób na działające USSD

Tak, wiem o tym napędzie CD ale nie wiedziałem, że przedstawia się on w systemie inaczej niż sam modem. Koniec końców wychodzi na to, że mam kilka modemów z tym samym oznaczeniem PRODUCT: 12d1:1c0b (a już miałem nadzieję, że są różne wink

Czytałem kilkukrotnie https://eko.one.pl/?p=openwrt-linkidoportowszeregowych ale nie znajduje tam rozwiązania...

Zrobiłem debug, wyciągnąłem dane i próbowałem modyfikować skrypt np. w taki sposób, ale oczywiście nic z tego.

#!/bin/sh
if [ "$DEVTYPE" = "usb_interface" ] && [ "$ACTION" = "add" ]; then
    for tty in /sys/$DEVPATH/ttyUSB*; do
        [ -d "$tty" ] || continue
        OLDD=${tty##*/}

        # to jest E173 1
        if [ "x$DEVPATH" = "/devices/platform/101c0000.ehci/usb1/1-1/1-1.4/1-1.4.3" ]; then
            NEWD="GSM1_"${DEVPATH##*.}
            rm /dev/$NEWD
            ln -s /dev/$OLDD /dev/$NEWD
        fi


    done
fi

Jako ciekawostkę dodam, że gdy zainstaluje ModemMenager skrypt w ogóle przestaje reagować. W tej chwili aby testować hotplug-a musiałem przywrócić wszystko bez instalowania ModemMenager-a i dopiero po tym zabiegu hotplug wrócił do działania.

Może powinienem skupić się na szukaniu rozwiązania pod udev skoro okazuje się, że ten jednak w jakiś sposób współpracuje z ModemMenagerem?

20

Odp: Sposób na działające USSD

Źle zrobiłeś.  Ma być

if [ "x$DEVPATH" = "x/devices/platform/101c0000.ehci/usb1/1-1/1-1.4/1-1.4.3" ]; then

(ten x zapobiega porównywaniu do nulla, przez co skrypt by się wywalał. Więc jak gdzieś dodawany jest sztucznie x to trzeba też po drugiej stronie dodać x).

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

21 (edytowany przez client22 2021-11-18 21:35:38)

Odp: Sposób na działające USSD

Zrobiłem raz jeszcze debug aby upewnić się czy ścieżka jest poprawna. W tej chwili kod wygląda jak poniżej, ale żadne dodatkowe symlinki nie są tworzone.

#!/bin/sh
if [ "$DEVTYPE" = "usb_interface" ] && [ "$ACTION" = "add" ]; then
    for tty in /sys/$DEVPATH/ttyUSB*; do
        [ -d "$tty" ] || continue
        OLDD=${tty##*/}

        # to jest E173 1
        if [ "x$DEVPATH" = "x/devices/platform/101c0000.ehci/usb1/1-1/1-1.4/1-1.4.3" ]; then
            NEWD="GSM1_"${DEVPATH##*.}
            rm /dev/$NEWD
            ln -s /dev/$OLDD /dev/$NEWD
        fi


    done
fi

..Ale mniejsza z tym gdyż tak jak podejrzewałem muszę chyba poszukać rozwiązania pod udev.. Inaczej jak później dodam modemmanager to ten i tak będzie mi blokował hotplug-a. Potwierdzenie tego znalazłem tutaj:

https://github.com/openwrt/packages/issues/14197

Jeśli chodzi o udev-a który przypisuje urządzenia do portów to znalazłem coś takiego:

BUS="usb", ID=="1-4.2:1.0", SYMLINK+="ttyUSBport2"
BUS="usb", ID=="1-4.3:1.0", SYMLINK+="ttyUSBport3"
BUS="usb", ID=="1-4.4:1.0", SYMLINK+="ttyUSBport4"

Nie rozumiem tylko:

1. Tych tych definicji portów: "1-4.2:1.0" w stosunku do tej scieżki: devices/platform/101c0000.ehci/usb1/1-1/1-1.4/1-1.4.3
2. Do którego pliku mam dodać te reguły.

https://i.imgur.com/FmdAOeK.png

22

Odp: Sposób na działające USSD

Zrób sobie swój własny plik. Te cyferki mają być tym co u ciebie pojawia się w systemie, to identyfikator magistrali/urzadzenia/portu/interfejsu

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

23

Odp: Sposób na działające USSD

Chcąc upewnić się, że ten udev w ogóle działa jak należy i nie namieszałem nic z numerami portów zacząłem od utworzenia prostego pliku 90-modem.rules o poniższej zawartości ale nie zadziałało.

ACTION=="add", KERNEL=="ttyUSB?", SUBSYSTEM=="tty", \
    ENV{ID_VENDOR_ID}=="12d1", \
    ENV{ID_MODEL_ID}=="1c05", \
    SYMLINK+="huawei-E173-%n"

W międzyczasie trafiłem na bloga autora ModemManagera gdzie dokładnie opisuje sposób w jaki udev współpracuje z ModemManager-em:

https://sigquit.wordpress.com/2017/01/0 … rt-take-2/

Jeśli dobrze rozumiem, autor wspomina o możliwości tworzenia reguł udev w kontekście dodawania poszczególnych interfejsów na czarną listę tak aby były dostępne dla innych aplikacji? Nigdzie nie pisze, że można tworzyć standardowe reguły i będą one działać, wiec pytanie czy jest to w ogóle możliwe. "udev wykorzystuje właściwości sysfs do przetwarzania i stosowania reguł". Czyli wychodzi na to, że udev jest i jednocześnie go nie ma? wink

Ma ktoś pomysł co mam z tym zrobić? Obojętnie czy to przez udev, hotplug czy jakkolwiek inaczej. Potrzebuje tylko aby interfejsy miały jakieś sensowne nazwy bo przy 5 modemach i standardowych nazwach interfejsów komunikacja z poszczególnymi modemami będzie praktycznie nie do ogarnięcia.

24

Odp: Sposób na działające USSD

Bez udeva i modemmanagaera - dałem ci linka. Działa, sam to stosowałem.

Modemmanagera nie używam bo ma za duze zależności, bo jeżeli korzysta z udeva to zabawa należy do Ciebie.

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

25

Odp: Sposób na działające USSD

Dobra, a czy jest jakiś sposób na wrzucenie pełnej wersji udeva do OpenWrt? Domyślam się, że trzeba byłoby skompilować, pytanie zatem czy masz może paczkę pod mipsel_24kc ? Tudzież cały obraz który mógłbym wrzucić?

Sprawdzałem tworzenie reguł udev pod Debianem na virtualboxie i tam wszystko działa bez problemu. Dzięki temu:

udevadm info /dev/ttyUSB0 | grep "ID_PATH="

jestem w stanie szybko zidentyfikować konkretny interfejs i utworzyć regułę gdzie w wybrakowanym hotplugu trzeba tworzyć całe skrypty aby uzyskać ten sam efekt.