Cześć,

Tak jak w temacie i na zdjęciu poniżej...

https://images92.fotosik.pl/293/981cb693d8f24d6agen.png

Jak można dokonać tego na OpenWRT pomijając instalację Captive Portalów?
Jak ręcznie wymusić na systemie lub przeglądarce klienta routera OpenWRT wyświetlenie takiego komunikatu?
Jakie mechanizmy za to odpowiadają?

W przyszłości chciałbym napisać skrypt, który w razie braku Internetu wyświetliłby taki komunikat, a po jego wybraniu "Zaloguj się do sieci" przekierowałoby użytkownika na stronę www routera LuCi.

377

(123 odpowiedzi, napisanych Inne)

Cezary napisał/a:

DEVICENAME=usb3#tty0 ACTION=add /etc/hotplug.d/tty/30-3g
ifup wan3

Rozumiem, że dla tego DEVICENAME i ACTION miałbym zrobić "ifup wan3"...
Jeśli tak to chyba nie pomoże.

Jeśli podłączam modem do USB...

Przypadek 1:
Jeśli nie używałem "force_link" musiałem:
1. /etc/init.d/network restart
2. ifup wan3

Przypadek 2:
Jeśli używam "force_link" muszę tylko "/etc/init.d/network restart"

378

(123 odpowiedzi, napisanych Inne)

Wracając do tematu.

1. HiLink e3372 - tutaj nie ma żadnych problemów, podłączam do gniazda USB, hotplug robi mi "przenazwanie" interfejsu i Internet startuje

2. Ericsson F5521GW (ACM)

config interface 'wan3'
        option proto '3g'
        option device '/dev/usb3#tty0'
        option apn 'darmowy'
        option username 'brak'
        option password 'brak'
        option force_link '1'
        option metric '50'

Pierwszą kwestią jest "force_link" (często o nim zapominałem w testach), aby nie trzeba było robić ręcznie "ifup" - dlatego raz mi działało, raz nie.. Druga kwestia o której wspominałem to username i password - nie może być pusty, po prostu się nie połączy, może być nawet błędny, ale nie pusty.

Teraz taka sytuacja -> router uruchomiony od dawna, interfejs wan3 skonfigurowany jak wyżej, podłączam modem F5521GW w trzecie gniazdo USB przez przejściówkę, skrypt hotplug robi mi symlink na /dev/usb3#tty0 (oryginalnie /dev/ttyACMx) i w LuCi czytam: Network device is not present.

Za każdym razem muszę robić "/etc/init.d/network restart" po podłączeniu modemu do USB przez co odcinam się od LANu i Internetu z innych modemów. Jak mogę przeresetować sam interfejs, aby się połączył?

Zrozumiałem jak to działa... W testach: router z mwan3 oraz klient w sieci LAN jako Win10 z OpenVPN GUI.

Po rozłączeniu wan1 -> router przełącza się na wan2 oraz klienta Win10 i OpenVPN przełącza się na wan2.
Po ponownym połączeniu wan1, klient Win10 rozpoczyna korzystanie z wan1, ale OpenVPN GUI korzysta dalej z wan2.

Wywnioskowałem:
1. W przypadku Failover na mwan3 potrzeba będzie resetowania OpenVPN -> jeśli interfejs o mniejszej lub równej metryce ulegnie zmianie statusu z offline na online. Najprościej przez sprawdzenie "mwan3 policies" -> reset w razie zmian.
2. W przypadku balansu na mwan3, trzeba byłoby połączyć OpenVPN -> klient_1 przez wan1, klient_2 przez wan2 itd. do tego samego serwera i zrobić drugi loadballancing tylko dla OpenVPN. Nie testowałem tego, nie wiem czy zadziała...

Chyba nic nie znalazłem przydatnego w tym linku.
Jak mogę przepuścić tun0 przez br-lan, zamiast bezpośrednio do interfejsów wanowych?
To chyba powinno rozwiązać problem

Z tego co zrozumiałem chodzi o przekierowanie portu 1194 strefy WAN na strefę LAN, a OpenVPN ma nasłuchiwać na interfejsie LAN. Tak to wygląda:

/etc/config/openvpn

config openvpn 'Client'
    (...)
    option local '192.168.212.1'
    option nobind '0'

/etc/config/firewall

config redirect
    option target 'DNAT'
    option dest 'lan'
    option proto 'udp'
    option src_dport '1194'
    option dest_port '1194'
    option name 'OpenVPN'
    option src 'wan'
    option dest_ip '192.168.212.1'

Niestety, ale to nie działa...

Mam jeszcze zapytanie o OpenVPN i mwan3.

Obecnie mam skonfigurowany mwan3 dla 4 interfejsów wan, każdy z nich jest oddzielną metryką - ten ostatni to Aero2 jako wan4 zawsze online, bez sprawdzania hostów:

config interface 'wan4'
        option enabled '1'
        option initial_state 'online'
        option family 'ipv4'
        option flush_conntrack 'never'

Dodatkowo router jest klientem serwera OpenVPN. Zauważyłem, że czasem nie może się połączyć z serwerem. Okazało się, że OpenVPN zawsze korzysta z dostępu do sieci przez wan4 zamiast korzystać z reguł mwan3. Okazało się, że zapomniałem zadeklarować metryk interfejsów w /etc/config/network - zrobiłem to, ale widzę jeszcze jeden problem.

Kiedy rozłączam wan1, mwan3 przełącza mnie na wan2 - OpenVPN również się przełącza. Kiedy łącze ponownie wan1, mwan3 przełącza mnie na wan1, ale OpenVPN korzysta dalej z wan2 - taka sytuacja ma miejsce aż do zresetowania OpenVPN lub rozłączenia wan2. Jak mogę spowodować, aby OpenVPN korzystał zawsze z obecnie aktywnego WANu?

Już mówię... 5V z zasilacza laboratoryjnego na wejście routera, potem USB->HUB, a huba zasiliłem też z tych samych 5V - to moja pomyłka. Sam dziwie się czemu spaliłem ten układ, ale podejrzewam że przy tak niskim napięciu, prąd wzrósł, temperatura wzrosła i zwęgliła układ po ok. 1 min pracy. Na chwile obecną wylutowałem zwęglony układ (wyszedł w kilku częsciach), miałem nadzieję że robi zwarcie i bez niego router ruszy (np. jest odpowiedzialny tylko za usb), ale się tak nie stało. Nie wiem za co odpowiada ten układ, nie mam schematu tej płyty, a nie chce mi się też przedzwaniać całej płyty, aby to rozszyfrowywać. Przed wylutowaniem widziałem na nim oznaczenie A... potem zwęglona część i na końcu D, a obok tego układu inny układ w takiej samej obudowie o numerze AS11D, więc myślę że ten zwęglony to właśnie AS11D.

Kolejny u7621-06 już w drodze smile
Tego może kiedyś naprawie...

To może na hubie 2.0 nie byłoby tego problemu?
Niestety już teraz tego nie sprawdzę bo nie jestem w stanie uruchomić tej płyty.

Udało mi się podłączyć na u7628-01 huba z trzema modemami e3372h i jednym SimCOM 7600E-H.
Pobór prądu huba oraz tych czterech modemów to ok. 0,75A przy 5V.
W dodatku pomyliłem się z napięciem i spaliłem płytę u7621-06 - zwęgliłem układ AS11D wink

Rozumiem, że ten problem będzie dotyczył tylko architektury MediaTek MT7621 na OpenWRT?
Może pepe2k będzie z Polski wstanie pomóc...

Są pewne nadzieje...

Podłączyłem jeszcze mój zestaw (hub + dwa modemy e3372h) do u7628-01 i również działa prawidłowo.
Sugerując się problemem z "normalnymi" płytami głównymi, gdzie wystarczyło wyłączyć obsługę usb3.0 na USB2.0 (tutaj) spróbowałem podłączyć pod mojego u7621-06 hub usb 2.0 zamiast 3.0 - przecież jako jedyny z moich routerów ma gniazdo w wersji 3.0 -> wszystko ruszyło ;-)

Dziwi mnie tylko jedno:
próbowałem podłączać ten zestaw przez przednie złącze 3.0 i nie działało, ale w środku obudowy zrobiłem sobie przejściówkę z mPCI-e do USB - i tam też nie działało na hubie usb 3.0, a jak wiadomo linie jakie dochodzą do tego złącza mPCI-e w przypadku linii usb są w wersji 2.0.

Jaki jest problem:
Na tym hubie 2.0 osiągam prędkości rzędu 5Mbps - mam nadzieję, że to wina tego huba, bo jest ona bardzo kiepski. Ma on wypięty +5V z wtyczki USB i wpiętą masę oraz +5V z zasilacza laboratoryjnego, aby nie brakowało prądu - czyli transmisja z routera, a zasilanie zewnętrzne.

Mam nadzieję, że po zakupie dobrego huba usb 2.0 będę osiągał wyniki w granicach 14MBps (~100Mbps) - tyle udało mi się osiągać na pobieraniu pliku z dysku SSD podłączonego do tego huba 3.0 i routera. Dziwi mnie jednak, że nie było żadnej różnicy, gdy hub był podłączony przez wcześniej wspomnianą przelotkę mPCI-e->USB oraz przednie gniazdo USB 3.0.

Dziękuję Ci serdecznie. Poniżej link do zgłoszonego błędu...

Znasz się lepiej - jest jakaś szansa, że zostanie to usunięte do końca roku?

Dodam, że próbowałem najnowszej wersji v19 i jest ten sam problem, obecnie jestem na v18.06.2.
Czyli obydwa moje u7621-06 nie poradzą sobie z multiwanem?
Szkoda, bo straciłbym dużo pieniędzy na te urządzenia.
Czy taki błąd może zostać usunięty?

Cześć, mam jeszcze problem.
Po podłączeniu huba oraz dwóch modemów e3372h w mr3420 jest wszystko ok, pojawiają się dwa interfejsu fizyczne:

# logread

kern.info kernel: [315743.318229] usb 1-1: new high-speed USB device number 18 using ehci-platform
kern.info kernel: [315743.483217] hub 1-1:1.0: USB hub found
kern.info kernel: [315743.487940] hub 1-1:1.0: 4 ports detected
kern.info kernel: [315752.358307] usb 1-1.4: new high-speed USB device number 20 using ehci-platform
kern.info kernel: [315752.472426] usb-storage 1-1.4:1.0: USB Mass Storage device detected
kern.info kernel: [315752.498413] scsi host16: usb-storage 1-1.4:1.0
kern.info kernel: [315752.828387] usb 1-1.1: new high-speed USB device number 21 using ehci-platform
kern.info kernel: [315752.952305] usb-storage 1-1.1:1.0: USB Mass Storage device detected
kern.info kernel: [315752.978568] scsi host17: usb-storage 1-1.1:1.0
kern.info kernel: [315753.404805] usb 1-1.4: USB disconnect, device number 20
kern.info kernel: [315753.658575] usb 1-1.4: new high-speed USB device number 22 using ehci-platform
kern.info kernel: [315753.805413] cdc_ether 1-1.4:1.0 eth2: register 'cdc_ether' at usb-ehci-platform-1.4, CDC Ethernet Device, 0c:5b:8f:27:9a:64
kern.info kernel: [315753.860763] usb-storage 1-1.4:1.2: USB Mass Storage device detected
kern.info kernel: [315754.071846] scsi host18: usb-storage 1-1.4:1.2
kern.info kernel: [315754.102019] usb 1-1.1: USB disconnect, device number 21
kern.info kernel: [315754.500857] usb 1-1.1: new high-speed USB device number 23 using ehci-platform
kern.info kernel: [315754.838866] cdc_ether 1-1.1:1.0 eth3: register 'cdc_ether' at usb-ehci-platform-1.1, CDC Ethernet Device, 0c:5b:8f:27:9a:64
kern.info kernel: [315754.879606] usb-storage 1-1.1:1.2: USB Mass Storage device detected
kern.info kernel: [315754.915215] scsi host19: usb-storage 1-1.1:1.2
kern.notice kernel: [315755.069926] scsi 18:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
kern.notice kernel: [315755.086097] sd 18:0:0:0: [sda] Attached SCSI removable disk
kern.notice kernel: [315755.922656] scsi 19:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
kern.notice kernel: [315755.940816] sd 19:0:0:0: [sdb] Attached SCSI removable disk
user.notice modem_detect: Detected modem HiLink on usb port '1-1.4' and assigned to interface 'eth2'
kern.info kernel: [315757.977850] cdc_ether 1-1.4:1.0 usb4: renamed from eth2
kern.err kernel: [315758.005267] cdc_ether 1-1.4:1.0 usb4: kevent 11 may have been dropped
kern.err kernel: [315758.037739] cdc_ether 1-1.4:1.0 usb4: kevent 11 may have been dropped
user.notice modem_detect: Changing the interface name from 'eth2' to 'usb4'
user.notice modem_detect: Detected modem HiLink on usb port '1-1.1' and assigned to interface 'eth3'
user.notice modem_detect: Changing the interface name from 'eth3' to 'usb1'

...wiadomo, że docelowo mr3420 nie pociągnie mi modemów ze względu na parametry, więc przesiadam się na u7621-06, a tam wyrzuca mi taki błąd (Not enough host controller resources for new device state):

# logread

kern.info kernel: [ 4313.927551] usb 2-1: new SuperSpeed USB device number 2 using xhci-mtk
kern.info kernel: [ 4313.963934] hub 2-1:1.0: USB hub found
kern.info kernel: [ 4313.968328] hub 2-1:1.0: 4 ports detected
kern.info kernel: [ 4314.107232] usb 1-1: new high-speed USB device number 16 using xhci-mtk
kern.info kernel: [ 4314.309707] hub 1-1:1.0: USB hub found
kern.info kernel: [ 4314.314024] hub 1-1:1.0: 4 ports detected
kern.err kernel: [ 4315.449126] usb 1-1-port2: Cannot enable. Maybe the USB cable is bad?
kern.info kernel: [ 4323.227134] usb 1-1.1: new high-speed USB device number 19 using xhci-mtk
kern.info kernel: [ 4323.359684] usb-storage 1-1.1:1.0: USB Mass Storage device detected
kern.info kernel: [ 4323.366475] scsi host3: usb-storage 1-1.1:1.0
kern.info kernel: [ 4323.667042] usb 1-1.4: new high-speed USB device number 20 using xhci-mtk
kern.warn kernel: [ 4323.799302] usb 1-1.4: Not enough host controller resources for new device state.
kern.err kernel: [ 4323.806875] usb 1-1.4: can't set config #1, error -12
kern.info kernel: [ 4324.317141] usb 2-1: USB disconnect, device number 2
kern.notice kernel: [ 4324.428273] scsi 3:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
kern.notice kernel: [ 4324.441876] scsi 3:0:0:1: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
kern.notice kernel: [ 4324.469348] sd 3:0:0:1: [sdb] Attached SCSI removable disk
kern.info kernel: [ 4324.667338] usb 2-1: new SuperSpeed USB device number 3 using xhci-mtk
kern.info kernel: [ 4324.703318] hub 2-1:1.0: USB hub found
kern.info kernel: [ 4324.707765] hub 2-1:1.0: 4 ports detected
kern.info kernel: [ 4324.975384] usb 1-1.1: USB disconnect, device number 19
kern.info kernel: [ 4325.377043] usb 1-1.1: new high-speed USB device number 21 using xhci-mtk
kern.warn kernel: [ 4325.508714] usb 1-1.1: Not enough host controller resources for new device state.
kern.err kernel: [ 4325.516294] usb 1-1.1: can't set config #1, error -12
kern.info kernel: [ 4332.655468] usb 1-1.4: USB disconnect, device number 20
kern.info kernel: [ 4333.567032] usb 1-1.4: new high-speed USB device number 22 using xhci-mtk
kern.info kernel: [ 4333.699727] usb-storage 1-1.4:1.0: USB Mass Storage device detected
kern.info kernel: [ 4333.706535] scsi host3: usb-storage 1-1.4:1.0
kern.info kernel: [ 4334.703592] usb 1-1.4: USB disconnect, device number 22
kern.info kernel: [ 4335.106995] usb 1-1.4: new high-speed USB device number 23 using xhci-mtk
kern.warn kernel: [ 4335.238608] usb 1-1.4: Not enough host controller resources for new device state.
kern.err kernel: [ 4335.246174] usb 1-1.4: can't set config #1, error -12
kern.info kernel: [ 4335.254656] usb 1-1.1: USB disconnect, device number 21
kern.info kernel: [ 4335.556999] usb 1-1.1: new high-speed USB device number 24 using xhci-mtk
kern.warn kernel: [ 4335.689333] usb 1-1.1: Not enough host controller resources for new device state.
kern.err kernel: [ 4335.697209] usb 1-1.1: can't set config #1, error -12
kern.info kernel: [ 4338.571247] usb 2-1: USB disconnect, device number 3
kern.info kernel: [ 4338.937429] usb 2-1: new SuperSpeed USB device number 4 using xhci-mtk
kern.info kernel: [ 4338.973068] hub 2-1:1.0: USB hub found
kern.info kernel: [ 4338.977396] hub 2-1:1.0: 4 ports detected

O co chodzi z tym problemem?
Jedyne informacje znalazłem tutaj.
Czy muszę przekompilować jądro od nowa?

Oj nie, nie może być bezpośrednio podłączone pod masę... Wtedy na GPIO będę miał zawsze masę i zawsze odczytywać będę zero.
Chyba nie do końca się zrozumieliśmy...


https://images92.fotosik.pl/221/d7b4956a996fedecgen.png


Tak jak cztery posty wyżej, dolny schemat, czyli sterowanie jedynką.
Potrzebuje dać trzy różne sygnały wejściowe +12V, więc trzy układy PC817 (lub jeden większy) i odczytać ich stany przez GPIO-3, GPIO-4 oraz GPIO-5 w routerze.


https://images89.fotosik.pl/268/fcc42ed2784294fcgen.png


Zastanawiam się, czy w takim rozwiązaniu zasilenie jednego z układów PC817 nie da mi na wszystkich GPIO-3,4,5 logicznej  jedynki.
Może powinienem użyć diody Schottkiego...
Może jeden wspólny rezystor 10k ohm dla GPIO-3,4,5...

Czy ten schemat byłby odpowiedni z wykorzystaniem:

# trzech sygnałów wejściowych (+12V przez rezystor 1k ohm)
# wspólnego zera GPIO-1 (0V)
# wspólnej jedynki GPIO-2 (3,3V)
# trzech sygnałów GPIO-3, GPIO-4, GPIO-5 do odczytu stanu


https://images89.fotosik.pl/268/fcc42ed2784294fcgen.png

Może mogę go uprościć?

392

(123 odpowiedzi, napisanych Inne)

1. Czyli to urządzenie jest również w stanie pracować w trybie QMI?
Z tego co próbowałem, to nie udało mi się połączyć na cdc-wdm0 oraz cdc-wdm1

# uqmi -d /dev/cdc-wdmX --get-serving-system
> "Failed to connect to service"

# ifstatus wan
> {
>   "up": false,
>   "pending": false,
>   "available": false,
>   "autostart": true,
>   "dynamic": false,
>   "proto": "qmi",
>   "data": {
>   },
>   "errors": [
>     {
>       "subsystem": "qmi",
>       "code": "NO_IFACE"
>     }
>   ]
> }

2. Czy interfejs 3g-wan jest jakby wirtualnym interfejsem tego modemu?
Czy jestem w stanie znaleźć jakiś punkt wspólny pomiędzy 3g-wan oraz wwan0?

393

(123 odpowiedzi, napisanych Inne)

Wrzuciłem modem na złączem mPcie, zainstalowałem karte RedBulla, konfiguracja...
/etc/config/netowrk

config interface 'wan1'
  option proto '3g'
  option device '/dev/ttyACM0'
  option apn 'internet'
  option username 'internet'
  option password 'internet'

...i ruszyło, choć bez username i password nie łączy się, a jak wiadomo w RBM te wartości APNu są puste.

I jeszcze to...

cd /sys/devices/platform/1e1c0000.xhci/usb1/1-2

ls ./*/net
> wwan0

ls ./*/usbmisc
> cdc-wdm0 
> cdc-wdm1

ls ./*/tty*
> ttyACM0
> ttyACM1
> ttyACM2

Coś dużo tego... Do czego są te "cdc-wdmX"?
Dodatkowo tworzy się wirtualny interfejs -> "3g-wan".
Jak mogę znaleźć powiązanie pomiędzy wwan0 a 3g-wan w systemie, gdybym chciał zmienić nazwę tych interfejsów znając tylko port USB, do którego ów modem jest podłączony?

394

(123 odpowiedzi, napisanych Inne)

Znalazłem coś takiego.
Może te komendy będą dobre, postrzelam w niego, zobaczę o co mu chodzi.
Ale jak widzę 350 stron doksa modemu, w którym już wiem że nie działa GPS, to trochę zniechęca

395

(123 odpowiedzi, napisanych Inne)

A wracając do pierwszego modemu -> Ericsson F5521GW 2XGNJ... Nie udaje mi się go z niczym połączyć, aktualnie karta NJU

/etc/config/network

config interface 'wan1'
        option proto '3g'
        option device '/dev/ttyACM0'
        option apn 'internet'
        option username 'internet'
        option password 'internet'

ip addr

 5:  wwan0:   <BROADCAST,MULTICAST>         mtu 1500 qdisc noop state DOWN group default qlen 1000
     link/ether 02:80:37:ec:02:00 brd ff:ff:ff:ff:ff:ff
46: 3g-wan1: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 3
     link/ppp

logread

Wed Oct 16 00:33:19 2019 daemon.notice netifd: Interface 'wan1' is now down
Wed Oct 16 00:33:19 2019 daemon.notice netifd: Interface 'wan1' is setting up now
Wed Oct 16 00:33:21 2019 daemon.notice pppd[24054]: pppd 2.4.7 started by root, uid 0
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: abort on (BUSY)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: abort on (NO CARRIER)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: abort on (ERROR)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: report (CONNECT)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: timeout set to 10 seconds
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: send (AT&F^M)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: expect (OK)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: ^M
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: *EMRDY: 1^M
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: AT&F^M^M
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: OK
Wed Oct 16 00:33:22 2019 local2.info chat[24061]:  -- got it
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: send (ATE1^M)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: expect (OK)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: ^M
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: ATE1^M^M
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: OK
Wed Oct 16 00:33:22 2019 local2.info chat[24061]:  -- got it
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: send (AT+CGDCONT=1,"IP","internet"^M)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: timeout set to 30 seconds
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: expect (OK)
Wed Oct 16 00:33:22 2019 local2.info chat[24061]: ^M
Wed Oct 16 00:33:23 2019 local2.info chat[24061]: AT+CGDCONT=1,"IP","internet"^M^M
Wed Oct 16 00:33:23 2019 local2.info chat[24061]: OK
Wed Oct 16 00:33:23 2019 local2.info chat[24061]:  -- got it
Wed Oct 16 00:33:23 2019 local2.info chat[24061]: send (ATD*99***1#^M)
Wed Oct 16 00:33:23 2019 local2.info chat[24061]: expect (CONNECT)
Wed Oct 16 00:33:23 2019 local2.info chat[24061]: ^M
Wed Oct 16 00:33:24 2019 local2.info chat[24061]: ATD*99***1#^M^M
Wed Oct 16 00:33:24 2019 local2.info chat[24061]: CONNECT
Wed Oct 16 00:33:24 2019 local2.info chat[24061]:  -- got it
Wed Oct 16 00:33:24 2019 local2.info chat[24061]: send ( ^M)
Wed Oct 16 00:33:24 2019 daemon.info pppd[24054]: Serial connection established.
Wed Oct 16 00:33:24 2019 kern.info kernel: [  723.034156] 3g-wan1: renamed from ppp0
Wed Oct 16 00:33:24 2019 daemon.info pppd[24054]: Using interface 3g-wan1
Wed Oct 16 00:33:24 2019 daemon.notice pppd[24054]: Connect: 3g-wan1 <--> /dev/ttyACM0
Wed Oct 16 00:33:25 2019 daemon.info pppd[24054]: CHAP authentication succeeded: Congratulations!
Wed Oct 16 00:33:25 2019 daemon.notice pppd[24054]: CHAP authentication succeeded
Wed Oct 16 00:33:25 2019 daemon.info pppd[24054]: LCP terminated by peer
Wed Oct 16 00:33:25 2019 daemon.notice pppd[24054]: Modem hangup
Wed Oct 16 00:33:25 2019 daemon.notice pppd[24054]: Connection terminated.
Wed Oct 16 00:33:26 2019 daemon.info pppd[24054]: Exit.
Wed Oct 16 00:33:26 2019 daemon.notice netifd: Interface 'wan1' is now down
Wed Oct 16 00:33:26 2019 daemon.notice netifd: Interface 'wan1' is setting up now

Zrobiłem to tak, bardziej uniwersalnie...

X=0
TIMEOUT=20
while true
do
  PS_LOGD=$( /bin/ps | /bin/grep "/sbin/logd" | /usr/bin/head -n 1 | /usr/bin/awk '{print $5}' )
  if [ "$PS_LOGD" == "/sbin/logd" ] || [ "$X" -eq "$TIMEOUT" ]; then
    break
  else
    X=$(( $X + 1 ))
    /bin/sleep 1
  fi
done

Wystarczyło 6 sekund na wstanie usługi.
Kolejne dodawane w późniejszym czasie modemy nie będą niepotrzebnie opóźniane na sztywno wpisanym "sleep 10".
Oto wyniki:

# logread | grep modem_detect
> 20:55:00 modem_detect: Modem QMI on usb port '1-1' and assigned to interface 'wwan0' and '/dev/cdc-wdm0'
> 20:55:00 modem_detect: Changing the interface name from 'wwan0' to 'usb0'
> 20:55:00 modem_detect: Symlink has been created for the USB device '/dev/cdc-wdm0' to '/dev/modem-usb0'
> 20:55:11 modem_detect: Interface mobile (usb0) is up!
> 20:55:17 modem_detect: Interface mobile (usb0) is up!

Wrócę jeszcze do loggera... Jak mogę sprawdzić, czy mogę już wpisywać logi, czy usługa już wstała i jest gotowa?
Wystarczyłoby opóźnić o parę sekund tego hotpluga.

Na chwilę obecną zrobiłem tak:

ifstatus mobile | grep '"up": '
ifstatus mobile_4 | grep '"up": '

... i jeśli mój interface np. "mobile" lub "mobile_4" będzie miał status '"up": false' to podnoszę interface "mobile".
Tak to bynajmniej działa...

Ufff, ależ się napracowałem. Skrypt testowałem na:
- SimCOM 7600E-H [ wwan0 -> usbX   oraz   /dev/cdc-wdm0 -> /dev/modem-usbX ]
- Huawei E3372 HiLink [ eth2 -> usbX ]
- Ericsson F5521GW 2XGNJ (nie udało mi się go znowu połączyć z ISP, działa losowo jak chce)


Plik: /etc/hotplug.d/usb/99-modem_detect.sh

#!/bin/sh


CONFIGS=" \
  usb0;1-1 \
  usb1;1-1.1 \
  usb2;1-1.2 \
  usb3;1-1.3 \
  usb4;1-1.4 \
"


#echo "" >> /tmp/_modem_detect.txt
#env >> /tmp/_modem_detect.txt

#if ( [ "$ACTION" == "add" ] || [ "$ACTION" == "bind" ] ) && [ "$DEVTYPE" == "usb_interface" ] && [ "$DRIVER" == "cdc_ether" ]; then
if ( ( [ "$ACTION" == "add" ] || [ "$ACTION" == "bind" ] ) && [ "$DEVTYPE" == "usb_interface" ] && ( [ "$DRIVER" == "cdc_ether" ] || [ "$DRIVER" == "qmi_wwan" ] ) ) || ( [ "$ACTION" == "remove" ] ); then
  
  PORT=$( echo $DEVICENAME | cut -d ":" -f1 )
  URL_INTERFACE=$( /bin/ls -ld /sys"$DEVPATH"/../*/net | /usr/bin/head -n 1 | /usr/bin/awk '{print $9}' )
  INTERFACE=$( /bin/ls -l $URL_INTERFACE | /usr/bin/head -n 1 | /usr/bin/awk '{print $9}' )
  URL_USB=$( /bin/ls -ld /sys"$DEVPATH"/../*/usbmisc | /usr/bin/head -n 1 | /usr/bin/awk '{print $9}' )
  USB=$( /bin/ls -l $URL_USB | /usr/bin/head -n 1 | /usr/bin/awk '{print $9}' )
  
  
  if ( [ "$ACTION" == "add" ] || [ "$ACTION" == "bind" ] ) && [ "$DEVTYPE" == "usb_interface" ] && ( [ "$DRIVER" == "cdc_ether" ] || [ "$DRIVER" == "qmi_wwan" ] ); then
    
    if [ "$DRIVER" == "cdc_ether" ]; then
      /usr/bin/logger -t modem_detect ""
      /usr/bin/logger -t modem_detect "Detected modem HiLink on usb port $PORT and assigned to interface $INTERFACE"
      
    elif [ "$DRIVER" == "qmi_wwan" ]; then
      /usr/bin/logger -t modem_detect ""
      /usr/bin/logger -t modem_detect "Detected modem QMI on usb port $PORT and assigned to interface $INTERFACE and /dev/$USB"
      
    fi
    
  fi
  
  
  for CONFIG in $CONFIGS
  do
    
    CONFIG_INTERFACE=$( echo $CONFIG | cut -d ';' -f1 )
    CONFIG_DEVICENAME=$( echo $CONFIG | cut -d ';' -f2 )
    
    
    if ( [ "$ACTION" == "add" ] || [ "$ACTION" == "bind" ] ) && [ "$DEVTYPE" == "usb_interface" ] && ( [ "$DRIVER" == "cdc_ether" ] || [ "$DRIVER" == "qmi_wwan" ] ); then
      
      if [ ! -d "/sys/class/net/$CONFIG_INTERFACE" ] && [ "$CONFIG_DEVICENAME" == "$PORT" ]; then
        
        if [ "$DRIVER" == "cdc_ether" ]; then
          
          echo "" >> /tmp/_modem_detect.txt
          echo "Detect modem HiLink!" >> /tmp/_modem_detect.txt
          echo "     PORT: "$PORT >> /tmp/_modem_detect.txt
          echo "INTERFACE: "$INTERFACE >> /tmp/_modem_detect.txt
          
          /usr/bin/logger -t modem_detect "Changing the interface name from $INTERFACE to $CONFIG_INTERFACE"
          
          /sbin/ip link set $INTERFACE down
          /sbin/ip link set $INTERFACE name $CONFIG_INTERFACE
          /sbin/ip link set $CONFIG_INTERFACE up
          
          /etc/init.d/network restart
          /etc/init.d/openvpn restart
          
        fi
        
        if [ "$DRIVER" == "qmi_wwan" ]; then
          
          echo "" >> /tmp/_modem_detect.txt
          echo "Detect modem QMI!" >> /tmp/_modem_detect.txt
          echo "     PORT: "$PORT >> /tmp/_modem_detect.txt
          echo "INTERFACE: "$INTERFACE >> /tmp/_modem_detect.txt
          echo "      USB: "$USB >> /tmp/_modem_detect.txt
          
          /usr/bin/logger -t modem_detect "Changing the interface name from $INTERFACE to $CONFIG_INTERFACE"
          /usr/bin/logger -t modem_detect "Symlink has been created for the USB device '/dev/$USB' to '/dev/modem-$CONFIG_INTERFACE'"
          
          /sbin/ip link set $INTERFACE down
          /sbin/ip link set $INTERFACE name $CONFIG_INTERFACE
          /sbin/ip link set $CONFIG_INTERFACE up
          
          /bin/rm /dev/modem-$CONFIG_INTERFACE
          /bin/ln -s /dev/$USB /dev/modem-$CONFIG_INTERFACE
          
          /usr/bin/killall uqmi
          /etc/init.d/network restart
          /etc/init.d/openvpn restart
          
          /bin/sleep 5
          INTERFACE_LOGICAL=$( /sbin/uci show network | /bin/grep "/dev/modem-$CONFIG_INTERFACE" | /usr/bin/head -n 1 | /usr/bin/cut -d "." -f2 )
          /usr/bin/killall uqmi
          /sbin/ifup $INTERFACE_LOGICAL
          
        fi
        
      fi
      
    fi
    
    
    if [ "$ACTION" == "remove" ]; then
      
      if [ -L "/dev/modem-$CONFIG_INTERFACE" ] && [ "$CONFIG_DEVICENAME" == "$PORT" ]; then
        
        echo "" >> /tmp/_modem_detect.txt
        echo "Remove modem QMI!" >> /tmp/_modem_detect.txt
        echo "     PORT: "$PORT >> /tmp/_modem_detect.txt
        
        /bin/rm "/dev/modem-$CONFIG_INTERFACE"
        
      fi
      
    fi
    
  done
  
fi

W czasie tworzenia skryptu stwierdziłem, że dobrze by było, gdyby był on bardziej uniwersalny dla różnych modemów.
Będzie mi miło, jeśli przetestujesz i powiesz czy u Ciebie coś nie działa...


1. Sprawdzanie jak widoczny jest modem w systemie

logread | grep "modem_detect"

2. Konfiguracja

CONFIGS=" \
  nazwa_interfejsu_1;numer_portu_1 \
  nazwa_interfejsu_2;numer_portu_2 \
  nazwa_interfejsu_3;numer_portu_3 \
"

3. Interface fizyczny

ip addr | grep "usb"

4. Symlink

ls /dev/modem*


1. Zastanawiam się, że skrypt może niepożądanie zadziałać na modemach QMI z kilkoma interfejsami blokowymi (/dev/*)

2. Zauważyłem, że podczas restartu routera "sleep" w skrypcie działa dobrze, jeśli jest ustawiony w:
- MR3420v2 na 5 sekund
- u7621-06 na 5 sekund
- u7628-01 na 20-60 sekund

Co może być przyczyną? Może mogę jakimś działaniem policzyć wartość X sekund?

Modem QMI przypisany jest nie przez interfejs fizyczny (np. ethX), tylko przez urządzenie blokowe cdc-wdm0...
Chyba powinienem zrobić symlinka do np. /dev/modem_usb2