Comment 16 for bug 360905

Revision history for this message
Mikel Ward (mikelward) wrote :

From looking at the source code, we have a udev test and a HAL test.

The udev path looks for ID_NM_MODEM_GSM=1 in the capabilities.

On my system, my Sierra device has:

$ sudo /sbin/udevadm info --query=env --path=/sys/devices/pci0000:00/0000:00:1e.0/0000:03:01.0/0000:04:00.0/usb8/8-1/8-1:1.0
UDEV_LOG=3
DEVPATH=/devices/pci0000:00/0000:00:1e.0/0000:03:01.0/0000:04:00.0/usb8/8-1/8-1:1.0
DEVTYPE=usb_interface
DRIVER=sierra
DEVICE=/proc/bus/usb/008/002
PRODUCT=1199/6820/2
TYPE=0/0/0
INTERFACE=255/255/255
MODALIAS=usb:v1199p6820d0002dc00dsc00dp00icFFiscFFipFF

So no GSM string.

But in the HAL path, it looks for 'GSM-07.07' in modem.command_sets, which my system does have:

$ sudo lshal
[...]
udi = '/org/freedesktop/Hal/devices/usb_device_1199_6820_noserial_if0_serial_usb_0'
  access_control.file = '/dev/ttyUSB0' (string)
  access_control.type = 'modem' (string)
  info.callouts.add = {'hal-acl-tool --add-device'} (string list)
  info.callouts.remove = {'hal-acl-tool --remove-device'} (string list)
  info.capabilities = {'serial', 'modem', 'access_control'} (string list)
  info.category = 'serial' (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1199_6820_noserial_if0' (string)
  info.product = 'AC875 Device' (string)
  info.subsystem = 'tty' (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1199_6820_noserial_if0_serial_usb_0' (string)
  linux.device_file = '/dev/ttyUSB0' (string)
  linux.hotplug_type = 2 (0x2) (int)
  linux.subsystem = 'tty' (string)
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:03:01.0/0000:04:00.0/usb8/8-1/8-1:1.0/ttyUSB0/tty/ttyUSB0' (string)
  modem.command_sets = {'GSM-07.07', 'GSM-07.05'} (string list)
  serial.device = '/dev/ttyUSB0' (string)
  serial.originating_device = '/org/freedesktop/Hal/devices/usb_device_1199_6820_noserial_if0' (string)
  serial.port = 0 (0x0) (int)
  serial.type = 'usb' (string)
[...]

Then the code says we trust udev over HAL...

        /* Case (c): HAL thinks it's a modem, but udev doesn't */
        nm_info ("(%s): ignoring due to lack of probed mobile broadband capabilties", ttyname);
        later = FALSE;

So I've got to make udev return that extra capability, which is obviously what Alexander's patches are about, but at least know I know why and how I might be able to help.