Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Jul 2009 03:36:09 -0500
From:      "Sagara Wijetunga" <sagara@tomahawk.com.sg>
To:        Roland Smith <rsmith@xs4all.nl>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Why this flash drive not detected in devd?
Message-ID:  <20090711083609.32515.qmail@us1.tomahawkonline.net>
In-Reply-To: <20090710184945.GA4323@slackbox.xs4all.nl>
References:  <4A560B28.6080705@tomahawk.com.sg> <20090709165927.GB63043@slackbox.xs4all.nl> <20090710014128.13958.qmail@us1.tomahawkonline.net> <20090710184945.GA4323@slackbox.xs4all.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
Roland Smith writes: 

> On Thu, Jul 09, 2009 at 08:41:28PM -0500, Sagara Wijetunga wrote:
>>  Roland Smith writes: 
>> 
>>    On Thu, Jul 09, 2009 at 11:22:16PM +0800, Sagara Wijetunga wrote: 
>> 
>>      Hi FreeBSD community 
>> 
>>      This is FreeBSD 7.2 on i386. 
>> 
>>      sysctl -a | grep dev.umass
>>      dev.umass.1.%desc: Imation Flash Drive, class 0/0, rev 2.00/1.03, addr 3
>>      dev.umass.1.%driver: umass
>>      dev.umass.1.%location: port=6 interface=0
>>      dev.umass.1.%pnpinfo: vendor=0x0718 product=0x0081 devclass=0x00 devsubclass=0x00
>>      release=0x0103 sernum="14925B00" intclass=0x08 intsubclass=0x06
>>      dev.umass.1.%parent: uhub4 
>> 
>>      Following added to /etc/devd.conf:
>>       1. Imation Flash Drive, class 0/0, rev 2.00/1.03, addr 3
>>      attach 200 {
>>          match "vendor"  "0x0718";
>>          match "product" "0x0081";
>>          match "serial"  "14925B00";
>>          action "touch /tmp/Imation-Flash-Drive-detected";
>>      }; 
>> 
>>      Could I know why the flash drive is not detected on attach? 
>> 
>>    The USB subsystem isn't currently equipped to notify devd (technically,
>>    the devctl_notify function isn't used in the USB stack). So the only
>>    notification you'll get is when devfs creates a device. Since there is
>>    no predictable link between a USB device and a disk device, info from
>>    the USB stack would be less then usefull. 
>> 
>>    You can check this by reading from /dev/devctrl (when devd is not
>>    running, since this device can only be opened by one program at a time)
>>    just after you plugged in the device. For my usb thumbdrive I get: 
>> 
>>    cat /dev/devctl
>>    !system=DEVFS subsystem=CDEV type=CREATE cdev=pass2
>>    !system=DEVFS subsystem=CDEV type=CREATE cdev=da0
>>    !system=DEVFS subsystem=CDEV type=CREATE cdev=da0s1
>>    !system=DEVFS subsystem=CDEV type=CREATE cdev=msdosfs/RFS1 
>> 
>>    While sysctl gives: 
>> 
>>    dev.umass.0.%desc: vendor 0x3538 USB Mass Storage Device, class 0/0, rev 2.00/1.00, addr 2
>>    dev.umass.0.%driver: umass
>>    dev.umass.0.%location: port=4 interface=0
>>    dev.umass.0.%pnpinfo: vendor=0x3538 product=0x0042 devclass=0x00 devsubclass=0x00 release=0x0100
>>    sernum="000000000004E1" intclass=0x08 intsubclass=0x06
>>    dev.umass.0.%parent: uhub4 
>> 
>>    So for now, you'll have to match on the creation of da* devices, or
>>    labels if you use those. 
>> 
>>  Roland, thanks for the reply. 
>> 
>>  Here is my side info on FreeBSD 7.2:
>>  cat /dev/devctl
>>  ? at port=6 vendor=0x0718 product=0x0081 devclass=0x00 devsubclass=0x00 release=0x0103
>>  sernum="14925B00" on uhub4
> 
> The "?" means "Unknown device detected". See devctl(4). This is _not_
> noticed be devd, I think 
> 
>>  +umass1 vendor=0x0718 product=0x0081 devclass=0x00 devsubclass=0x00 release=0x0103
>>  sernum="14925B00" intclass=0x08 intsubclass=0x06 at port=6 interface=0 vendor=0x0718
>>  product=0x0081 devclass=0x00 devsubclass=0x00 release=0x0103 sernum="14925B00" intclass=0x08
>>  intsubclass=0x06 on uhub4
> 
> Note that while "+" denotes a device creation event, it is for umass1,
> not for a disk device. 
> 
>>  !system=DEVFS subsystem=CDEV type=CREATE cdev=pass4
>>  !system=DEVFS subsystem=CDEV type=CREATE cdev=da4
>>  !system=DEVFS subsystem=CDEV type=CREATE cdev=da4s1
>>  !system=DEVFS subsystem=CDEV type=CREATE cdev=msdosfs/ 
>> 
>>  I have few questions:
>>  1. Above shows info we need available under '?' and '+' lines. What
>>  we need is vendor, product and sernum. Can these be accessed in
>>  addition to cdev?
> 
> Not currently. The hooks into the USB subsystem are missing.  
> 
> But even if they were there, that info is not very usefull in
> itself. You also need to know the disk device number that the USB drive
> gets! If there were hooks in the USB system, you would get _multiple_
> events in devd: 
> 
> 1) USB device plugged in. (serial no etc...)
> 2) pass device created by devfs
> 3) da devices created by devfs
> 4) msdodfs/ devices created by devfs. 
> 
> So you would need to remember the first event until the device creation
> happens. Devd itself has no facilities for that. Sure, you can cobble
> something together with tempoeary files etc., but that would be fragile. 
> 
> And as I've said before, there is no one-on-one link between a USB
> device that gets plugged in and the disk device that is assigned to it!
>  
>>  2. Is this issue been fixed in FreeBSD 8.0?
> 
> I don't know. The USB stack was rewritten for 8.0. Ask on the -current
> or -hackers list.
>  
>>  3. Can you or someone think of a patch against FreeBSD 7.2 to provide
>>  vendor, product and sernum in addition to cdev? It's very big help
>>  someone could extend to us to release Tomahawk Desktop
> 
> As I explained above, this would not accomplish what you want. 
> 
> Again, maybe you should check out sysutils/hal. 
> 

I prefer to handle mounting through an automounter even without KDE running. 

Could I know which program print following lines to the /dev/devctl:
!system=DEVFS subsystem=CDEV type=CREATE cdev=pass4
!system=DEVFS subsystem=CDEV type=CREATE cdev=da4
!system=DEVFS subsystem=CDEV type=CREATE cdev=da4s1
!system=DEVFS subsystem=CDEV type=CREATE cdev=msdosfs/ 

Is there a way in FreeBSD 7.2 to know what devices (eg. da0, da1, etc) are 
attached to a given USB driver (umass0, umass1, etc)? 

Regards
Sagara



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