Package: usb-modeswitch-data
Version: 20150115-1
Severity: normal

Dear Maintainer,

This bug is very similar to archived bug # 751271.  After upgrading from Debian 
7 to Debian 8, my Huawei modem will no longer switch from "usb storage" to 
"modem mode" when the device is plugged in.

I am experiencing this problem in latest Debian 8.2, udev 215, usb_modeswitch 
2.2.0+repack0-2, and usb-modeswitch-data 20150115-1.  I am using the Huawei 
12d1:1446 device -- the same mentioned in archived bug # 751271.

The catch-all udev rule does not work:

​# Generic entry for all Huawei devices
ATTRS{idVendor}=="12d1", ATTR{bInterfaceNumber}=="00", 
ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '%b/%k'"​


The switching does not occur by udev automatically.  Switching by manually 
calling usb_modeswitch works fine:

usb_modeswitch -v 12d1 -p 1446 -J

And... a few moments later by new device 12d1:1506 appears and all is well.

If I simply modify the udev rule, everything works automatically.  For example, 
this rule works:

ATTR{idVendor}=="12d1", ATTR{idProduct}=="1446", RUN+="/lib/udev/usb_modeswitch 
'%b/%k'"

This does not work, however:

ATTR{idVendor}=="12d1", ATTR{idProduct}=="1446", ATTR{bInterfaceNumber}=="00", 
RUN+="/lib/udev/usb_modeswitch '%b/%k'"

Here's an except from `udevadm info` **before switching**:

  looking at device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0':
    KERNEL=="2-1:1.0"
    SUBSYSTEM=="usb"
    DRIVER=="usb-storage"
    ATTR{bInterfaceClass}=="08"
    ATTR{bInterfaceSubClass}=="06"
    ATTR{bInterfaceProtocol}=="50"
    ATTR{bNumEndpoints}=="02"
    ATTR{supports_autosuspend}=="1"
    ATTR{bAlternateSetting}==" 0"
    ATTR{bInterfaceNumber}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1':
    KERNELS=="2-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1"
    ATTRS{idVendor}=="12d1"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="18"
    ATTRS{configuration}=="Huawei Configuration"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0000"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="313"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Huawei Technologies"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="1446"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="HUAWEI Mobile"

And, here is the output from `udevadm test -a add 
/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0` **before switching**:

calling: test
version 215
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

load module index
Network interface NamePolicy= disabled on kernel commandline, ignoring.
timestamp of '/etc/systemd/network' changed
timestamp of '/lib/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Created link configuration context.
timestamp of '/etc/udev/rules.d' changed
read rules file: /lib/udev/rules.d/40-usb_modeswitch.rules
read rules file: /lib/udev/rules.d/42-usb-hid-pm.rules
read rules file: /lib/udev/rules.d/50-firmware.rules
read rules file: /lib/udev/rules.d/50-udev-default.rules
read rules file: /lib/udev/rules.d/55-dm.rules
read rules file: /lib/udev/rules.d/60-cdrom_id.rules
read rules file: /lib/udev/rules.d/60-drm.rules
read rules file: /lib/udev/rules.d/60-gnupg.rules
read rules file: /lib/udev/rules.d/60-keyboard.rules
read rules file: /lib/udev/rules.d/60-persistent-alsa.rules
read rules file: /lib/udev/rules.d/60-persistent-input.rules
read rules file: /lib/udev/rules.d/60-persistent-serial.rules
read rules file: /lib/udev/rules.d/60-persistent-storage-dm.rules
read rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules
read rules file: /lib/udev/rules.d/60-persistent-storage.rules
read rules file: /lib/udev/rules.d/60-persistent-v4l.rules
read rules file: /lib/udev/rules.d/61-accelerometer.rules
read rules file: /lib/udev/rules.d/64-btrfs.rules
read rules file: /lib/udev/rules.d/64-xorg-xkb.rules
read rules file: /lib/udev/rules.d/69-xorg-vmmouse.rules
read rules file: /etc/udev/rules.d/70-persistent-net.rules
read rules file: /lib/udev/rules.d/70-power-switch.rules
read rules file: /lib/udev/rules.d/70-uaccess.rules
read rules file: /lib/udev/rules.d/71-seat.rules
read rules file: /lib/udev/rules.d/73-idrac.rules
read rules file: /lib/udev/rules.d/73-seat-late.rules
read rules file: /lib/udev/rules.d/75-net-description.rules
read rules file: /lib/udev/rules.d/75-persistent-net-generator.rules
read rules file: /lib/udev/rules.d/75-probe_mtd.rules
read rules file: /lib/udev/rules.d/75-tty-description.rules
read rules file: /lib/udev/rules.d/78-sound-card.rules
read rules file: /lib/udev/rules.d/80-drivers.rules
read rules file: /lib/udev/rules.d/80-net-setup-link.rules
read rules file: /lib/udev/rules.d/80-networking.rules
read rules file: /lib/udev/rules.d/85-hwclock.rules
read rules file: /lib/udev/rules.d/90-alsa-restore.rules
read rules file: /lib/udev/rules.d/95-udev-late.rules
read rules file: /etc/udev/rules.d/99-custom.rules
read rules file: /lib/udev/rules.d/99-systemd.rules
rules contain 49152 bytes tokens (4096 * 12 bytes), 14073 bytes strings
3585 strings (38731 bytes), 2565 de-duplicated (25679 bytes), 1021 trie nodes 
used
RUN 'usb_modeswitch '%b/%k'' /lib/udev/rules.d/40-usb_modeswitch.rules:24
IMPORT builtin 'hwdb' /lib/udev/rules.d/50-udev-default.rules:11
RUN 'kmod load $env{MODALIAS}' /lib/udev/rules.d/80-drivers.rules:5
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0
DEVTYPE=usb_interface
DRIVER=usb-storage
ID_MODEL_FROM_DATABASE=E1552/E1800/E173 (HSPA modem)
ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd.
INTERFACE=8/6/80
MODALIAS=usb:v12D1p1446d0000dc00dsc00dp00ic08isc06ip50in00
PRODUCT=12d1/1446/0
SUBSYSTEM=usb
TYPE=0/0/0
USEC_INITIALIZED=23090527
run: 'usb_modeswitch '2-1/2-1:1.0''
run: 'kmod load usb:v12D1p1446d0000dc00dsc00dp00ic08isc06ip50in00'
unload module index
Unloaded link configuration context.


I should also note that running /lib/udev/usb_modeswitch '2-1/2-1:1.0' manually 
does not cause the USB device to switch.
Interestingly, running /lib/udev/usb_modeswitch '2-1' does cause the USB device 
to switch.

This could be why setting the rule on the USB device works but setting the rule 
on the USB device **interface** does not.

I'd be happy to provide more information as needed.

Thanks!

-- System Information:
Debian Release: 8.2
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.16.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

usb-modeswitch-data depends on no packages.

Versions of packages usb-modeswitch-data recommends:
ii  udev            215-17+deb8u2
ii  usb-modeswitch  2.2.0+repack0-2

usb-modeswitch-data suggests no packages.

-- no debconf information

Reply via email to