internet – Ubuntu 20.04 and Huawei Mobile Stick E3372 – Ask Ubuntu

g anyenna obluhatel offset Новости

How to enable broadband connection with huawei e3372h on ubuntu server

Important note: after entering this “question” I did some testing and realized I am able to enable the broadband connection with newer version of Ubuntu Server – 15.10. The procedure is described below. Anyway, the reason why it does not work in 14.04.04LTS is not known to me (maybe the functionality is not covered in its kernel version)


I have Huawei E3372H which I set to “modem” mode, so it does not do NAT and behaves as a modem. It works with Ubuntu 15.10 (desktop). Network manager shows possibility for creating a broadband connection and I just fill APN “internet” and that’s it – after enabling this connection it works perfectly.

But how to connect my Ubuntu Server 14.04 on to the internet using this USB stick when there is no NetworkManager installed?

Here is some basic info about the stick:

lsusb shows it as:

Bus 002 Device 009: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard

This interface is being created once the stick is connected to my Ubuntu Desktop PC:

wwx001e101f0000 Link encap:Ethernet  HWaddr 00:1e:10:1f:00:00  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

I tried following this (https://johnlewis.ie/mobile-broadband-from-the-command-line-in-ubuntu/) procedure, but unfortunately I ended with no success:

Apr  9 16:32:32 test_server pppd[20296]: pppd 2.4.5 started by jim, uid 0
Apr  9 16:32:33 test_server chat[20298]: abort on (BUSY)
Apr  9 16:32:33 test_server chat[20298]: abort on (VOICE)
Apr  9 16:32:33 test_server chat[20298]: abort on (NO CARRIER)
Apr  9 16:32:33 test_server chat[20298]: abort on (NO DIALTONE)
Apr  9 16:32:33 test_server chat[20298]: abort on (NO DIAL TONE)
Apr  9 16:32:33 test_server chat[20298]: send (ATZ^M)
Apr  9 16:32:33 test_server chat[20298]: expect (OK)
Apr  9 16:32:33 test_server chat[20298]: ^M
Apr  9 16:32:33 test_server chat[20298]: OK
Apr  9 16:32:33 test_server chat[20298]:  -- got it
Apr  9 16:32:33 test_server chat[20298]: send (AT CGDCONT=1,"IP","internet"^M)
Apr  9 16:32:34 test_server chat[20298]: expect (OK)
Apr  9 16:32:34 test_server chat[20298]: ^M
Apr  9 16:32:34 test_server chat[20298]: ^M
Apr  9 16:32:34 test_server chat[20298]: OK
Apr  9 16:32:34 test_server chat[20298]:  -- got it
Apr  9 16:32:34 test_server chat[20298]: send (ATDT*99#^M)
Apr  9 16:32:34 test_server chat[20298]: expect (CONNECT)
Apr  9 16:32:34 test_server chat[20298]: ^M
Apr  9 16:32:34 test_server chat[20298]: ^M
Apr  9 16:32:34 test_server chat[20298]: CONNECT
Apr  9 16:32:34 test_server chat[20298]:  -- got it
Apr  9 16:32:34 test_server chat[20298]: send (^M)
Apr  9 16:32:34 test_server pppd[20296]: Script /usr/sbin/chat -v -f /etc/chatscripts/pap -T *99# finished (pid 20297), status = 0x0
Apr  9 16:32:34 test_server pppd[20296]: Serial connection established.
Apr  9 16:32:34 test_server pppd[20296]: using channel 10
Apr  9 16:32:34 test_server pppd[20296]: Using interface ppp0
Apr  9 16:32:34 test_server pppd[20296]: Connect: ppp0 <--> /dev/ttyUSB0
Apr  9 16:32:35 test_server pppd[20296]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xce74b2a1> <pcomp> <accomp>]
Apr  9 16:33:02 test_server pppd[20296]: message repeated 9 times: [ sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xce74b2a1> <pcomp> <accomp>]]
Apr  9 16:33:05 test_server pppd[20296]: LCP: timeout sending Config-Requests
Apr  9 16:33:05 test_server pppd[20296]: Connection terminated.
Apr  9 16:33:06 test_server pppd[20296]: Modem hangup

Edit:
I found out working procedure, but unfortunately it works just on my desktop with Ubuntu 15.10:

echo -e "AT^NDISDUP=1,1,"internet"r" > /dev/ttyUSB0
dhclient -v wwx001e101f0000

–> Using the commands above will bring up working mobile broadband on wwx001e101f0000 ethernet interface.

Unfortunately on my Ubuntu Server 14.04 via command dhclient -v wwan0an ip address is not provided although the modem is connected to the LTE network (blue light on). It is very strange.

Edit2:
I found out the issue is most likely in Ubuntu 14.04 kernel version. I did a test – installed new “test” Ubuntu Server 14.04 just for this test – the behavior was exactly the same as on my “production” Ubuntu Server 14.04 – no IP acquired using dhclient wwan0.

Then I installed new “test” Ubuntu Server 15.10 and in this installation it works perfectly. So I assume from some reason this ncm interface does not work properly. I noticed this difference between the 2 servers:

Ubuntu 14.04 Dmesg:

Apr  9 19:32:13 ubuntu kernel: [27410.720039] usb 1-4: new high-speed USB device number 18 using ehci-pci
Apr  9 19:32:13 ubuntu kernel: [27410.861148] usb 1-4: New USB device found, idVendor=12d1, idProduct=1506
Apr  9 19:32:13 ubuntu kernel: [27410.861154] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Apr  9 19:32:13 ubuntu kernel: [27410.861159] usb 1-4: Product: HUAWEI_MOBILE
Apr  9 19:32:13 ubuntu kernel: [27410.861163] usb 1-4: Manufacturer: HUAWEI_MOBILE
Apr  9 19:32:13 ubuntu kernel: [27410.898395] option 1-4:1.0: GSM modem (1-port) converter detected
Apr  9 19:32:13 ubuntu kernel: [27410.898552] usb 1-4: GSM modem (1-port) converter now attached to ttyUSB0
Apr  9 19:32:13 ubuntu kernel: [27410.943023] huawei_cdc_ncm 1-4:1.1: MAC-Address: 00:1e:10:1f:00:00
Apr  9 19:32:13 ubuntu kernel: [27410.943029] huawei_cdc_ncm 1-4:1.1: setting rx_max = 16384
Apr  9 19:32:13 ubuntu kernel: [27410.968250] huawei_cdc_ncm 1-4:1.1: cdc-wdm0: USB WDM device
Apr  9 19:32:13 ubuntu kernel: [27410.968657] huawei_cdc_ncm 1-4:1.1 wwan0: register 'huawei_cdc_ncm' at usb-0000:00:1a.7-4, Huawei CDC 
NCM device, 00:1e:10:1f:00:00

Ubuntu 15.10 Dmesg:

Apr  9 22:29:20 ubuntu kernel: [   64.269728] usb 2-1.2: new high-speed USB device number 7 using ehci-pci
Apr  9 22:29:20 ubuntu kernel: [   64.367373] usb 2-1.2: New USB device found, idVendor=12d1, idProduct=1506
Apr  9 22:29:20 ubuntu kernel: [   64.367379] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Apr  9 22:29:20 ubuntu kernel: [   64.367382] usb 2-1.2: Product: HUAWEI_MOBILE
Apr  9 22:29:20 ubuntu kernel: [   64.367384] usb 2-1.2: Manufacturer: HUAWEI_MOBILE
Apr  9 22:29:21 ubuntu kernel: [   64.459900] usbcore: registered new interface driver usbserial
Apr  9 22:29:21 ubuntu kernel: [   64.459910] usbcore: registered new interface driver usbserial_generic
Apr  9 22:29:21 ubuntu kernel: [   64.459918] usbserial: USB Serial support registered for generic
Apr  9 22:29:21 ubuntu kernel: [   64.507601] usbcore: registered new interface driver option
Apr  9 22:29:21 ubuntu kernel: [   64.507614] usbserial: USB Serial support registered for GSM modem (1-port)
Apr  9 22:29:21 ubuntu kernel: [   64.507691] option 2-1.2:1.0: GSM modem (1-port) converter detected
Apr  9 22:29:21 ubuntu kernel: [   64.507963] usb 2-1.2: GSM modem (1-port) converter now attached to ttyUSB0
Apr  9 22:29:21 ubuntu kernel: [   64.535895] usbcore: registered new interface driver cdc_ncm
Apr  9 22:29:21 ubuntu kernel: [   64.542625] usbcore: registered new interface driver cdc_wdm
Apr  9 22:29:21 ubuntu kernel: [   64.579935] huawei_cdc_ncm 2-1.2:1.1: MAC-Address: 00:1e:10:1f:00:00
Apr  9 22:29:21 ubuntu kernel: [   64.579940] huawei_cdc_ncm 2-1.2:1.1: setting rx_max = 16384
Apr  9 22:29:21 ubuntu kernel: [   64.587318] huawei_cdc_ncm 2-1.2:1.1: NDP will be placed at end of frame for this device.
Apr  9 22:29:21 ubuntu kernel: [   64.587427] huawei_cdc_ncm 2-1.2:1.1: cdc-wdm1: USB WDM device
Apr  9 22:29:21 ubuntu kernel: [   64.587579] huawei_cdc_ncm 2-1.2:1.1 wwan0: register 'huawei_cdc_ncm' at usb-0000:00:1d.0-1.2, Huawei CDC NC
M device, 00:1e:10:1f:00:00

So in Ubuntu 15.10 there are additional “usbcore” and “usbserial” entries logged and also eth interface wwan0 is being renamed to wwx001e101f0000.
I will try to upgrade kernel of my Ubuntu 14.04 to the higher version and will check whether it will work there.

Important note:
When doing my tests I installed Ubuntu Server 14.04.2 iso image. This one had older 3.x kernel version. Now I downloaded 14.04.4 from Ubuntu website and after installation I can see it had kernel 4.2. Interesting is on my “production” server I have Ubuntu Server version 14.04.4, but the Kernel there is 3.16: Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.16.0-53-generic x86_64). I update the server on regular basis, but it looks from some reason linux-generci-lts-wily is included in the downloaded 14.04.4, but is not present in my 14.04.4 which had been several times updated.

New installation of 14.04.4:

$ sudo dpkg -l linux-generic-lts-*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                          Version             Architecture        Description
   -=============================-===================-===================-================================================================
ii  linux-generic-lts-wily        4.2.0.27.21         amd64               Complete Generic Linux kernel and headers

So apt-get install linux-generic-lts-wily solved the problem on my Ubuntu Server – it installed 4.2 kernel and with this one it works properly.

Как заставить работать 3g модем e3372 в kubuntu 15.04?

Есть ОС Kubuntu 15.04 и Windows 7 на одном компе.
В Windows модем прекрасно работает, а в Kubuntu отказывается соединятся.
Создавал “Мобильное” соединение. Предыдущий модем(3G) работал нормально.
При попытке изменить созданное соединение происходит краш редактора соединений.
При попытке подключения зависает на “Получение сетевого адреса”. Вопрос: Как заставить работать этот модем?
P.S. Сидиром и карта, и сам модем определяются нормально. В lsusb он есть.
Вывод lsusb

    Bus 001 Device 005: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x12d1 Huawei Technologies Co., Ltd.
  idProduct          0x1506 E398 LTE/UMTS/GSM Modem/Networkcard
  bcdDevice            1.02
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          221
    bNumInterfaces          5
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol     18 
      iInterface              0 
      ** UNRECOGNIZED:  05 24 00 10 01
      ** UNRECOGNIZED:  04 24 02 02
      ** UNRECOGNIZED:  05 24 01 00 00
      ** UNRECOGNIZED:  05 24 06 00 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      1 
      iInterface              0 
      ** UNRECOGNIZED:  05 24 00 10 01
      ** UNRECOGNIZED:  04 24 02 02
      ** UNRECOGNIZED:  05 24 01 00 01
      ** UNRECOGNIZED:  05 24 06 00 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x000a  1x 10 bytes
        bInterval               9
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol     22 
      iInterface              8 
      ** UNRECOGNIZED:  05 24 00 10 01
      ** UNRECOGNIZED:  06 24 1a 00 01 1f
      ** UNRECOGNIZED:  0d 24 0f 0a 0f 00 00 00 ea 05 03 00 01
      ** UNRECOGNIZED:  05 24 06 02 02
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x86  EP 6 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               5
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol     22 
      iInterface              9 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x86  EP 6 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               5
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x87  EP 7 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x88  EP 8 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x06  EP 6 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
вывод dmesg
    [  477.584249] usb 1-2.4: new high-speed USB device number 8 using xhci_hcd
[  477.689009] usb 1-2.4: New USB device found, idVendor=12d1, idProduct=1506
[  477.689017] usb 1-2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  477.689022] usb 1-2.4: Product: HUAWEI_MOBILE
[  477.689026] usb 1-2.4: Manufacturer: HUAWEI_MOBILE
[  477.690681] option 1-2.4:1.0: GSM modem (1-port) converter detected
[  477.690847] usb 1-2.4: GSM modem (1-port) converter now attached to ttyUSB1
[  477.691019] option 1-2.4:1.1: GSM modem (1-port) converter detected
[  477.691158] usb 1-2.4: GSM modem (1-port) converter now attached to ttyUSB2
[  477.693697] huawei_cdc_ncm 1-2.4:1.2: MAC-Address: 00:1e:10:1f:00:00
[  477.693705] huawei_cdc_ncm 1-2.4:1.2: setting rx_max = 16384
[  477.693975] huawei_cdc_ncm 1-2.4:1.2: cdc-wdm0: USB WDM device
[  477.694525] huawei_cdc_ncm 1-2.4:1.2 wwan0: register 'huawei_cdc_ncm' at usb-0000:00:14.0-2.4, Huawei CDC NCM device, 00:1e:10:1f:00:00
[  477.695041] usb-storage 1-2.4:1.3: USB Mass Storage device detected
[  477.695162] scsi host8: usb-storage 1-2.4:1.3
[  477.695526] usb-storage 1-2.4:1.4: USB Mass Storage device detected
[  477.695617] scsi host9: usb-storage 1-2.4:1.4
[  478.692357] scsi 8:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
[  478.692415] scsi 9:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
[  478.693379] sr 8:0:0:0: [sr0] scsi-1 drive
[  478.695619] sr 8:0:0:0: Attached scsi CD-ROM sr0
[  478.696858] sr 8:0:0:0: Attached scsi generic sg1 type 5
[  478.697348] sd 9:0:0:0: Attached scsi generic sg2 type 0
[  478.700420] sd 9:0:0:0: [sdb] Attached SCSI removable disk
[  478.722241] sr 8:0:0:0: [sr0] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[  478.722251] sr 8:0:0:0: [sr0] Sense Key : Medium Error [current]
[  478.722257] sr 8:0:0:0: [sr0] Add. Sense: Unrecovered read error
[  478.722260] sr 8:0:0:0: [sr0] CDB: 
[  478.722263] Read(10): 28 00 00 00 91 fe 00 00 02 00
[  478.722281] blk_update_request: critical medium error, dev sr0, sector 149496
[  478.722629] sr 8:0:0:0: [sr0] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[  478.722634] sr 8:0:0:0: [sr0] Sense Key : Medium Error [current]
[  478.722638] sr 8:0:0:0: [sr0] Add. Sense: Unrecovered read error
[  478.722641] sr 8:0:0:0: [sr0] CDB: 
[  478.722644] Read(10): 28 00 00 00 91 fe 00 00 02 00
[  478.722658] blk_update_request: critical medium error, dev sr0, sector 149496
[  478.722663] Buffer I/O error on dev sr0, logical block 18687, async page read
[  478.778839] sr 8:0:0:0: [sr0] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[  478.778846] sr 8:0:0:0: [sr0] Sense Key : Medium Error [current]
[  478.778850] sr 8:0:0:0: [sr0] Add. Sense: Unrecovered read error
[  478.778853] sr 8:0:0:0: [sr0] CDB: 
[  478.778855] Read(10): 28 00 00 00 91 fc 00 00 02 00
[  478.778867] blk_update_request: critical medium error, dev sr0, sector 149488
[  478.779211] sr 8:0:0:0: [sr0] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[  478.779215] sr 8:0:0:0: [sr0] Sense Key : Medium Error [current]
[  478.779218] sr 8:0:0:0: [sr0] Add. Sense: Unrecovered read error
[  478.779221] sr 8:0:0:0: [sr0] CDB: 
[  478.779222] Read(10): 28 00 00 00 91 fc 00 00 02 00
[  478.779233] blk_update_request: critical medium error, dev sr0, sector 149488
[  478.779236] Buffer I/O error on dev sr0, logical block 18686, async page read
[  487.830183] huawei_cdc_ncm 1-2.4:1.2 wwan0: kevent 12 may have been dropped
[  487.830746] huawei_cdc_ncm 1-2.4:1.2 wwan0: kevent 12 may have been dropped

Настройка 3g-модема в linux • – huawei devices

Настройка 3G-модема в Linux •Продолжение. Начало здесь.

Для тех, кто недавно присоединился к радиоканалу «Боян-FM» читателям моей уютненькой™, напомню, что затеял всё это ради того, чтобы построить достаточно скоростной IPSec-канал через «Йоту». А для этого, в свою очередь, необходимо получить прямой «честный» IP с SIM-карты на каком-либо сетевом интерфейсе, притом минуя PPP.

Конкретно я использую модем iRZ TL21, построенный на базе модуля Sierra (он же AirPrime) MC7710, в составе которого находится чип Qualcomm MDM9200. Система — стабильный дистрибутив Debian (в данном случае Wheezy).

Сразу оговорюсь, что в какой-нибудь свежей Ubuntu данный модем заработает прям «из коробки»: его хорошо понимает NetworkManager. Но мы ж реальные пацаны, у нас реальный сервак, GUI на нём нетути. Да и подниматься линк должен сам по себе при старте системы. Поэтому пойти по простому пути не получится, придётся никакой механизма всё вручную.

Итак, суём модем в USB-порт, заправшиваем «lsusb» и видим…

Bus 006 Device 002: ID 03f0:1027 Hewlett-Packard Virtual keyboard and mouse
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 003: ID 1199:68a2 Sierra Wireless, Inc. MC7710 Modem
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Ага, третья строчка — вот оно как раз самое. Выделенные жирным шрифтом цифирки нам потом ещё пригодятся. Ну что-ж, вроде как всё хорошо. Смотрим «ls /dev/ttyUSB*» и видим… а ничего мы не видим. Как говорится, «***в панама». Нету псевдотерминалов.

Иногда затык может заключаться в том, что некоторые модемы «тянут» за собой виртуальный CD-ROM, на котором типа лежат типа драйвера для этого модема. И пока не пнёшь этот модем правильной AT-командой, собственно в модем он не превратится. А будет и дальше себе с настойчивостью кретина прикидываться CD-приводом. Ну это лечится элементарной установкой пакета «usb-modeswitch»: «apt-get install usb-modeswitch«.

Ладно, установили. Но псевдотерминалы всё равно не появились. Чешем репу. И вспоминаем, что в Debian-е по умолчанию идёт довольно боянистый софт, и нужных драйверов «из коробки» нет. Чтобы не париться уж слишком сильно, можно тупо поставить свежее ядрышко из backports. На момент написания этого псто оно было версии 3.16:

Перезагрузились. Смотрим «modinfo qmi_wwan» и «modinfo sierra_net«. Если выделенные жирным циферки из выхлопа lsusb (см. выше) оказались в одном из двух списков, то всё пучком. Можем продолжать. Если же нет, увы. Идем искать драйвера к нашему «мопеду». Хорошо если найдём. А если не найдем — значит «упс». В моём случае всё ништяк:

Внезапно, и псевдотерминалы появились в большом количестве:

Дальше тыкаем каким-нибудь minicom-ом в каждый терминал по очереди («minicom -D /dev/ttyUSB0«, «minicom -D /dev/ttyUSB1» и т.п.) и смотрим который из них откликнется на какой нибудь «AT!GSTATUS?«, тот и есть нужный нам. Заодно проверим, что модем сцепился с сотовой сетью.

RSSI (dBm): -75 Tx Power: 0
RSRP (dBm): -103 TAC: 26BD (9917)
RSRQ (dB): -9 Cell ID: 0F30DB00 (254860032)
SINR (dB): 7.2

OK

Вроде работает. Тут наступает небольшая засада. В дальнейшем нам придётся из различных скриптов ссылаться на найденный псевдотерминал. Но никто не может гарантировать нам, что после очередной перезагрузки сервера имя устройства останется таким же. Поэтому придётся помучать udev для того чтобы создать символическую ссылку (symlink), дабы увековечить нашу бесценную находку. Для начала смотрим к каким атрибутам мы могли бы привязаться.

Копипаста ниже была взята с другой конфигурации оборудования, поэтому некоторые буквы-цифры там будут расходиться с моим примером. Самые внимательные, наверное, даже найдут где именно. Но общий смысл от этого не меняется. Текстовое поле можно растянуть, чтобы было удобнее читать.

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device ‘/devices/pci0000:00/0000:00:1d.7/usb4/4-5/4-5:1.3/ttyUSB3/tty/ttyUSB3’:
KERNEL==»ttyUSB3″
SUBSYSTEM==»tty»
DRIVER==»»

looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb4/4-5/4-5:1.3/ttyUSB3’:
KERNELS==»ttyUSB3″
SUBSYSTEMS==»usb-serial»
DRIVERS==»sierra»
ATTRS{port_number}==»0″

looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb4/4-5/4-5:1.3’:
KERNELS==»4-5:1.3″
SUBSYSTEMS==»usb»
DRIVERS==»qcserial»
ATTRS{bInterfaceClass}==»ff»
ATTRS{bInterfaceSubClass}==»ff»
ATTRS{bInterfaceProtocol}==»ff»
ATTRS{bNumEndpoints}==»03″
ATTRS{supports_autosuspend}==»1″
ATTRS{bAlternateSetting}==» 0″
ATTRS{bInterfaceNumber}==»03″

looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb4/4-5’:
KERNELS==»4-5″
SUBSYSTEMS==»usb»
DRIVERS==»usb»
ATTRS{bDeviceSubClass}==»00″
ATTRS{bDeviceProtocol}==»00″
ATTRS{devpath}==»5″
ATTRS{idVendor}==»1199″
ATTRS{speed}==»480″
ATTRS{bNumInterfaces}==» 6″
ATTRS{bConfigurationValue}==»1″
ATTRS{bMaxPacketSize0}==»64″
ATTRS{busnum}==»4″
ATTRS{devnum}==»3″
ATTRS{configuration}==»Sierra Configuration»
ATTRS{bMaxPower}==»0mA»
ATTRS{authorized}==»1″
ATTRS{bmAttributes}==»e0″
ATTRS{bNumConfigurations}==»1″
ATTRS{maxchild}==»0″
ATTRS{bcdDevice}==»0006″
ATTRS{avoid_reset_quirk}==»0″
ATTRS{quirks}==»0x0″
ATTRS{serial}==»358178041352404″
ATTRS{version}==» 2.00″
ATTRS{urbnum}==»895″
ATTRS{ltm_capable}==»no»
ATTRS{manufacturer}==»Sierra Wireless, Incorporated»
ATTRS{removable}==»unknown»
ATTRS{idProduct}==»68a3″
ATTRS{bDeviceClass}==»00″
ATTRS{product}==»MC7710″

looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb4’:
KERNELS==»usb4″
SUBSYSTEMS==»usb»
DRIVERS==»usb»
ATTRS{bDeviceSubClass}==»00″
ATTRS{bDeviceProtocol}==»00″
ATTRS{devpath}==»0″
ATTRS{idVendor}==»1d6b»
ATTRS{speed}==»480″
ATTRS{bNumInterfaces}==» 1″
ATTRS{bConfigurationValue}==»1″
ATTRS{bMaxPacketSize0}==»64″
ATTRS{authorized_default}==»1″
ATTRS{busnum}==»4″
ATTRS{devnum}==»1″
ATTRS{configuration}==»»
ATTRS{bMaxPower}==»0mA»
ATTRS{authorized}==»1″
ATTRS{bmAttributes}==»e0″
ATTRS{bNumConfigurations}==»1″
ATTRS{maxchild}==»8″
ATTRS{bcdDevice}==»0316″
ATTRS{avoid_reset_quirk}==»0″
ATTRS{quirks}==»0x0″
ATTRS{serial}==»0000:00:1d.7″
ATTRS{version}==» 2.00″
ATTRS{urbnum}==»61″
ATTRS{ltm_capable}==»no»
ATTRS{manufacturer}==»Linux 3.16.0-0.bpo.4-amd64 ehci_hcd»
ATTRS{removable}==»unknown»
ATTRS{idProduct}==»0002″
ATTRS{bDeviceClass}==»09″
ATTRS{product}==»EHCI Host Controller»

looking at parent device ‘/devices/pci0000:00/0000:00:1d.7’:
KERNELS==»0000:00:1d.7″
SUBSYSTEMS==»pci»
DRIVERS==»ehci-pci»
ATTRS{irq}==»16″
ATTRS{subsystem_vendor}==»0x103c»
ATTRS{broken_parity_status}==»0″
ATTRS{class}==»0x0c0320″
ATTRS{companion}==»»
ATTRS{driver_override}==»(null)»
ATTRS{consistent_dma_mask_bits}==»32″
ATTRS{dma_mask_bits}==»32″
ATTRS{local_cpus}==»00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f»
ATTRS{device}==»0x268c»
ATTRS{uframe_periodic_max}==»100″
ATTRS{enable}==»1″
ATTRS{msi_bus}==»»
ATTRS{local_cpulist}==»0-3″
ATTRS{vendor}==»0x8086″
ATTRS{subsystem_device}==»0x31fe»
ATTRS{numa_node}==»-1″
ATTRS{d3cold_allowed}==»1″

looking at parent device ‘/devices/pci0000:00’:
KERNELS==»pci0000:00″
SUBSYSTEMS==»»
DRIVERS==»»

Смотрим к каким атрибутам оборудования мы можем «привязаться». Однозначно придётся использовать критерий SUBSYSTEM==»tty» из первой секции, иначе получится ерунда. Но этого мало. Нужно что-то ещё. Большой соблазн взять ATTRS{product}==»MC7710″, чтобы однозначно идентифицировать устройство, но… тогда мы не сможем указать номер интерфейса. Ибо udev позволяет брать параметры устройства и только одного родителя. Поэтому придётся довольствоваться ATTRS{bInterfaceNumber}==»03″ и DRIVERS==»qcserial» из третьей секции. Итоговое правило будет выглядеть так:

Записываем его куда-нибудь в «/etc/udev/rules.d/80-LTE.rules», после чего заклинаем «udevadm control —reload-rules«, «udevadm trigger«. Первое нужно, чтобы udev перечитал список правил, второе — чтобы не топать ногами в серверную и не «перевтыкать» руками модем.

Итак, у нас появилась символическая ссылка «/dev/LTE-control». Что же с ней делать дальше? А дальше надо указать модему APN и логин-пароль, если есть. Но каждый раз мы это делать руками, понятно, не будем. Поэтому имеет смысл либо написать скрипт, либо запихнуть вызов соответствующих команд прямо в «/etc/network/interfaces». У меня получилось что-то типа того.

В директиве «pre-up» описываем действия до поднятия интерфейса: указать название APN, немного подождать, запустить пакетный драйвер QMI (или как он там правильно называется). То есть софтинку, которая разбирает-собирает поток данных и контрольный канал. С этого момента всё должно заработать. Если не взлетит, то вдумчиво раскуривать мануалы по модему, искать там диагностические AT-команды и пытаться разобраться что же пошло не так. После опускания интерфейса останавливаем QMI-драйвер.

Вроде бы на этом можно и успокоиться. Но я же ж извращенец, мне этого мало. Я хочу не просто подключить модем к серваку, а стать владычицей морскою «закинуть» его вовнутрь QEMU/KVM-виртуалки. В принципе, можно потанцевать с бубном и попробовать сделать это «прям щас». Но мой модем помимо режима QMI умеет ещё Direct IP, при котором не надо запускать никакого QMI-драйвера. Поэтому я пошёл дальше.

Сперва попросил уважаемого Настройка 3G-модема в Linux •rustedowl разобраться как именно переключить модем в другой режим. Сложность там в том, что у данного устройства есть два разных набора AT-команд. Один лоховский универсальный, который является стандартным для любых UMTS-устройств. А второй — пацанский расширенный, для того чтобы можно было трогать модем за яйца крутить всякие хитрые инженерные параметры. Спустя какое-то время поспели вот такие заклинания:

Где набор символов «A710» является… паролем. Дабы всякие ничтоже сумнящиеся не совали свои шаловливые ручки куда не просят. И что сцуко характерно, энтот пароль в официальной документации к хитропопому прибору напрочь отсутствует. Он был найден на бескрайних просторах интернета и подходит к большинству модемов от данного производителя (Sierra Wireless). Параметр второй команды — собственно режим. «68A2» — это QMI, «68A3» — Direct IP. Данные значения актуальны только для данной модели (MC7710). Но в любом случае будет очень кстати лишний раз свериться с документацией чтобы не напортачить, поскольку операция смены PID является весьма щекотливой и может привести к самым разным последствиям. Третья команда перезагружает мопед.

После перезагрузки супостат перекрашивается яки киллер из GTA2. Он теперь в lsusb виден как «Bus 004 Device 003: ID 1199:68a3 Sierra Wireless, Inc. MC8700 Modem». Обратите внимание, что поменялся ID оборудования и даже название модели. Раньше он представлялся как MC7710, а теперь внезапно стал MC8700. И драйвер теперь к нему подключился другой:

Также увеличилось количество псевдотерминалов ажно до пяти штук. И несколько изменился набор допустимых AT-команд.

Дальше всё «как обычно». Находим среди этой пачки «телетайпов» контрольный канал, фиксируем его udev-ом. Точно так же, как и в предыдущем случае, указываем точку доступа («AT CGDCONT=1,»IP»,»yota.ru»»). А вот процесс «дозвона» намного проще: «at!scact=1,1». Где последняя циферка является номером профиля, указанного в «CGDCONT». То есть, внутри модема можно создать несколько разных профилей с разными точками доступа и переключаться между ними. Теоретически это может пригодиться если нужно время от времени использовать то «честный» IP от оператора, то «серый», которые раздаются разными APN. Практически я не знаю случаев, когда такое может реально понадобиться.

Проверить, что «всё хорошо» можно командой «at!scpaddr=1», где цифра означает номер пресловутого «профиля». В ответ модем должен откликнуться полученным от оператора IP-адресом.

Но самой главной «плюшкой» режима Direct IP является то, что конкретно Sierr-овские модемы можно настроить на «автодозвон». Для этого нужно установить профиль по умолчанию: «at!scdftprof=1» и включить автодозвон в этом профиле: «at!scprof=1,»»,1,0,0,0«. Теперь после перезагрузки сервера либо отключения-включения питания модема он будет устанавливать линк автоматически. Аллилуйя!

IP-шник на системный интерфейс прилетает как обычно, по DHCP. Однако wwan0 — это всё-таки не ethernet. Попытки объединить его в bridge с другими системными интерфейсами («brctl addif br0 wwan0«) не увенчались успехом. Для того, чтобы получить беспроводной LTE-линк с честным IP-адресом внутри виртуальной машины, пришлось ещё немного поизгаляться. Как — напишу в третьей части, если когда-нибудь дойдут руки.

Какой вывод можно сделать из вышеописанных половых сношений с модемом умозаключений? Sierra Wireless делает вполне годные железки, которые довольно неплохо поддерживаются Linux-ом. Даже таким консервативным, как Debian. Собратьям по несчастью разуму могу порекомендовать брать устройства, которые понимает драйвер «sierra_net», ибо при прочих равных секса с ними будет меньше. К сожалению, таковых не так уж и много. Пока что их можно пересчитать по пальцам одной руки. Если кто будет выбирать, вот вам их VID-PID: «0f3d:68a3», «0f3d:68aa», «1199:68a3», «1199:68aa». Однако имейте в виду, что VID-PID также зависит и от режима работы и может изменяться в результате переключения последнего.

Подключаем 4g у себя дома

4g_anyenna_obluhatel_offset

Приветствую читателей и подписчиков блога. Интернет все ближе к народу. Именно широкополосный доступ становится доступнее, что радует. С развитием сетей четвертого поколения качественный интернет приходит и в частные дома, в места даже удаленные от городов. 4G активно внедряется мобильными операторами, все больше базовых станций переводится на LTE, а с помощью мощной 4G антенны можно подключиться к такой сети из далека.

Сегодня любой может подключиться к 4G находясь в зоне покрытия такой сети, а при наличии мощной антенны, даже за ее пределами. Расскажу, какое оборудование для этого понадобится и во сколько примерно обойдётся.

Первым делом нужно узнать у какого оператора есть 4G в вашем районе. Такую информацию можно получить на сайте оператора или в ближайшем офисе представительства. В качестве примера возьму «МТС», в нашем регионе сеть 4G именно этого оператора развита особенно хорошо. В салоне «МТС» на просьбу подключиться к 4G предлагают купить у них USB модем с сим-картой, на которой будет подключён безлимитный тарифный план. Модем должен быть именно 4G, поддерживать частоты от 2500 до 2700 Мгц.

В «МТС» был куплен LTE модем МТС 827F, он же Huawei E3372, на его базе и будем подключаться к интернету. Теперь к данному модему нужно подобрать маршрутизатор, желательно беспроводной, чтобы можно было раздать 4G по Wi-Fi. С помощью «гугла» узнаем список маршрутизаторов совместимых с модемом МТС 827F (Huawei E3372). Среди всех мне больше всего понравился TP-LINK MR3420, судя по отзывам, при наличии на борту последней версии прошивки, полностью совместим с моей моделью USB модема. Имеет две антенны, что повышает плотность Wi-Fi, плюс ко всему имеет 4 LAN порта, это позволит, в случае необходимости, раздать интернет по витой паре.

Для обеспечения качественного сигнала к USB модему нужно подобрать внешнюю антенну. Так как нам интересен именно 4G, нужна антенна работающая в диапазоне 2500-2700 Мгц. Так же следует учитывать коэффициент усиления который может дать антенна, он в свою очередь зависит от удаленности базовой станции. Расстояние до БС и ее расположение можно выяснить с помощью специальных приложений для смартфонов «Android» или «iPhone», вставив сим-карту в смартфон. Например для «Android» устройств есть бесплатное приложение «Netmonitor», оно покажет на карте «Google» ближайшие к вам вышки сотового оператора, сим-карта которого установлена в смартфоне.

Netmonitor

Исходя из полученных данных выбираем антенну. МТС 827F (Huawei E3372) имеет два разъёма для подключения внешней антенны типа «MIMO», е то мы и будем выбирать. Из качественных и доступных по цене предложений можно остановиться на антеннах «Антекс», а именно лично мне понравился облучатель MIMO для спутникового офсетного зеркала «AX-2400». Стоит такой облучатель не дорого по сравнению с панелями MIMO. Коэффициент усиления такой антенны можно увеличивать меняя диаметр спутниковой антенны.

4g_obluchatel_anteks_ax-2400_MIMO

К антенне у Антекс можно сразу же заказать и уже готовый кабель с нужными коннекторами и переходниками для модема. Для МТС 827F подойдут переходники CRC9, их нужно 2 шт. Длину кабеля нужно подбирать исходя из потребностей установки, чем меньше длинна кабеля, тем меньшее затухание сигнала в нём.

1usb_modem_crc9

После подбора и приобретения всего необходимого оборудования, приступаем к настройке. Первым делом нужно подружить модем с маршрутизатором. Как говорилось ранее, модем МТС 827F (Huawei E3372) отлично работает с маршрутизатором TP-LINK MR3420, но для этого нужно перевести модем в режим «только модем». Делается это с помощью

AT-команды, которая вводится с помощью специальной утилиты для ввода AT команд. Самая простая и распространенная утилита для этих нужд называется «DC-Unlocker Client», ею и воспользуемся. Скачиваем DC-Unlocker Client, устанавливаем на комп под Windows, вставляем модем и запускаем утилиту. Нажимаем на кнопку поиска устройства, после чего ваш модем должен быть найден программой, об этом будет свидетельствовать отображение модели модема в строке состояния. После удачного определения модема, в окно ввода вводим следующую команду: AT^SETPORT=”FF;10,12” нажимаем «Enter», программа должна выполнить команду успешно, о чем будет свидетельствовать ответ «OK». Всё, модем переведен в режим «только модем», теперь его можно извлечь, и утилиту закрыть.

DC-Unlocker_Client

Далее подключаем модем к маршрутизатору, заходим на вебинтерфес маршрутизатора и убеждаемся, что модем определился и подключился. В настройках маршрутизатора выставляем оператора, режим «только 3G/4G», и опцию «подключаться автоматически». Ниже приведены скриншоты настроек TP-LINK MR3420.

tp_link_mr3420_plus_mts_827f

tp_link_mr3420_nastroiki_dly_4g

tp_link_mr3420_nastroiki_dly_4g.png1

tp_link_mr3420_nastroiki_dly_4g.png2

Как видно на скриншоте, через вебинтерфейс маршрутизатора можно посмотреть силу сигнала на модеме в процентах. Чем выше эти проценты, тем лучше. Максимальных значений, как раз и будем добиваться настройкой антенны.

4g_svoimi_rukami_doma

4g_u_seby_doma

ustanovka_4g_antenny_doma

Собрав антенну и закрепив ее, можно начинать сам процесс точной настройки антенны на базовую станцию. Настройку удобнее всего выполнять с помощью специальной программ, например с помощью MDMA. Настройка офсетного зеркала требует очень точного наведения на БС, нужно добиться максимальных значений сигнала, и выставить поляризацию, поворачивая облучатель по стрелкам указанным на корпусе.

Усилив с помощью антенны сигнал на USB модеме, мы обеспечим стабильную связь и регистрацию в сети. Настроив беспроводной режим в маршрутизаторе и подключив DHCP, 4G интернет будет раздаваться по Wi-Fi.

Элементы и индикаторы

Начнем с внешнего вида. От предыдущей модели почти ни чем не отличается, только выпускается в белом цвете. Форма и расположение индикатора такое же, он находится в задней части устройства. С боку есть два разъема антенны, куда вставляется дополнительное оборудование. Внешняя антенна должна иметь коннектор CRC, чтобы суметь подключится к модему.

куда подключать антенну в модем
Разъем антенны.

Чтобы открыть крышку достаточно надавить пальцем на середину верхней крышки и свинуть её в противоположную от юсб сторону.

разобранный юсб модем и слоты
Внутренности.

Если вы пользовались прошлым модемом, то здесь все знакомо: в передней части располагается слот под сим-карту. Размер у неё обычный, не микро, не нано, если у вас уменьшенный вариант, то купите в магазине переходник для симок. В задней части располагается индикатор.

Здесь только один индикатор, а работает модем в нескольких сетях, так что имеются разные цвета для разных сетей. Зеленая для 2G, синяя для 3G и голубая для 3G /4G/LTE.


Индикация показывает следующую информацию:

  • Если не горит, значит модем не включен.
  • Когда включается, то примерно 2 раз в 2 секунды моргает зеленым цветом.
  • Моргание зеленым через каждые 0,2 показывает, что идет обновление прошивки. Ни за что не отключайте от компьютера в этот момент.
  • Медленное мигание, примерно один раз в 2 секунды любым цветом, кроме красного, показывает, что идет установка связи и регистрация в сети мобильного оператора.
  • Если постоянно светится каким-то цветом, то это означает стабильную работу в сети.
  • Если индикатор светится красным, то нет сети. Здесь проблема может быть в модеме. Сим карте или у самого оператора. Начать стоит со звонка в техподдержку, чтобы лишний раз не проверять настройки.
Оцените статью
Huawei Devices
Добавить комментарий