Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Jan 2008 13:48:57 +0200
From:      Andriy Gapon <avg@icyb.net.ua>
To:        freebsd-gnome@freebsd.org
Cc:        Joe Marcus Clarke <marcus@freebsd.org>
Subject:   hal: usb flash drive is seen as scsi device
Message-ID:  <478757A9.1010406@icyb.net.ua>

next in thread | raw e-mail | index | archive | help

Please compare two snippets of lshal output below.
In the first case I have a USB card reader connected, in the second case
I have a USB flash drive connected. In the first case storage.bus is
equal to usb, in the second case it is scsi.

Looking at the code in hf_scsi_block_device_new() function I think that
value of storage.bus is determined by looking at info.bus values of
parent devices.

The snippets below show that in the case of the flash drive there is one
"missing link": 'SCSI Host Adapter' is a direct child of 'Mass Storage
Device'. In the case of the card reader there is also 'USB Mass Storage
Interface' between them. The latter has info.bus='usb'.
But in the second case, there is no device with info.bus='usb' at all,
only with info.bus='usb_device'.

I am not sure if an easy way of teaching hf_scsi_block_device_new() to
recognize usb_device bus would be sufficient.
It is a little bit weird that there is such difference in device
hierarchies for such a similar devices.

--------------Snippet #1, USB card reader----------------------------
udi = '/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B'
  info.udi =
'/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B'  (string)
  freebsd.unit = 0  (0x0)  (int)
  freebsd.driver = 'umass'  (string)
  usb_device.num_interfaces = 1  (0x1)  (int)
  usb_device.can_wake_up = false  (bool)
  usb_device.vendor = 'Generic'  (string)
  usb_device.product = 'Mass Storage Device'  (string)
  usb_device.serial = '058F312D81B'  (string)
  usb_device.device_revision_bcd = 297  (0x129)  (int)
  usb_device.vendor_id = 1423  (0x58f)  (int)
  usb_device.product_id = 25442  (0x6362)  (int)
  usb_device.version_bcd = 512  (0x200)  (int)
  usb_device.speed_bcd = 294912  (0x48000)  (int)
  usb_device.port_number = 2  (0x2)  (int)
  usb_device.num_ports = 0  (0x0)  (int)
  usb_device.max_power = 250  (0xfa)  (int)
  usb_device.is_self_powered = false  (bool)
  usb_device.device_protocol = 0  (0x0)  (int)
  usb_device.device_subclass = 0  (0x0)  (int)
  usb_device.device_class = 0  (0x0)  (int)
  usb_device.num_configurations = 1  (0x1)  (int)
  usb_device.configuration_value = 1  (0x1)  (int)
  usb_device.bus_number = 1  (0x1)  (int)
  info.vendor = 'Generic'  (string)
  info.product = 'Mass Storage Device'  (string)
  info.bus = 'usb_device'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_10de_026e'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B_if0'
  info.udi =
'/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B_if0'  (string)
  usb.interface.number = 0  (0x0)  (int)
  usb.interface.protocol = 80  (0x50)  (int)
  usb.interface.subclass = 6  (0x6)  (int)
  usb.interface.class = 8  (0x8)  (int)
  info.product = 'USB Mass Storage Interface'  (string)
  usb.bus_number = 1  (0x1)  (int)
  usb.configuration_value = 1  (0x1)  (int)
  usb.num_configurations = 1  (0x1)  (int)
  usb.device_class = 0  (0x0)  (int)
  usb.device_subclass = 0  (0x0)  (int)
  usb.device_protocol = 0  (0x0)  (int)
  usb.is_self_powered = false  (bool)
  usb.max_power = 250  (0xfa)  (int)
  usb.num_ports = 0  (0x0)  (int)
  usb.port_number = 2  (0x2)  (int)
  usb.speed_bcd = 294912  (0x48000)  (int)
  usb.version_bcd = 512  (0x200)  (int)
  usb.product_id = 25442  (0x6362)  (int)
  usb.vendor_id = 1423  (0x58f)  (int)
  usb.device_revision_bcd = 297  (0x129)  (int)
  usb.serial = '058F312D81B'  (string)
  usb.product = 'USB Mass Storage Interface'  (string)
  usb.vendor = 'Generic'  (string)
  usb.can_wake_up = false  (bool)
  usb.num_interfaces = 1  (0x1)  (int)
  info.bus = 'usb'  (string)
  info.parent =
'/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B'  (string)

udi =
'/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B_if0_scsi_host'
  info.udi =
'/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B_if0_scsi_host'
 (string)
  info.product = 'SCSI Host Adapter'  (string)
  scsi_host.host = 6  (0x6)  (int)
  info.bus = 'scsi_host'  (string)
  info.parent =
'/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B_if0'  (string)

udi = '/org/freedesktop/Hal/devices/storage_model_USB_SD_Reader'
  info.addons = {'hald-addon-storage'} (string list)
  block.storage_device =
'/org/freedesktop/Hal/devices/storage_model_USB_SD_Reader'  (string)
  info.udi = '/org/freedesktop/Hal/devices/storage_model_USB_SD_Reader'
 (string)
  block.is_volume = false  (bool)
  block.freebsd.cam_path = '6,0,0'  (string)
  storage.lun = 0  (0x0)  (int)
  storage.firmware_revision = '1.00'  (string)
  info.product = 'USB SD Reader'  (string)
  info.vendor = 'Generic'  (string)
  storage.vendor = 'Generic'  (string)
  storage.model = 'USB SD Reader'  (string)
  storage.physical_device =
'/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B_if0'  (string)
  storage.no_partitions_hint = false  (bool)
  storage.automount_enabled_hint = true  (bool)
  storage.media_check_enabled = true  (bool)
  storage.hotpluggable = true  (bool)
  storage.requires_eject = false  (bool)
  storage.removable = true  (bool)
  storage.drive_type = 'sd_mmc'  (string)
  storage.bus = 'usb'  (string)
  block.minor = 135  (0x87)  (int)
  block.major = 0  (0x0)  (int)
  block.device = '/dev/da0'  (string)
  info.category = 'storage'  (string)
  info.bus = 'block'  (string)
  info.capabilities = {'block', 'storage'} (string list)
  freebsd.unit = 0  (0x0)  (int)
  freebsd.driver = 'da'  (string)
  info.parent =
'/org/freedesktop/Hal/devices/usb_device_58f_6362_058F312D81B_if0_scsi_host_scsi_device_lun0'
 (string)

--------------Snippet #2, USB Flash Drive---------------------------

udi = '/org/freedesktop/Hal/devices/usb_device_58f_6387_AYBDZ52Y'
  info.udi = '/org/freedesktop/Hal/devices/usb_device_58f_6387_AYBDZ52Y'
 (string)
  freebsd.unit = 0  (0x0)  (int)
  freebsd.driver = 'umass'  (string)
  usb_device.num_interfaces = 1  (0x1)  (int)
  usb_device.can_wake_up = false  (bool)
  usb_device.vendor = 'Flash'  (string)
  usb_device.product = 'Drive AU_USB20'  (string)
  usb_device.serial = 'AYBDZ52Y'  (string)
  usb_device.device_revision_bcd = 323  (0x143)  (int)
  usb_device.vendor_id = 1423  (0x58f)  (int)
  usb_device.product_id = 25479  (0x6387)  (int)
  usb_device.version_bcd = 512  (0x200)  (int)
  usb_device.speed_bcd = 294912  (0x48000)  (int)
  usb_device.port_number = 2  (0x2)  (int)
  usb_device.num_ports = 0  (0x0)  (int)
  usb_device.max_power = 100  (0x64)  (int)
  usb_device.is_self_powered = false  (bool)
  usb_device.device_protocol = 0  (0x0)  (int)
  usb_device.device_subclass = 0  (0x0)  (int)
  usb_device.device_class = 0  (0x0)  (int)
  usb_device.num_configurations = 1  (0x1)  (int)
  usb_device.configuration_value = 1  (0x1)  (int)
  usb_device.bus_number = 1  (0x1)  (int)
  info.vendor = 'Flash'  (string)
  info.product = 'Drive AU_USB20'  (string)
  info.bus = 'usb_device'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_10de_026e'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_58f_6387_AYBDZ52Y_scsi_host'
  info.udi =
'/org/freedesktop/Hal/devices/usb_device_58f_6387_AYBDZ52Y_scsi_host'
(string)
  info.product = 'SCSI Host Adapter'  (string)
  scsi_host.host = 6  (0x6)  (int)
  info.bus = 'scsi_host'  (string)
  info.parent =
'/org/freedesktop/Hal/devices/usb_device_58f_6387_AYBDZ52Y'  (string)

udi = '/org/freedesktop/Hal/devices/storage_serial___0'
  info.addons = {'hald-addon-storage'} (string list)
  block.storage_device =
'/org/freedesktop/Hal/devices/storage_serial___0'  (string)
  info.udi = '/org/freedesktop/Hal/devices/storage_serial___0'  (string)
  block.is_volume = false  (bool)
  storage.serial = '^_'  (string)
  block.freebsd.cam_path = '6,0,0'  (string)
  storage.lun = 0  (0x0)  (int)
  storage.firmware_revision = '8.07'  (string)
  info.product = 'Drive AU_USB20'  (string)
  info.vendor = 'Flash'  (string)
  storage.vendor = 'Flash'  (string)
  storage.model = 'Drive AU_USB20'  (string)
  storage.physical_device =
'/org/freedesktop/Hal/devices/usb_device_58f_6387_AYBDZ52Y_scsi_host_scsi_device_lun0'
 (string)
  storage.no_partitions_hint = false  (bool)
  storage.automount_enabled_hint = true  (bool)
  storage.media_check_enabled = true  (bool)
  storage.hotpluggable = false  (bool)
  storage.requires_eject = false  (bool)
  storage.removable = true  (bool)
  storage.drive_type = 'disk'  (string)
  storage.bus = 'scsi'  (string)
  block.minor = 152  (0x98)  (int)
  block.major = 0  (0x0)  (int)
  block.device = '/dev/da0'  (string)
  info.category = 'storage'  (string)
  info.bus = 'block'  (string)
  info.capabilities = {'block', 'storage'} (string list)
  freebsd.unit = 0  (0x0)  (int)
  freebsd.driver = 'da'  (string)
  info.parent =
'/org/freedesktop/Hal/devices/usb_device_58f_6387_AYBDZ52Y_scsi_host_scsi_device_lun0'
 (string)

-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?478757A9.1010406>