Why this flash drive not detected in devd?

Sagara Wijetunga sagara at tomahawk.com.sg
Fri Jul 10 04:59:37 UTC 2009


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:
>> # 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
+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
!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? 

2. Is this issue been fixed in FreeBSD 8.0? 

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 without further delay. 

Best regards
Sagara


More information about the freebsd-questions mailing list