0

I have problem new USB LTE modem Brovi E3372-325

I can't get it to work on linux. When connected to a USB port, the modem identifies itself as:

# dmesg
...
[ 6731.401923] usb 1-3.4.4: new high-speed USB device number 22 using xhci_hcd
[ 6731.503252] usb 1-3.4.4: New USB device found, idVendor=3566, idProduct=2001, bcdDevice=ff.ff
[ 6731.503261] usb 1-3.4.4: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[ 6731.503265] usb 1-3.4.4: Product: Mobile
[ 6731.503268] usb 1-3.4.4: Manufacturer: Mobile
[ 6731.503271] usb 1-3.4.4: SerialNumber: 123456789ABCD
[ 6731.505527] usb-storage 1-3.4.4:1.0: USB Mass Storage device detected
[ 6731.505830] scsi host1: usb-storage 1-3.4.4:1.0
[ 6732.534864] scsi 1:0:0:0: CD-ROM            Linux    File-Stor Gadget 0310 PQ: 0 ANSI: 2
[ 6732.535947] sr 1:0:0:0: Power-on or device reset occurred
[ 6732.536717] sr 1:0:0:0: [sr0] scsi3-mmc drive: 0x/0x caddy
[ 6732.540429] sr 1:0:0:0: Attached scsi CD-ROM sr0
[ 6732.540983] sr 1:0:0:0: Attached scsi generic sg1 type 5
[ 6732.803382] ISO 9660 Extensions: RRIP_1991A

# lsusb -vvv
...
Bus 001 Device 028: ID 3566:2001 Mobile Mobile
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x3566 
  idProduct          0x2001 
  bcdDevice           ff.ff
  iManufacturer           2 Mobile
  iProduct                3 Mobile
  iSerial                 4 123456789ABCD
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0020
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              1 Mass Storage
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 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     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength       0x0016
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000000
      (Missing must-be-set LPM bit!)
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x0004
      Device can operate at High Speed (480Mbps)
    bFunctionalitySupport   4
      Lowest fully-functional device speed is at an unknown speed!
    bU1DevExitLat           1 micro seconds
    bU2DevExitLat         500 micro seconds
Device Status:     0x0000
  (Bus Powered)

now I switch them to "modem": usb_modeswitch -v 3566 -p 2001 -X:

# dmesg
...
[ 6971.308148] usb 1-3.4.4: USB disconnect, device number 22
[ 6971.544052] usb 1-3.4.4: new high-speed USB device number 23 using xhci_hcd
[ 6971.645772] usb 1-3.4.4: New USB device found, idVendor=3566, idProduct=2001, bcdDevice=ff.ff
[ 6971.645787] usb 1-3.4.4: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[ 6971.645794] usb 1-3.4.4: Product: Mobile
[ 6971.645799] usb 1-3.4.4: Manufacturer: Mobile
[ 6971.645804] usb 1-3.4.4: SerialNumber: 123456789ABCD
[ 6971.647121] usb 1-3.4.4: Interface #0 referenced by multiple IADs
[ 6971.647643] usb 1-3.4.4: Interface #1 referenced by multiple IADs
[ 6971.678702] cdc_ncm 1-3.4.4:1.5: MAC-Address: c2:ab:11:ee:2f:15
[ 6971.679449] cdc_ncm 1-3.4.4:1.5 usb0: register 'cdc_ncm' at usb-0000:00:14.0-3.4.4, CDC NCM, c2:ab:11:ee:2f:15
[ 6971.743416] cdc_ncm 1-3.4.4:1.5 enxc2ab11ee2f15: renamed from usb0

# ip a s enxc2ab11ee2f15
14: enxc2ab11ee2f15: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether c2:ab:11:ee:2f:15 brd ff:ff:ff:ff:ff:ff

# mmcli -L
No modems were found

# lsusb -vvv
Bus 001 Device 029: ID 3566:2001 Mobile Mobile
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x3566 
  idProduct          0x2001 
  bcdDevice           ff.ff
  iManufacturer           2 Mobile
  iProduct                3 Mobile
  iSerial                 4 123456789ABCD
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00f9
    bNumInterfaces          7
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                2mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass          2 Communications
      bFunctionSubClass       2 Abstract (modem)
      bFunctionProtocol       1 AT-commands (v.25ter)
      iFunction              10 CDC Serial
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              8 CDC Abstract Control Model (ACM)
      ** UNRECOGNIZED:  05 24 00 10 01
      ** UNRECOGNIZED:  05 24 01 00 01
      ** UNRECOGNIZED:  04 24 02 02
      ** UNRECOGNIZED:  05 24 06 00 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x000a  1x 10 bytes
        bInterval               9
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              9 CDC ACM Data
      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        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface             11 Marvell DIAG
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 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 Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         3
      bInterfaceCount         2
      bFunctionClass          2 Communications
      bFunctionSubClass       2 Abstract (modem)
      bFunctionProtocol       1 AT-commands (v.25ter)
      iFunction              14 CDC Serial
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface             12 CDC Abstract Control Model (ACM)
      ** UNRECOGNIZED:  05 24 00 10 01
      ** UNRECOGNIZED:  05 24 01 00 04
      ** UNRECOGNIZED:  04 24 02 02
      ** UNRECOGNIZED:  05 24 06 03 04
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x86  EP 6 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x000a  1x 10 bytes
        bInterval               9
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface             13 CDC ACM Data
      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 Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass          2 Communications
      bFunctionSubClass      13 
      bFunctionProtocol       0 
      iFunction               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        5
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass     13 
      bInterfaceProtocol      0 
      iInterface              0 
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        5
        bSlaveInterface         6 
      CDC Ethernet:
        iMacAddress                     17 FE1EA1E4D9D7

        bmEthernetStatistics    0x00000000
        wMaxSegmentSize               1514
        wNumberMCFilters            0x0000
        bNumberPowerFilters              0
      CDC NCM:
        bcdNcmVersion        1.00
        bmNetworkCapabilities 0x01
          packet filter
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x88  EP 8 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               9
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        6
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 
      bInterfaceProtocol      1 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        6
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 
      bInterfaceProtocol      1 
      iInterface              0 
      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               0
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength       0x0016
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000000
      (Missing must-be-set LPM bit!)
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x0004
      Device can operate at High Speed (480Mbps)
    bFunctionalitySupport   4
      Lowest fully-functional device speed is at an unknown speed!
    bU1DevExitLat           1 micro seconds
    bU2DevExitLat         500 micro seconds
Device Status:     0x0000
  (Bus Powered)

But there is missing /dev interface (something like /dev/cdc*//dev/ttyUSB*).

Tested on Ubuntu 22.04 with kernel 5.15 and Ubuntu 23.04 (daily build) with kernel 5.19. Without success.

I tried dhclient enxc2ab11ee2f15, ip link enxc2ab11ee2f15 up - without success. For qmicli/mbimcli there is missing /dev/cdc* interface.

On Windows 10 PC it connects automatically and gets IP from DHCP. It uses RNDIS driver.

Can you please help me? How can I switch modem to the right mode?

martin
  • 111
  • 1
  • 5

4 Answers4

1

Same gizmo, same setup, same problem here.

However, today I played a bit more with that and I got that actually working. Basically the steps were:

  • Ubuntu 22.04 with latest updates
  • once up & running in desktop mode
  • plug in the stick
  • stick boots to mass storage mode
  • install usbserial modprobe usbserial vendor=0x3566 product=0x2001
  • then sudo usb_modeswitch -v 3566 -p 2001 -X
  • look bottom of dmesg, and you should see that it registers cdc_ncm driver. Also, modemmanager should be now able to see the device. at this point you should see in the settings window mobile network option. Filling in the right values and it connected (see below)

Mobile Network with 3372-325

When needed I can try to pull more info from system. At this stage I am looking automation so that manual steps with mobile network options can be avoided.

Seems that with this procedure it creates ppp0 link. So, some life with this but not optimal setup IMHO

Peregrino69
  • 2,337
  • 1
  • 15
  • 22
PekkaH
  • 11
  • 2
1

I found a solution that works: https://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=3&t=3043&p=20026#p20054

/etc/udev/rules.d/40-huawei.rules:

# This is part of USB_ModeSwitch version 1.x.x
#
ACTION!="add", GOTO="modeswitch_rules_end"
SUBSYSTEM!="usb", GOTO="modeswitch_rules_end"

# All known install partitions are on interface 0
ATTRS{bInterfaceNumber}!="00", GOTO="modeswitch_rules_end"

# only storage class devices are handled; negative
# filtering here would exclude some quirky devices
ATTRS{bDeviceClass}=="e0", GOTO="modeswitch_rules_begin"
ATTRS{bInterfaceClass}=="e0", GOTO="modeswitch_rules_begin"
GOTO="modeswitch_rules_end"

LABEL="modeswitch_rules_begin"
# Huawei E3372-325
ATTRS{idVendor}=="3566", ATTRS{idProduct}=="2001", RUN+="/sbin/usb_modeswitch -v 3566 -p 2001 -W -R -w 400"
ATTRS{idVendor}=="3566", ATTRS{idProduct}=="2001", RUN+="/sbin/usb_modeswitch -v 3566 -p 2001 -W -R"

LABEL="modeswitch_rules_end"
martin
  • 111
  • 1
  • 5
0

I am using:

  • USB LTE modem Brovi E3372-325 firmware version 3.0.2.61 (stated in webui accessed on windows).
  • usb_modeswitch Version 2.6.0 (C) Josua Dietze 2017

Like Martin, when I issue usb_modeswitch -v 3566 -p 2001 -X it results in a cdc_ncm without IP.

Unfortunately his solution with /etc/udev/rules.d/40-huawei.rules doesn't work for me, and at the end of the sequence it ends up with an attached scsi.

journalctl -f shows that the second call to usb_modeswitch fails

Feb 04 19:30:40 GMBASE0 systemd-udevd[1324]: '/usr/sbin/usb_modeswitch -v 3566 -p 2001 -W -R'(out) ' Reset USB device failed with error -5-> Run lsusb to note any changes. Bye!'

As the libusb "LIBUSB_ERROR_NOT_FOUND = -5" happens when the entity is not found, I have tried to extend the wait timing of the first usb_modeswitch to 800ms instead of 400ms by using /usr/sbin/usb_modeswitch -v 3566 -p 2001 -W -R -w 800. It doesn't improve the situation.

I have also unsuccessfully tried the script proposed at https://blog.tanatos.org/posts/huawei_e3372h-325_brovi_with_linux/ At the end of this post, there is an added note saying that with the 3.0.2.62 firmware version the Brovi works fine and switches to RNDIS.

I have tried a firmware update from the dongle webui but it is not (yet) available for my dongle.

Martin, could you please share your Brovi firmware version and the class of device you end up with when you reach a working setup?

Perhaps it could also help if you share the output of journalctl?

sudo udevadm control --log-priority=debug
journalctl -f

Thank you very much

  • 1
    Welcome to the community. I'd recommend to check the Asking- and Answering -sections in the Help. SE communities aren't discussion boards, answers are strictly for providing answers to the questions, not for "Me too" -type postings, these usually get deleted. Since you have an issue, you should ask a question of your own - you can link to this question if it contains information relevant to your situation (such as not-working solution). The info in Help / Asking will give you hints on how to formulate the question. – Peregrino69 Feb 04 '23 at 20:26
0

I have spent some time trying to make it works but in the end I managed to do it. Here is my configuration:

Linux Mint 20.3, Brovi USB stick model E3372-325

  1. Edit modules.conf:
    sudo nano /etc/modules-load.d/modules.conf
    
    then add at the end of the file:
    usbserial
    
  2. Install usb-modeswitch
    sudo apt install usb-modeswitch
    
  3. Configure usb-modeswitch
    sudo nano /etc/usb_modeswitch.conf
    
    and make sure to uncomment:
    DisableSwitching=0
    
    Then
    sudo nano /etc/usb_modeswitch.d/3566:2001
    
    and insert the following:
    TargetVendor=0x3566
    TargetProduct=0x2001
    WaitBefore=4
    TargetClass=0xff
    HuaweiAltMode=1
    
  4. Edit usbserial.conf
    sudo nano /etc/modprobe.d/usbserial.conf
    
    and insert:
    options usbserial vendor=0x3566 product=0x2001
    
  5. Edit the UDev rule
    sudo nano /etc/udev/rules.d/40-brovi_usb_lte.rules
    
    and insert:
    ACTION!="add|remove", GOTO="modeswitch_rules_end"
    SUBSYSTEM!="usb", GOTO="modeswitch_rules_end"
    GOTO="modeswitch_rules_begin"
    LABEL="modeswitch_rules_begin"
    ACTION=="add", ATTRS{idVendor}=="3566", ATTRS{idProduct}=="2001", ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '%k'"
    ACTION=="remove", ATTRS{idVendor}=="3566", ATTRS{idProduct}=="2001", RUN+="/usr/sbin/modprobe -r option"
    LABEL="modeswitch_rules_end"
    

A healthy good reboot is recommended at the end.

Some explanation:

  1. The required "serial" module has to be configured to be loaded at boot because it is optional and as such not compiled in the kernel. Run

    sudo modprobe serial
    

    then check if it's loaded with:

    lsmod | grep serial
    
  2. In the end run:

    sudo udevadm control --reload-rules && udevadm trigger
    

    in order to load the newest configuration.

  3. The module "option" should be loaded automatically when the stick is plugged in. The problem is that it remains loaded when the stick is plugged out and when is plugged in again it doesn't work anymore. That's why I used the directive

    ACTION=="remove", ATTRS{idVendor}=="3566", ATTRS{idProduct}=="2001", RUN+="/usr/sbin/modprobe -r option"
    

    in udev rules in order the remove this module from kernel each time the stick is plugged out.

  4. You should check with lsusb -t that every interface has a module/driver loaded (like serial, option, etc).

  5. You should also provide a mobile broadband network connection specific to your operator. It can be done installing ModemManager and making sure that modem ZOWEE Technology etc is listed.

  6. In the end I must tell that I have got a Huawei E8372h-320 which worked plug'n'play flawlessly without any configuration whatsoever, even as an USB backup route for a Mikrotik router using firmware 7.11.

ViorelM
  • 1
  • 1