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?

5 Answers 5

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" 
0
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

1

In my case I needed to make 3 things to make it work:

  1. remove the PIN from the SIM card
  2. use modprobe option and write to /sys/bus/usb-serial/drivers/option1/new_id as described in one of the messages in https://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=3&t=3043&p=20026#p20054
  3. use wvdial (from https://blog.tanatos.org/posts/huawei_e3372h-325_brovi_with_linux_stickmode/)

I'm not using udev because my Raspberry Pi will have the dongle always plugged in. I made it work just a few minutes ago, script will be improved, but so far it works and it re-start wvdial if dies:

#!/bin/bash set -e set -u set -o pipefail modprobe option sleep 2 echo 3566 2001 ff > /sys/bus/usb-serial/drivers/option1/new_id usb_modeswitch -v 3566 -p 2001 -W -R || true sleep 2 usb_modeswitch -v 3566 -p 2001 -W -X || true sleep 2 wvdial & while /bin/true ; do sleep 10 jobs %1 || { echo "wvdial is not running. exiting now." ; exit 1 ; } echo "still running :)" done 

I'm not sure if those sleep are really needed.

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
  • 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. Commented Feb 4, 2023 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.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.