Modem LTE HUAWEI E3372 bez usb-modeswitch

Spis treści

Ten artykuł, podobnie jak kilka poprzednich, powstał w oparciu o moje badania przeprowadzane nad modemem LTE HUAWEI E3372s-153 w wersji NON-HiLink. Niby rozwiązań dotyczących konfiguracji modemów pod linux'em jest pełno w sieci ale zasadniczą różnicą niżej opisanego sposobu jest kompletne pozbycie się pakietu usb-modeswitch . Dla przypomnienia, ten pakiet odpowiada za przełączanie trybu modemu. Zwykle są dostępne dwa tryby. Pierwszy z nich jest w stanie dostarczyć sterowniki (pod windows), po instalacji których modem przechodzi w drugi tryb, już ten właściwy. Na linux'ach to przełączanie jest realizowane via usb-modeswitch . I tu się nasuwa pytanie, czy ten modem faktycznie trzeba przełączać? A może istnieje sposób, który by automatycznie ustawił modem na taki tryb, który linux'y lubią najbardziej? Okazało się, że istnieje i w tym wpisie zostanie on przestawiony.

Czy mogę zrezygnować z pakietu usb-modeswitch

Na dobrą sprawę to nie wiem czy wszystkie modemy da się dostosować w sposób opisany poniżej ale jeśli taki modem obsługuje polecenia AT, a większość z nich obsługuje, to bez problemu można odinstalować ten cały pakiet usb-modeswitch i przy pomocy poleceń AT przestawić tryb modemu na stałe. Ustawienia będą honorowane między kolejnymi restartami systemu, bo zmiany zostaną zapisane bezpośrednio w modemie. Trzeba to wziąć pod uwagę, gdy chcemy uruchamiać modem na windowsach.

Zmiana trybu modemu

Polecenie, które nasz modem musi umieć obsłużyć to AT^SETPORT . To w jaki sposób będziemy próbować to polecenie przesłać do modemu zależy głównie od nas samych. Możemy bezpośrednio zapisać urządzenie /dev/usbTTY0 , skorzystać z dedykowanego oprogramowania do obsługi modemów, np. cu , socat czy też minicom . Możemy także doinstalować wvdial i przy pomocy jego pliku konfiguracyjnego porozmawiać sobie z modemem. W tym przypadku został wykorzystany ostatni sposób.

Edytujemy zatem plik /etc/wvdial.conf i dodajemy te poniższe bloki kodu:

[Dialer Defaults]
Modem Type = Analog Modem
Modem = /dev/ttyUSB1
ISDN = 0
Baud = 9600
Dial Command = ATDT
Dial Attempts = 3
Dial Timeout = 30
Auto Reconnect = 1
Stupid mode = 1
Auto DNS = 0
Check DNS = 1
DNS Test1 = wp.pl
DNS Test2 = google.com
Check Def Route = 1
Idle Seconds = 0
Phone = *99#
Init1 = ATZ
Init2 = ATQ0 V1 E0 H0 S0=0

[Dialer modem-start]
Init1 = AT+CFUN=1

[Dialer modem-stop]
Modem = /dev/ttyUSB0
Init1 = AT+CFUN=0

[Dialer info-device]
Modem = /dev/ttyUSB0
Init5 = AT^SETPORT=?

[Dialer info-config]
Modem = /dev/ttyUSB0
Init5 = AT^SETPORT?

[Dialer set-iface]
Init4 = AT^SETPORT="FF;12,10,16,A2"
Init5 = AT^RESET

[Dialer red_bull_mobile-lte]
Init4 = AT^SYSCFGEX="03",3FFFFFFF,1,2,800C5,,
Init6 = AT+CGDCONT=1,"IPV4V6","internet"
Username = "blank"
Password = "blank"

Zapisujemy konfigurację, podpinamy modem do portu USB i wydajemy w terminalu to poniższe polecenie:

# wvdial modem-start info-device
...
--> Sending: AT^SETPORT=?

^SETPORT:3: 3G DIAG
^SETPORT:10: 4G MODEM
^SETPORT:1: 3G MODEM
^SETPORT:12: 4G PCUI
^SETPORT:13: 4G DIAG
^SETPORT:5: 3G GPS
^SETPORT:14: 4G GPS
^SETPORT:A: BLUE TOOTH
^SETPORT:16: NCM
^SETPORT:A1: CDROM
^SETPORT:A2: SD

Wyżej widzimy listę portów modemu HUAWEI E3372s-153. By sprawdzić aktualną ich konfigurację, wpisujemy w terminal poniższe polecenie:

# wvdial modem-start info-config
...
--> Sending: AT^SETPORT?

^SETPORT:A1,A2;12,10,16,A1,A2

Składnia wyjścia powyższego polecenia jest następująca: ^SETPORT:<primary composition>;<secondary composition>" . Mamy tutaj dwie kompozycje, jedna z nich jest aplikowana w jednym trybie modemu, druga zaś w drugim. Niewiele osób wie, że ten pierwszy tryb można całkowicie wyłączyć, co zapobiega przełączaniu modemu na drugi tryb. W efekcie czego, modem od razu jest startowany w drugim trybie i odpada potrzeba stosowania pakietu usb-modeswitch . By wyłączyć ten pierwszy tryb, który jest dla linux'a zupełnie zbędny, w terminalu wydajemy to poniższe polecenie:

# wvdial modem-start set-iface
...
--> Sending: AT^SETPORT="FF;12,10,16,A2"
OK
--> Sending: AT^RESET
OK

Kluczową rolę w bloku [Dialer set-iface] odgrywa FF w pierwszym trybie modemu. Możemy także wyłączyć CD-ROM ( A1 ) w drugim trybie, bo i tak niezbyt się on przydaje, a w logu generuje tylko sporo błędów. Po chwili modem powinien się uruchomić ponownie, a w logu powinniśmy zaobserwować te poniższe komunikaty:

kernel: usb 2-1.3: new high-speed USB device number 11 using ehci-pci
kernel: usb 2-1.3: New USB device found, idVendor=12d1, idProduct=15b6
kernel: usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel: usb 2-1.3: Product: HUAWEI_MOBILE
kernel: usb 2-1.3: Manufacturer: HUAWEI_MOBILE
kernel: usb 2-1.3: SerialNumber: 0123456789ABCDEF
kernel: option 2-1.3:1.0: GSM modem (1-port) converter detected
kernel: usb 2-1.3: GSM modem (1-port) converter now attached to ttyUSB0
kernel: option 2-1.3:1.1: GSM modem (1-port) converter detected
kernel: usb 2-1.3: GSM modem (1-port) converter now attached to ttyUSB1
kernel: huawei_cdc_ncm 2-1.3:1.2: MAC-Address: 00:1e:10:1f:00:00
kernel: huawei_cdc_ncm 2-1.3:1.2: setting rx_max = 16384
kernel: huawei_cdc_ncm 2-1.3:1.2: NDP will be placed at end of frame for this device.
kernel: huawei_cdc_ncm 2-1.3:1.2: cdc-wdm0: USB WDM device
kernel: huawei_cdc_ncm 2-1.3:1.2 wwan0: register 'huawei_cdc_ncm' at usb-0000:00:1d.0-1.3, Huawei CDC NCM device, 00:1e:10:1f:00:00
kernel: usb-storage 2-1.3:1.3: USB Mass Storage device detected
kernel: scsi host10: usb-storage 2-1.3:1.3
mtp-probe[14361]: checking bus 2, device 11: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3"
mtp-probe[14361]: bus: 2, device: 11 was not an MTP device
kernel: scsi 10:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
kernel: sd 10:0:0:0: Attached scsi generic sg2 type 0
kernel: sd 10:0:0:0: [sdb] Attached SCSI removable disk

Jak widać, nie ma przełączania trybu. Połączenie z siecią nawiązujemy w standardowy sposób, tj:

# wvdial modem-start red_bull_mobile-lte

Modemy obsługujące tryb NDIS (NCM)

Może się zdarzyć tak, że w nasze łapki wpadnie modem, który może działać w trybie NDIS (NCM). W takim przypadku możemy także zrezygnować z instalacji pakietu wvdial i skonfigurować sobie interfejs wwan0 ręcznie. Opis konfiguracji modemu w trybie NDIS został przedstawiony w osobnym artykule.

Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.