hal: usb flash drive is seen as scsi device
Joe Marcus Clarke
marcus at FreeBSD.org
Fri Jan 11 13:37:54 PST 2008
On Fri, 2008-01-11 at 13:48 +0200, Andriy Gapon wrote:
> 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.
This is strange. I have a Lexar Jumpdrive (USB flash drive), and I see
the full hierarchy. I don't have a card reader with which to compare,
though. This may be symptomatic of a bad device. If you run hald as:
/usr/local/sbin/hald --daemon=no --verbose=yes
You may see some additional warnings.
Joe
>
> --------------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)
>
--
Joe Marcus Clarke
FreeBSD GNOME Team :: gnome at FreeBSD.org
FreeNode / #freebsd-gnome
http://www.FreeBSD.org/gnome
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-gnome/attachments/20080111/330815a1/attachment.pgp
More information about the freebsd-gnome
mailing list