[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

HAL and ipw2100



Hi all,

I have spent a couple of hours googling this problem, to no avail.

The "presenting problem" is that NetworkManager doesn't correctly handle my Intel PRO/Wireless 2100B card.  nm-tool says this about it:

- Device: eth2 ----------------------------------------------------------------
  NM Path:           /org/freedesktop/NetworkManager/Devices/eth2
  Type:              Wired
  Driver:            ipw2100
  Active:            no
  HW Address:        00:0C:F1:22:65:99

  Capabilities:
    Supported:       yes
    Carrier Detect:  yes

  Wired Settings
    Hardware Link:   no

Obviously the type 'Wired' is not right.

After digging around a bit, I discovered that this is because HAL doesn't recognize the card correctly.  I'm a bit out of my depth here, having just trusted HAL in the past, but here's what I found.  lshal reports this about the card:

udi = '/org/freedesktop/Hal/devices/pci_8086_1043'
  info.udi = '/org/freedesktop/Hal/devices/pci_8086_1043'  (string)
  linux.subsystem = 'pci'  (string)
  linux.hotplug_type = 1  (0x1)  (int)
  pci.subsys_product = 'Unknown (0x2561)'  (string)
  pci.subsys_vendor = 'Intel Corporation'  (string)
  info.product = 'PRO/Wireless LAN 2100 3B Mini PCI Adapter'  (string)
  pci.product = 'PRO/Wireless LAN 2100 3B Mini PCI Adapter'  (string)
  info.vendor = 'Intel Corporation'  (string)
  pci.vendor = 'Intel Corporation'  (string)
  pci.device_protocol = 0  (0x0)  (int)
  pci.device_subclass = 128  (0x80)  (int)
  pci.device_class = 2  (0x2)  (int)
  pci.subsys_vendor_id = 32902  (0x8086)  (int)
  pci.subsys_product_id = 9569  (0x2561)  (int)
  pci.vendor_id = 32902  (0x8086)  (int)
  pci.product_id = 4163  (0x1043)  (int)
  info.linux.driver = 'ipw2100'  (string)
  pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:02.0'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_8086_244e'  (string)
  info.bus = 'pci'  (string)
  linux.sysfs_path_device = '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:02.0'  (string)
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:02.0'  (string)

udi = '/org/freedesktop/Hal/devices/net_00_0c_f1_22_65_99'
  info.udi = '/org/freedesktop/Hal/devices/net_00_0c_f1_22_65_99'  (string)
  linux.subsystem = 'net'  (string)
  linux.hotplug_type = 2  (0x2)  (int)
  net.80203.mac_address = 55585170841  (0xcf1226599)  (uint64)
  info.product = 'Networking Interface'  (string)
  net.arp_proto_hw_id = 1  (0x1)  (int)
  net.linux.ifindex = 4  (0x4)  (int)
  net.address = '00:0c:f1:22:65:99'  (string)
  net.interface = 'eth2'  (string)
  net.physical_device = '/org/freedesktop/Hal/devices/pci_8086_1043'  (string)
  info.capabilities = {'net', 'net.80203'} (string list)
  info.category = 'net.80203'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_8086_1043'  (string)
  linux.sysfs_path = '/sys/class/net/eth2'  (string)


Obviously the info.category setting is wrong, among others.  I tried adding this fdi file to /etc/hal/fdi/information (modified version of something I found on the web):

<deviceinfo version="0.2">
  <device>
    <match key="info.bus" string="pci">
     <match key="pci.linux.sysfs_path" string="/sys/devices/pci0000:00/0000:00: 1e.0/0000:02:02.0">
      <merge key="info.capabilities" type="string">net.80211</merge>
      <merge key="info.product" type="string">PRO/Wireless LAN 2100 3B Mini PCI Adapter</merge>
      <merge key="net.linux.sysfs_path" type="string">/sys/class/net/wlan0</merge>
      <merge key="net.interface" type="string">wlan0</merge>
      <merge key=" net.linux.driver" type="string">ipw2100</merge>
      <merge key="net.media" type="string">Ethernet</merge>
      <merge key="info.category" type="string"> net.80211</merge>
     </match>
    </match>
  </device>
</deviceinfo>

When this is installed the lshal output changes to this:

udi = '/org/freedesktop/Hal/devices/pci_8086_1043'
  info.udi = '/org/freedesktop/Hal/devices/pci_8086_1043'  (string)
  info.category = 'net.80211'  (string)
  net.media = 'Ethernet'  (string)
  net.linux.driver = 'ipw2100'  (string)
  net.interface = 'wlan0'  (string)
  net.linux.sysfs_path = '/sys/class/net/wlan0'  (string)
  info.capabilities = 'net.80211'  (string)
  linux.subsystem = 'pci'  (string)
  linux.hotplug_type = 1  (0x1)  (int)
  pci.subsys_product = 'Unknown (0x2561)'  (string)
  pci.subsys_vendor = 'Intel Corporation'  (string)
  info.product = 'PRO/Wireless LAN 2100 3B Mini PCI Adapter'  (string)
  pci.product = 'PRO/Wireless LAN 2100 3B Mini PCI Adapter'  (string)
  info.vendor = 'Intel Corporation'  (string)
  pci.vendor = 'Intel Corporation'  (string)
  pci.device_protocol = 0  (0x0)  (int)
  pci.device_subclass = 128  (0x80)  (int)
  pci.device_class = 2  (0x2)  (int)
  pci.subsys_vendor_id = 32902  (0x8086)  (int)
  pci.subsys_product_id = 9569  (0x2561)  (int)
  pci.vendor_id = 32902  (0x8086)  (int)
  pci.product_id = 4163  (0x1043)  (int)
  info.linux.driver = 'ipw2100'  (string)
  pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00: 1e.0/0000:02:02.0'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_8086_244e'  (string)
  info.bus = 'pci'  (string)
  linux.sysfs_path_device = '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:02.0'  (string)
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:02.0'  (string)

udi = '/org/freedesktop/Hal/devices/net_00_0c_f1_22_65_99'
  info.udi = '/org/freedesktop/Hal/devices/net_00_0c_f1_22_65_99'  (string)
  linux.subsystem = 'net'  (string)
  linux.hotplug_type = 2  (0x2)  (int)
  net.80203.mac_address = 55585170841  (0xcf1226599)  (uint64)
  info.product = 'Networking Interface'  (string)
  net.arp_proto_hw_id = 1  (0x1)  (int)
  net.linux.ifindex = 4  (0x4)  (int)
  net.address = '00:0c:f1:22:65:99'  (string)
  net.interface = 'eth2'  (string)
  net.physical_device = '/org/freedesktop/Hal/devices/pci_8086_1043'  (string)
  info.capabilities = {'net', 'net.80203'} (string list)
  info.category = 'net.80203'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_8086_1043'  (string)
  linux.sysfs_path = '/sys/class/net/eth2'  (string)


ie. the network device hasn't picked up any of the extra capabilities.

Does anyone know either what I've got set up wrong, or what magic to add to the fdi to make this work?

Thanks,
Tom Cook

Reply to: