ZTE MF79U usb modem not found

hi,
I have RPI4 running OpenWRT,
trying to use ZTE MF79U LTE modem for wan connection.

followed all instructions about adding usb modem interface.

lsusb: ...ID 19D2:1405 demo, Incorporated DEMO Mobile Boradband

but dmesg only recognize CD-ROM and MMC storage

in ifconfig no usb0

which all instructions ?

could be useful too Activate USB support - USB modem

I used this instructions:

If the OS only sees the cdrom, it's usually because of an issue with usb-modeswitch.

the product ID is correct.
look like the modem didn't switched to the correct mode

https://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?t=2060

ZTE MF79U , LTE Cat 4, 4G Wingle on OpenWrt 21.02.3 r16554 on ath79 device

Hello,
Thanks for your support!
After some research I am stuck on the missing configuration of MF79U in usbmodswitch. Indeed, when inserting the 4G LTE usb modem, it registers eth2 then unregisters it in favor of usb storage...
Would you have a track to have a good config to switch please or any other clue ?

Thanks in advance !

I added this missing entry which is not working. https://www.draisberghof.de/usb_modeswitch/ChangeLogData :
vi /etc/usb-mode.json

                "19d2:1405": {
                        "*": {
                                "t_vendor": 6610,
                                "t_product": [ 359 ],
                                 "mode": "StandardEject",
                                "msg": [ 34 ]
                        }
                },

FYI msg 34 is 55534243123456782400000080000685000000240000000000000000000000

usbmode -l
usbmode -sv

Found device: 19d2:1405 (Manufacturer: "DEMO,Incorporated", Product: "DEMO Mobile Boardband", Serial: "1234567890ABCDEF")
Failed to send switch message
Failed to send switch message
Failed to send switch message
Failed to send switch message

cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.04
S:  Manufacturer=Linux 5.4.188 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=1b000000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 29 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=19d2 ProdID=1405 Rev=53.25
S:  Manufacturer=DEMO,Incorporated
S:  Product=DEMO Mobile Boardband
S:  SerialNumber=1234567890ABCDEF
C:* #Ifs= 3 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=(none)
E:  Ad=87(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=125us

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.04
S:  Manufacturer=Linux 5.4.188 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=1b400000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

echo 0x19d2 0x1405 > /sys/module/usbserial/drivers/usb-serial:generic/new_id

dmesg |grep register

[ 5147.764775] cdc_ether 1-1:1.0 eth2: register 'cdc_ether' at usb-1b000000.usb-1, ZTE CDC Ethernet Device, 34:4b:50:00:00:00
[ 5147.837659] cdc_ether 1-1:1.0 eth2: unregister 'cdc_ether' usb-1b000000.usb-1, ZTE CDC Ethernet Device
[ 8258.986478] usbcore: registered new interface driver rndis_host

& 
[ 9886.324920] usb 1-1: new high-speed USB device number 30 using ehci-platform
[ 9886.488831] usb-storage 1-1:1.0: USB Mass Storage device detected
[ 9886.505116] usb-storage 1-1:1.0: Quirks match for vid 19d2 pid 1225: 1
[ 9886.516966] scsi host0: usb-storage 1-1:1.0
[ 9889.928537] usb 1-1: USB disconnect, device number 30
[ 9890.348945] usb 1-1: new high-speed USB device number 31 using ehci-platform
[ 9890.530441] usbserial_generic 1-1:1.0: The "generic" usb-serial driver is only for testing and one-off prototypes.
[ 9890.540984] usbserial_generic 1-1:1.0: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
[ 9890.551005] usbserial_generic 1-1:1.0: device has no bulk endpoints
[ 9890.557788] usbserial_generic 1-1:1.1: The "generic" usb-serial driver is only for testing and one-off prototypes.
[ 9890.568496] usbserial_generic 1-1:1.1: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
[ 9890.578504] usbserial_generic 1-1:1.1: device has no bulk endpoints
[ 9890.700793] usb-storage 1-1:1.2: USB Mass Storage device detected
[ 9890.717100] scsi host0: usb-storage 1-1:1.2
[ 9891.729834] scsi 0:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.3  PQ: 0 ANSI: 2
[ 9891.753007] scsi 0:0:0:1: Direct-Access     DEMO     MMC Storage      2.3  PQ: 0 ANSI: 2
[ 9891.770483] sd 0:0:0:1: Power-on or device reset occurred
[ 9891.783300] sd 0:0:0:1: [sda] Attached SCSI removable disk
[ 9896.082785] usb 1-1: USB disconnect, device number 31
[ 9896.528853] usb 1-1: new high-speed USB device number 32 using ehci-platform
[ 9896.706943] usb-storage 1-1:1.0: USB Mass Storage device detected
[ 9896.726109] usb-storage 1-1:1.0: Quirks match for vid 19d2 pid 1225: 1
[ 9896.744842] scsi host0: usb-storage 1-1:1.0
[ 9899.808163] usb 1-1: USB disconnect, device number 32

lsusb -t
lsusb -v

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
    |__ Port 1: Dev 29, If 0, Class=, Driver=, 480M
    |__ Port 1: Dev 29, If 1, Class=, Driver=, 480M
    |__ Port 1: Dev 29, If 2, Class=, Driver=usb-storage, 480M


Bus 002 Device 001: ID 1d6b:0002 Linux 5.4.188 ehci_hcd EHCI Host Controller
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9
  bDeviceSubClass         0
  bDeviceProtocol         1
  bMaxPacketSize0        64
  idVendor           0x1d6b
  idProduct          0x0002
  bcdDevice            5.04
  iManufacturer           3 Linux 5.4.188 ehci_hcd
  iProduct                2 EHCI Host Controller
  iSerial                 1 1b400000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0019
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0100 power
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

Bus 001 Device 029: ID 19d2:1405 DEMO,Incorporated DEMO Mobile Boardband
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            2
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x19d2
  idProduct          0x1405
  bcdDevice           53.25
  iManufacturer           2 DEMO,Incorporated
  iProduct                4 DEMO Mobile Boardband
  iSerial                 5 1234567890ABCDEF
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x006f
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          3 DEMO Configuration
    bmAttributes         0xc0
      Self Powered
    MaxPower              500mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass          2
      bFunctionSubClass       6
      bFunctionProtocol       0
      iFunction               8 CDC ECM
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2
      bInterfaceSubClass      6
      bInterfaceProtocol      0
      iInterface              6 CDC Ethernet Control Model (ECM)
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      CDC Ethernet:
        iMacAddress                      9 344B50000000
        bmEthernetStatistics    0x00000000
        wMaxSegmentSize               1514
        wNumberMCFilters            0x0000
        bNumberPowerFilters              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x87  EP 7 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        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        10
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass        10
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              7 CDC Ethernet Data
      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               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8
      bInterfaceSubClass      6
      bInterfaceProtocol     80
      iInterface              1 Mass Storage
      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               1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            2
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

Bus 001 Device 001: ID 1d6b:0002 Linux 5.4.188 ehci_hcd EHCI Host Controller
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9
  bDeviceSubClass         0
  bDeviceProtocol         1
  bMaxPacketSize0        64
  idVendor           0x1d6b
  idProduct          0x0002
  bcdDevice            5.04
  iManufacturer           3 Linux 5.4.188 ehci_hcd
  iProduct                2 EHCI Host Controller
  iSerial                 1 1b000000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0019
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0503 highspeed power enable connect
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered
1 Like

Hello,

thanks for the advices
After some research and testing I finally found the right entry

I added this entry in
/etc/usb-mode.json

    "19d2:1225": {                                                
                        "*": {
                                "t_vendor": 6610,                               
                                "t_product": [ 5125 ],                          
                                 "mode": "StandardEject",                       
                                "msg": [ 34 ]                                   
                        }                                                       
                },                              

Now it works!

[   14.424485] usb 1-1: new high-speed USB device number 3 using xhci-mtk
[   14.767217] cdc_ether 1-1:1.0 eth1: register 'cdc_ether' at usb-1e1c0000.xhci-1, ZTE CDC Ethernet Device
....
2 Likes

I also have the same device. Does this put it into "modem only" mode?

For me it works as a ethernet device but I would like to avoid double nat so I was looking if it is possibile to use it as a modem only.

2 Likes

Have you found a solution?

1 Like

See if you can temporary switch it. Login to your modem web interface and then open
http://192.168.0.1/goform/goform_set_cmd_process?goformId=USB_MODE_SWITCH&usb_mode=8
Adjust the modem IP if necessary.
Check if anything has changed in cat /sys/kernel/debug/usb/devices output.

I just bought this modem and I'm waiting for arrive. This option you mentioned can define it permanently? Or only for that session?

That will be a temporary change, however if it works and composition is switched, then it should be possible to make a permanent change.

Unfortunately I can't access this page. Is there any other option?

If the mode cannot be switched using the http method, then there is a Windows tool called scsi.exe that can do almost the same.
Initially the modem is in mode 0 and the goal is to switch it to 1.

AT+ZMODE=0		# RNDIS + MMC & CD
AT+ZMODE=1		# RNDIS + MMC & CD + ADB + Modem + AT & LOG interface

Once adb interface is exposed it should be possible to access the modem with adb shell and see whether it is possible to change its composition to something different from RNDIS.

Unfortunately I do not have a suitable modem to experiment with, so I can only share what is in my notes.

Check what do you have in cat /sys/kernel/debug/usb/devices output in OpenWrt (with modem plugged in). If you have a storage component there - use usb_modeswitch to eject it as shown above and re-run cat ....

Hey, AndrewZ, a kind off topic, but my modem arrives today and it was working perfectly. I even did some speed tests, but now it stop working!

The LED is red and when I try to open settings page, I just got limited service. I tried with two carriers, but no success :disappointed:

Do you have any idea what things could be happened?