Bug 89721

Summary: ZTE MF700: product ID(s) not listed in /usr/lib/udev/rules.d/77-mm-zte-port-types.rules
Product: ModemManager Reporter: Pablo Nazar <pablo.e.nazar>
Component: pluginsAssignee: ModemManager bug user <modemmanager>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: pablo.e.nazar
Version: 1.4Keywords: patch
Hardware: All   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: 77-mm-zte-port-types.rules.diff
lsusb_19d2-0156.log

Description Pablo Nazar 2015-03-22 22:31:06 UTC
Created attachment 114536 [details]
77-mm-zte-port-types.rules.diff

ModemManager 1.4.0-1.fc21

ZTE MF700 USB Stick Modem does not connect because it uses two (2) product IDs (0154 and 0156) which are NOT listed in file /usr/lib/udev/rules.d/77-mm-zte-port-types.rules provided by ModemManager package.

The FIX for this problem is to add these four (4) lines to /usr/lib/udev/rules.d/77-mm-zte-port-types.rules, as described in the following Fedora Forum post: http://forums.fedoraforum.org/showthread.php?t=297737

# diff /usr/lib/udev/rules.d/77-mm-zte-port-types.rules.orig /usr/lib/udev/rules.d/77-mm-zte-port-types.rules191a192,197
> ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0154", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
> ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0154", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
> 
> ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0156", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
> ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0156", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"

I've resolved this with the previous version, and had to apply this Fix again once I updated ModemManager to 1.4.0-1 and my config files were overwritten.

Attaching diff file to the bug report (corresponds to ModemManager-1.4.0-1.fc21), Fedora 21.
Comment 1 Aleksander Morgado 2015-03-23 08:42:43 UTC
(In reply to Pablo Nazar from comment #0)
> Created attachment 114536 [details]
> 77-mm-zte-port-types.rules.diff
> 
> ModemManager 1.4.0-1.fc21
> 
> ZTE MF700 USB Stick Modem does not connect because it uses two (2) product
> IDs (0154 and 0156) which are NOT listed in file
> /usr/lib/udev/rules.d/77-mm-zte-port-types.rules provided by ModemManager
> package.
> 
> The FIX for this problem is to add these four (4) lines to
> /usr/lib/udev/rules.d/77-mm-zte-port-types.rules, as described in the
> following Fedora Forum post:
> http://forums.fedoraforum.org/showthread.php?t=297737
> 
> # diff /usr/lib/udev/rules.d/77-mm-zte-port-types.rules.orig
> /usr/lib/udev/rules.d/77-mm-zte-port-types.rules191a192,197
> > ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0154", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
> > ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0154", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
> > 
> > ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0156", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
> > ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0156", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
> 
> I've resolved this with the previous version, and had to apply this Fix
> again once I updated ModemManager to 1.4.0-1 and my config files were
> overwritten.
> 
> Attaching diff file to the bug report (corresponds to
> ModemManager-1.4.0-1.fc21), Fedora 21.

It should be either 0154 or 0156, not both. Likely, you see it first as one PID and then as another one because it is mode-switched by usb_modeswitch; ModemManager should tag only the final VID/PID.

What's the PID of the device when ModemManager handles it? Is it 0x0154?

Could you get ModemManager debug logs like this?
http://www.freedesktop.org/wiki/Software/ModemManager/Debugging/

If you plug the modem in a Windows machine, do you get a "fake CD" drive? If so, could you get the contents and put them available for us somewhere?
Comment 2 Pablo Nazar 2015-03-23 22:35:59 UTC
1) ModemManager (mmcli) doesn't show product-ID info at all.


2) When the modem is plugged in, syslog shows PID 0x0154:

Mar 23 19:20:59 argos kernel: [  199.412325] usb 3-1.2: new high-speed USB device number 4 using ehci-pci
Mar 23 19:20:59 argos kernel: usb 3-1.2: new high-speed USB device number 4 using ehci-pci
Mar 23 19:20:59 argos kernel: [  199.500138] usb 3-1.2: New USB device found, idVendor=19d2, idProduct=0154
Mar 23 19:20:59 argos kernel: [  199.500146] usb 3-1.2: New USB device strings: Mfr=3, Product=2, SerialNumber=4
Mar 23 19:20:59 argos kernel: [  199.500150] usb 3-1.2: Product: ZTE WCDMA Technologies MSM
Mar 23 19:20:59 argos kernel: [  199.500152] usb 3-1.2: Manufacturer: ZTE,Incorporated
Mar 23 19:20:59 argos kernel: [  199.500155] usb 3-1.2: SerialNumber: MF7000ZTED010000
Mar 23 19:20:59 argos kernel: usb 3-1.2: New USB device found, idVendor=19d2, idProduct=0154
Mar 23 19:20:59 argos kernel: usb 3-1.2: New USB device strings: Mfr=3, Product=2, SerialNumber=4
Mar 23 19:20:59 argos kernel: usb 3-1.2: Product: ZTE WCDMA Technologies MSM
Mar 23 19:20:59 argos kernel: usb 3-1.2: Manufacturer: ZTE,Incorporated
Mar 23 19:20:59 argos kernel: usb 3-1.2: SerialNumber: MF7000ZTED010000


3) lsusb -v output shows PID 0x0156:

Bus 003 Device 005: ID 19d2:0156 ZTE WCDMA Technologies MSM 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x19d2 ZTE WCDMA Technologies MSM
  idProduct          0x0156 
  bcdDevice            0.00
  iManufacturer           3 
  iProduct                2 
  iSerial                 4 
  bNumConfigurations      1
Comment 3 Pablo Nazar 2015-03-24 00:19:57 UTC
Aleksander,
I've tested using only one of the PIDs in /usr/lib/udev/rules.d/77-mm-zte-port-types.rules.

1) Using 0x0154: doesn't work (ERR: port attributes not fully set)
2) Using 0x0156: works alright!

Hence, the needed lines (192-193) in the .rules file are:

192 ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0156", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
193 ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0156", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
Comment 4 Aleksander Morgado 2015-03-24 08:40:03 UTC
(In reply to Pablo Nazar from comment #3)
> Aleksander,
> I've tested using only one of the PIDs in
> /usr/lib/udev/rules.d/77-mm-zte-port-types.rules.
> 
> 1) Using 0x0154: doesn't work (ERR: port attributes not fully set)
> 2) Using 0x0156: works alright!
> 
> Hence, the needed lines (192-193) in the .rules file are:
> 
> 192 ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0156",
> ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
> 193 ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0156",
> ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"

The "port attributes not fully set" is totally unrelated...

You're seeing 0x154 in syslog and the 0x156 in lsusb because usb_modeswitch switched the modem in between. So, likely 0x156 is only enough in the port type rules.

Could you post the full output of lsusb -v for that device? Would like to confirm all the interface numbers available.
Comment 5 Pablo Nazar 2015-03-24 15:11:54 UTC
Created attachment 114585 [details]
lsusb_19d2-0156.log
Comment 6 Aleksander Morgado 2015-03-25 07:40:51 UTC
Ok, pushed fix at git master and the mm-1-4 branch, thanks.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.