umass to /dev/da* mapping

Polytropon freebsd at
Mon Dec 5 17:25:11 UTC 2011

On Mon, 5 Dec 2011 17:08:15 +0000, Mike Clarke wrote:
> I have a fairly simple perl script which is run by devd when I plug in a 
> USB memory stick. The script sets up some permissions and a link to 
> make life easy for a user to mount the memory stick.
> This normally works fine but there are problems if the memory stick is 
> already inserted before booting.
> Normally my internal 4 slot memory card reader is detected as umass0 
> with devices da[0-3] and when the USB memory stick is inserted it comes 
> up as umass1 with device da4 and my script works on that assumption. If 
> the USB stick is present on booting then it appears as da0 on umass0 
> and the card reader is da[1-4] on umass1 so the script fails.
> Is there any convenient way for my script to determine which da* devices 
> correspond to the umass device name?

Maybe you could use a matching against

	match "bus" "0x????";
	match "vendor" "0x????";
	match "product" "0x????";
	match "release" "0x????";

to determine which device you're currently accessing.
As the USB IDs stay the same for at least the card
reader, it should be easy to conclude. :-)

USB devices are usually "enumerated" in the order they
appear to the system.

Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...

More information about the freebsd-questions mailing list