From owner-freebsd-gnome@FreeBSD.ORG Fri Jan 11 11:49:04 2008 Return-Path: Delivered-To: freebsd-gnome@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B30F916A419; Fri, 11 Jan 2008 11:49:04 +0000 (UTC) (envelope-from avg@icyb.net.ua) Received: from falcon.cybervisiontech.com (falcon.cybervisiontech.com [217.20.163.9]) by mx1.freebsd.org (Postfix) with ESMTP id 04DC913C467; Fri, 11 Jan 2008 11:49:02 +0000 (UTC) (envelope-from avg@icyb.net.ua) Received: from localhost (localhost [127.0.0.1]) by falcon.cybervisiontech.com (Postfix) with ESMTP id E502B744024; Fri, 11 Jan 2008 13:49:00 +0200 (EET) X-Virus-Scanned: Debian amavisd-new at falcon.cybervisiontech.com Received: from falcon.cybervisiontech.com ([127.0.0.1]) by localhost (falcon.cybervisiontech.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ysp8z+aWY4eF; Fri, 11 Jan 2008 13:49:00 +0200 (EET) Received: from [10.2.1.87] (gateway.cybervisiontech.com.ua [88.81.251.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by falcon.cybervisiontech.com (Postfix) with ESMTP id 5993B744002; Fri, 11 Jan 2008 13:49:00 +0200 (EET) Message-ID: <478757A9.1010406@icyb.net.ua> Date: Fri, 11 Jan 2008 13:48:57 +0200 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.9 (X11/20071116) MIME-Version: 1.0 To: freebsd-gnome@freebsd.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Joe Marcus Clarke Subject: hal: usb flash drive is seen as scsi device X-BeenThere: freebsd-gnome@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: GNOME for FreeBSD -- porting and maintaining List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Jan 2008 11:49:04 -0000 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