# [SOLVED] Udev and External Hard Drive

## linuxpyro

I just got an external hard drive, and am trying to set it up with udev to symlink it when I boot up, so it's always, say, /dev/externalhd1.  The hard drive is using USB 2.0, and I can see it as /dev/sda; all I want to do now is set up the symlink.  According to the mass storage how-to in the Gentoo wiki, I have to use the following command to find out the serial number of the HD:

```
# udevinfo -a -p `udevinfo -q path -n /dev/sda`
```

However, when I run it, I get this, I don't get any output at all.  Thinking this was a typo in the Wiki, I tried this command:

```
udevinfo -a -p 'udevinfo -q path -n /dev/hda'
```

This time I got the following output:

```
couldn't get the class device
```

I haven't been able to find anything helpful on the forums so far, or through Google.  Anyone have any ideas?

Edit:  Here is my 50-udev.rules file:

```

# /etc/udev/rules/50-udev.rules:  device naming rules for udev

#

# Gentoo specific rules

#

# There are a number of modifiers that are allowed to be used in some of the

# fields.  See the udev man page for a full description of them.

#

# Try not to modify this file, if you wish to change things, create a new rule

# file that can be run before this one.

#

# console

KERNEL=="pty[pqrstuvwxyzabcdef][0123456789abcdef]", NAME="%k", GROUP="tty",    OPTIONS="last_rule"

KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", NAME="%k", GROUP="tty",    OPTIONS="last_rule"

KERNEL=="vcs*",                 NAME="%k", GROUP="tty",                 OPTIONS="last_rule"

KERNEL=="vcsa*",                NAME="%k", GROUP="tty",                 OPTIONS="last_rule"

KERNEL=="tty",                  NAME="%k", GROUP="tty", MODE="0666",    OPTIONS="last_rule"

KERNEL=="tty[0-9]",             NAME="%k", GROUP="tty",                 OPTIONS="last_rule"

KERNEL=="tty[0-9][0-9]",        NAME="%k", GROUP="tty",                 OPTIONS="last_rule"

KERNEL=="console",              NAME="%k", GROUP="tty", MODE="0600"

KERNEL=="ptmx",                 NAME="%k", GROUP="tty", MODE="0666"

# tty devices

KERNEL=="ttyS[0-9]*",   NAME="tts/%n", SYMLINK+="%k", GROUP="tty"

KERNEL=="ttyUSB[0-9]*", NAME="tts/USB%n", GROUP="tty", MODE="0660"

KERNEL=="ippp0",        NAME="%k", GROUP="tty"

KERNEL=="isdn*"         NAME="%k", GROUP="tty"

KERNEL=="dcbri*",       NAME="%k", GROUP="tty"

KERNEL=="ircomm*",      NAME="%k", GROUP="tty"

# all block devices

SUBSYSTEM=="block", GROUP="disk"

# cdrom symlinks and other good cdrom naming

BUS=="ide",     KERNEL=="hd[a-z]", ACTION=="add", IMPORT="/sbin/cdrom_id --export $tempnode"

BUS=="scsi",    KERNEL="sr[0-9]*", ACTION=="add", IMPORT="/sbin/cdrom_id --export $tempnode"

BUS=="scsi",    KERNEL="scd[a-z]", ACTION=="add", IMPORT="/sbin/cdrom_id --export $tempnode"

ENV{ID_CDROM}=="?*",            SYMLINK+="cdrom%e", GROUP="cdrom"

ENV{ID_CDROM_CD_RW}=="?*",      SYMLINK+="cdrw%e"

ENV{ID_CDROM_DVD}=="?*",        SYMLINK+="dvd%e"

ENV{ID_CDROM_DVD_R}=="?*",      SYMLINK+="dvdrw%e"

# disk devices

KERNEL=="sd*",          NAME="%k", GROUP="disk"

KERNEL=="dasd*",        NAME="%k", GROUP="disk"

KERNEL=="ataraid*",     NAME="%k", GROUP="disk"

# compaq smart array

KERNEL=="cciss*",       PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", NAME="%c{1}", SYMLINK+="%k"

KERNEL=="ida*",         PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", NAME="%c{1}", SYMLINK+="%k"

# mylex

KERNEL=="rd*",          PROGRAM="/etc/udev/scripts/raid-devfs.sh %k", NAME="%c{1}", SYMLINK+="%k"

# dri devices

KERNEL=="card*",        NAME="dri/card%n", GROUP="video"

KERNEL=="nvidia*",      NAME="%k", GROUP="video"

KERNEL=="3dfx*",        NAME="%k", GROUP="video"

# alsa devices

SUBSYSTEM=="sound", GROUP="audio"

KERNEL=="controlC[0-9]*",       NAME="snd/%k"

KERNEL=="hw[CD0-9]*",           NAME="snd/%k"

KERNEL=="pcm[CD0-9cp]*",        NAME="snd/%k"

KERNEL=="midiC[D0-9]*",         NAME="snd/%k"

KERNEL=="timer",                NAME="snd/%k"

KERNEL=="seq",                  NAME="snd/%k"

# capi devices

KERNEL=="capi",         NAME="capi20", SYMLINK+="isdn/capi20", GROUP="dialout"

KERNEL=="capi*",        NAME="capi/%n", GROUP="dialout"

# cpu devices

KERNEL=="cpu[0-9]*",    NAME="cpu/%n/cpuid"

KERNEL=="msr[0-9]*",    NAME="cpu/%n/msr"

KERNEL=="microcode",    NAME="cpu/microcode"

# dm devices (ignore them)

KERNEL=="dm-[0-9]*",    OPTIONS="ignore_device"

# create a symlink named after the device map name

# note devmap_name comes with extras/multipath

#KERNEL=="dm-[0-9]*",   PROGRAM="/sbin/devmap_name %M %m", NAME="%k", SYMLINK+="%c"

KERNEL=="device-mapper",        NAME="mapper/control"

# fb devices

KERNEL=="fb[0-9]*",     NAME="fb/%n", SYMLINK+="%k", GROUP="video"

# floppy devices

KERNEL=="fd[0-9]*",     NAME="floppy/%n", SYMLINK+="%k", GROUP="floppy"

# i2c devices

KERNEL=="i2c-[0-9]*",   NAME="i2c/%n", SYMLINK+="%k"

# input devices

KERNEL=="mice",         NAME="input/%k", MODE="0644"

KERNEL=="mouse*",       NAME="input/%k", MODE="0644"

KERNEL=="event*",       NAME="input/%k", MODE="0600"

KERNEL=="js*",          NAME="input/%k", MODE="664"

KERNEL=="ts*",          NAME="input/%k", MODE="0600"

# loop devices

KERNEL=="loop[0-9]*",   NAME="loop/%n", SYMLINK+="%k", GROUP="disk"

# md block devices

KERNEL=="md[0-9]*",     NAME="md/%n", SYMLINK+="%k", GROUP="disk"

# aoe char devices,

SUBSYSTEM=="aoe", KERNEL=="discover",   NAME="etherd/%k", GROUP="disk", MODE="0220"

SUBSYSTEM=="aoe", KERNEL=="err",        NAME="etherd/%k", GROUP="disk", MODE="0440"

SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220"

# misc devices

KERNEL=="agpgart",      NAME="misc/%k", SYMLINK+="%k"

KERNEL=="psaux",        NAME="misc/%k", SYMLINK+="%k"

KERNEL=="rtc",          NAME="misc/%k", SYMLINK+="%k", MODE="0664"

KERNEL=="uinput",       NAME="misc/%k", SYMLINK+="%k"

KERNEL=="inotify",      NAME="misc/%k", SYMLINK+="%k", MODE="0666"

# netlink devices

KERNEL=="route",        NAME="netlink/%k"

KERNEL=="skip",         NAME="netlink/%k"

KERNEL=="usersock",     NAME="netlink/%k"

KERNEL=="fwmonitor",    NAME="netlink/%k"

KERNEL=="tcpdiag",      NAME="netlink/%k"

KERNEL=="nflog",        NAME="netlink/%k"

KERNEL=="xfrm",         NAME="netlink/%k"

KERNEL=="arpd",         NAME="netlink/%k"

KERNEL=="route6",       NAME="netlink/%k"

KERNEL=="ip6_fw",       NAME="netlink/%k"

KERNEL=="dnrtmsg",      NAME="netlink/%k"

KERNEL=="tap*",         NAME="netlink/%k"

# network devices

KERNEL=="tun",          NAME="net/%k"

# ramdisk devices

KERNEL=="ram[0-9]*",    NAME="rd/%n", SYMLINK+="%k"

# IEEE1394 (firewire) devices (must be before raw devices below)

KERNEL=="raw1394",      NAME="%k",              GROUP="video"

KERNEL=="dv1394*",      NAME="dv1394/%n",       GROUP="video"

KERNEL=="video1394*",   NAME="video1394/%n",    GROUP="video"

# raw devices

KERNEL=="raw[0-9]*",    NAME="raw/%k", GROUP="disk"

KERNEL=="ram*",         NAME="%k", GROUP="disk"

# sound devices

KERNEL=="adsp",                 NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

KERNEL=="adsp[0-9]*",           NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

KERNEL=="audio",                NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

KERNEL=="audio[0-9]*",          NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

KERNEL=="dsp",                  NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

KERNEL=="dsp[0-9]*",            NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

KERNEL=="mixer",                NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

KERNEL=="mixer[0-9]*",          NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

KERNEL=="sequencer",            NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

KERNEL=="sequencer[0-9]*",      NAME="sound/%k", SYMLINK+="%k", GROUP="audio"

# memory devices

KERNEL=="random",       NAME="%k", MODE="0666"

KERNEL=="urandom",      NAME="%k", MODE="0444"

KERNEL=="mem",          NAME="%k", MODE="0640"

KERNEL=="kmem",         NAME="%k", MODE="0640"

KERNEL=="port",         NAME="%k", MODE="0640"

KERNEL=="full",         NAME="%k", MODE="0666"

KERNEL=="null",         NAME="%k", MODE="0666"

KERNEL=="zero",         NAME="%k", MODE="0666"

# usb devices

KERNEL=="hiddev*",              NAME="usb/%k"

KERNEL=="auer*",                NAME="usb/%k"

KERNEL=="legousbtower*",        NAME="usb/%k", GROUP="usb"

KERNEL=="dabusb*",              NAME="usb/%k"

BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k", GROUP="lp"

# v4l devices

KERNEL=="video[0-9]*",  NAME="v4l/video%n", SYMLINK+="video%n", GROUP="video"

KERNEL=="radio[0-9]*",  NAME="v4l/radio%n", GROUP="video"

KERNEL=="vbi[0-9]*",    NAME="v4l/vbi%n", SYMLINK+="vbi%n", GROUP="video"

KERNEL=="vtx[0-9]*",    NAME="v4l/vtx%n", GROUP="video"

# dvb devices

KERNEL=="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c", GROUP="video", MODE="0660"

# Asterisk Zaptel devices

KERNEL=="zapctl",       NAME="zap/ctl"

KERNEL=="zaptimer",     NAME="zap/timer"

KERNEL=="zapchannel",   NAME="zap/channel"

KERNEL=="zappseudo",    NAME="zap/pseudo"

KERNEL=="zap[0-9]*",    NAME="zap/%n"

# pilot/palm devices

KERNEL=="pilot",        NAME="%k", GROUP="uucp"

# jaz devices

KERNEL=="jaz*",         NAME="%k", GROUP="disk"

# zip devices

KERNEL=="pocketzip*",   NAME="%k", GROUP="disk"

KERNEL=="zip*",         NAME="%k", GROUP="disk"

# ls120 devices

KERNEL=="ls120",        NAME="%k", GROUP="disk"

# lp devices

KERNEL=="lp*",          NAME="%k", GROUP="lp"

KERNEL=="irlpt",        NAME="%k", GROUP="lp"

KERNEL=="usblp",        NAME="%k", GROUP="lp"

KERNEL=="lp*",          NAME="%k", GROUP="lp"

# tape devices

KERNEL=="ht*",          NAME="%k", GROUP="tape"

KERNEL=="nht*",         NAME="%k", GROUP="tape"

KERNEL=="pt*",          NAME="%k", GROUP="tape"

KERNEL=="npt*",         NAME="%k", GROUP="tape"

KERNEL=="st*",          NAME="%k", GROUP="tape"

KERNEL=="nst*",         NAME="%k", GROUP="tape"

KERNEL=="osst*",        NAME="%k", GROUP="tape"

KERNEL=="nosst*",       NAME="%k", GROUP="tape"

# diskonkey devices

KERNEL=="diskonkey*",   NAME="%k", GROUP="disk"

# rem_ide devices

KERNEL=="microdrive*",  NAME="%k", GROUP="disk"

# kbd devices

KERNEL=="kbd",          NAME="%k", MODE="0664"

# Sony Vaio Jogdial sonypi device

KERNEL=="sonypi",       NAME="%k", MODE="0666"

# packet devices

KERNEL=="pktcdvd",              NAME="pktcdvd/control", GROUP="cdrw", MODE="0660"

KERNEL=="pktcdvd[0-9]*",        NAME="pktcdvd/pktcdvd%n", GROUP="cdrw", MODE="0660"

# infiniband devices

KERNEL=="umad*",        NAME="infiniband/%k"

KERNEL=="issm*",        NAME="infiniband/%k"

# tpm devices

KERNEL=="tpm*", NAME="%k", OWNER="tss", GROUP="tss", MODE="0600"

#######################################

# Persistant block device stuff - begin

#######################################

# Skip all of this if we are not adding a block device

ACTION!="add",          GOTO="persistent_end"

SUBSYSTEM!="block",     GOTO="persistent_end"

KERNEL=="ram*|loop*|fd*|nbd*",  GOTO="persistent_end"

# skip accessing removable ide devices, cause the ide drivers are horrible broken

BUS=="ide", SYSFS{removable}="1", GOTO="no_volume_id"

BUS=="ide", SYSFS{../removable}="1", GOTO="no_volume_id"

# persistent disk device links /dev/disk/

KERNEL=="hd*[!0-9]", IMPORT="/sbin/ata_id --export $tempnode"

KERNEL=="hd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/ata-$env{ID_MODEL}_$env{ID_SERIAL}"

KERNEL=="hd*[0-9]", IMPORT{parent}=="ID_*", SYMLINK+="disk/by-id/ata-$env{ID_MODEL}_$env{ID_SERIAL}-part%n"

KERNEL=="sd*[!0-9]", SYSFS{ieee1394_id}=="*", IMPORT="/bin/echo -e 'ID_SERIAL=$sysfs{ieee1394_id}\nID_BUS=ieee1394'"

KERNEL=="sd*[!0-9]", ENV{ID_SERIAL}=="", IMPORT="/sbin/usb_id -x"

KERNEL=="sd*[!0-9]", ENV{ID_SERIAL}=="", IMPORT="/sbin/scsi_id -g -x -s %p -d %N"

KERNEL=="sd*[!0-9]", ENV{ID_SERIAL}=="", IMPORT="/sbin/scsi_id -g -x -a -s %p -d %N"

KERNEL=="sd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"

KERNEL=="sd*[0-9]", IMPORT{parent}=="ID_*"

KERNEL=="sd*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"

# Skip id for ram / loop / fd

KERNEL=="ram*", GOTO="no_volume_id"

KERNEL=="loop*", GOTO="no_volume_id"

KERNEL=="fd*", GOTO="no_volume_id"

KERNEL=="*[!0-9]", ENV{ID_TYPE}=="?*", IMPORT="/sbin/path_id %p", SYMLINK+="disk/by-path/$env{ID_PATH}"

KERNEL=="*[0-9]", IMPORT{parent}=="ID_*"

KERNEL=="*[0-9]", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"

# volume-label/uuid

KERNEL=="*[!0-9]", SYSFS{removable}=="1", GOTO="no_volume_id"

KERNEL=="sr*", GOTO="no_volume_id"

KERNEL=="*[0-9]", IMPORT="/sbin/vol_id --export $tempnode"

KERNEL=="*[0-9]", ENV{ID_FS_UUID}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID}"

KERNEL=="*[0-9]", ENV{ID_FS_LABEL_SAFE}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_SAFE}"

LABEL="no_volume_id"

LABEL="persistent_end"

#####################################

# Persistant block device stuff - end

#####################################

# usbfs-like device nodes

SUBSYSTEM="usb_device", PROGRAM="/bin/sh -c 'X=%k X=$${X#usbdev} B=$${X%%%%.*} D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"

# be backward compatible for a while with the /etc/dev.d and /etc/hotplug.d/ systems

# run /etc/hotplug.d/ stuff only if we came from a hotplug event, not for udevstart

ENV{UDEVD_EVENT}=="1", RUN+="/sbin/udev_run_hotplugd"

# always run /etc/dev.d/ stuff for now.

RUN+="/sbin/udev_run_devd"

# debugging monitor

RUN+="socket:/org/kernel/udev/monitor"

```

Last edited by linuxpyro on Thu Nov 03, 2005 10:42 pm; edited 1 time in total

----------

## die_vms_die

put

```
BUS="usb", SYSFS{serial}="xxxx", NAME="%k", SYMLINK="externalhd%n"

```

in /etc/udev/rules.d/10-udev.rules

Don't know about udevinfo command, but there are other ways.

less /proc/bus/usb/devices.

emerge usbview.  use it and then unmerge.

----------

## linuxpyro

After typing less /proc/bus/usb/devices, I got this for my external HD:

```

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=480 MxCh= 0

D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=067b ProdID=2507 Rev= 1.00

S:  Manufacturer=Prolific Technology Inc.

S:  Product=Mass Storage Device

C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA

I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

```

No serial number came up, though it did for my other USB devices.  I couldn't get it with usbview either (usbview would not let me copy and paste, and the information it gave was the same as above).  Is there away I can maybe give it a serial?[/code]

----------

## widan

You can try this:

```
udevinfo -a -p /sys/block/sda
```

----------

## linuxpyro

OK, this is what it put out:

```

device '/sys/block/sda' has major:minor 8:0

  looking at class device '/sys/block/sda':

    KERNEL=="sda"

    SUBSYSTEM=="block"

    SYSFS{dev}=="8:0"

    SYSFS{range}=="16"

    SYSFS{removable}=="0"

    SYSFS{size}=="586114704"

    SYSFS{stat}=="    1374       97    49620   782452       38       23      488       108        0     8552   782560"

follow the "device"-link to the physical device:

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.0/0000:02:0 6.2/usb1/1-2/1-2:1.0/host0/target0:0:0/0:0:0:0':

    BUS=="scsi"

    ID=="0:0:0:0"

    DRIVER=="sd"

    SYSFS{device_blocked}=="0"

    SYSFS{iocounterbits}=="32"

    SYSFS{iodone_cnt}=="0x589"

    SYSFS{ioerr_cnt}=="0x0"

    SYSFS{iorequest_cnt}=="0x589"

    SYSFS{max_sectors}=="240"

    SYSFS{model}=="L300R0          "

    SYSFS{queue_depth}=="1"

    SYSFS{queue_type}=="none"

    SYSFS{rev}=="BAH4"

    SYSFS{scsi_level}=="3"

    SYSFS{state}=="running"

    SYSFS{timeout}=="30"

    SYSFS{type}=="0"

    SYSFS{vendor}=="Maxtor 6"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.0/0000:02:0 6.2/usb1/1-2/1-2:1.0/host0/target0:0:0':

    BUS==""

    ID=="target0:0:0"

    DRIVER=="unknown"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.0/0000:02:0 6.2/usb1/1-2/1-2:1.0/host0':

    BUS==""

    ID=="host0"

    DRIVER=="unknown"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.0/0000:02:0 6.2/usb1/1-2/1-2:1.0':

    BUS=="usb"

    ID=="1-2:1.0"

    DRIVER=="usb-storage"

    SYSFS{bAlternateSetting}==" 0"

    SYSFS{bInterfaceClass}=="08"

    SYSFS{bInterfaceNumber}=="00"

    SYSFS{bInterfaceProtocol}=="50"

    SYSFS{bInterfaceSubClass}=="06"

    SYSFS{bNumEndpoints}=="02"

    SYSFS{modalias}=="usb:v067Bp2507d0100dc00dsc00dp00ic08isc06ip50"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.0/0000:02:0 6.2/usb1/1-2':

    BUS=="usb"

    ID=="1-2"

    DRIVER=="usb"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bDeviceClass}=="00"

    SYSFS{bDeviceProtocol}=="00"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bMaxPacketSize0}=="64"

    SYSFS{bMaxPower}=="100mA"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bNumInterfaces}==" 1"

    SYSFS{bcdDevice}=="0100"

    SYSFS{bmAttributes}=="c0"

    SYSFS{configuration}==""

    SYSFS{devnum}=="2"

    SYSFS{idProduct}=="2507"

    SYSFS{idVendor}=="067b"

    SYSFS{manufacturer}=="Prolific Technology Inc."

    SYSFS{maxchild}=="0"

    SYSFS{product}=="Mass Storage Device"

    SYSFS{speed}=="480"

    SYSFS{version}==" 2.00"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.0/0000:02:0 6.2/usb1':

    BUS=="usb"

    ID=="usb1"

    DRIVER=="usb"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bDeviceClass}=="09"

    SYSFS{bDeviceProtocol}=="01"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bMaxPacketSize0}=="8"

    SYSFS{bMaxPower}=="  0mA"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bNumInterfaces}==" 1"

    SYSFS{bcdDevice}=="0206"

    SYSFS{bmAttributes}=="e0"

    SYSFS{configuration}==""

    SYSFS{devnum}=="1"

    SYSFS{idProduct}=="0000"

    SYSFS{idVendor}=="0000"

    SYSFS{manufacturer}=="Linux 2.6.13-gentoo-r5 ehci_hcd"

    SYSFS{maxchild}=="3"

    SYSFS{product}=="NEC Corporation USB 2.0"

    SYSFS{serial}=="0000:02:06.2"

    SYSFS{speed}=="480"

    SYSFS{version}==" 2.00"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.0/0000:02:0 6.2':

    BUS=="pci"

    ID=="0000:02:06.2"

    DRIVER=="ehci_hcd"

    SYSFS{class}=="0x0c0320"

    SYSFS{device}=="0x00e0"

    SYSFS{irq}=="17"

    SYSFS{local_cpus}=="3"

    SYSFS{modalias}=="pci:v00001033d000000E0sv00001799sd00000002bc0Csc03i20"

    SYSFS{subsystem_device}=="0x0002"

    SYSFS{subsystem_vendor}=="0x1799"

    SYSFS{vendor}=="0x1033"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.0':

    BUS=="pci"

    ID=="0000:00:10.0"

    DRIVER=="unknown"

    SYSFS{class}=="0x060400"

    SYSFS{device}=="0x7448"

    SYSFS{irq}=="0"

    SYSFS{local_cpus}=="3"

    SYSFS{modalias}=="pci:v00001022d00007448sv00000000sd00000000bc06sc04i00"

    SYSFS{subsystem_device}=="0x0000"

    SYSFS{subsystem_vendor}=="0x0000"

    SYSFS{vendor}=="0x1022"

  looking at the device chain at '/sys/devices/pci0000:00':

    BUS==""

    ID=="pci0000:00"

    DRIVER=="unknown"

```

The hard drive is the block with the manufacturer parameter set to Prolific Technology Inc.  Would the number I'd need to tell udev just be the ID parameter (1-2)?

----------

## linuxpyro

OK, I don't really know why it wasn't returning the serial, but I got it to work now.  Here's my 10-udev.rules:

```

BUS="usb", SYSFS{product}="Mass Storage Device", KERNEL="sd?1", NAME="%k", SYMLINK="usbdrivepar1"

BUS="usb", SYSFS{product}="Mass Storage Device", KERNEL="sd?2", NAME="%k", SYMLINK="usbdrivepar2"

```

Thanks for the help, it works fine now.    :Very Happy: 

----------

## Headrush

 *linuxpyro wrote:*   

> OK, I don't really know why it wasn't returning the serial, but I got it to work now.  Here's my 10-udev.rules:
> 
> ```
> 
> BUS="usb", SYSFS{product}="Mass Storage Device", KERNEL="sd?1", NAME="%k", SYMLINK="usbdrivepar1"
> ...

 

You can use the following to find the vendor and product ids:

```
lsusb
```

Then create a rule like this:

```
BUS="usb", SYSFS{idVendor}="067b", SYSFS{idProduct}="3507", NAME="%k", SYMLINK="usbHD%n"
```

Of course change the vendor and product ID to match yours. 

(using just "Mass Storage Device" can cause problem when you add more devices.)

If you use pmount like me for, it doesn't handle symlinks properly, so just swap the NAME= and SYMLINK= values and it should work fine.eg

```
BUS="usb", SYSFS{idVendor}="067b", SYSFS{idProduct}="3507", NAME="usbHD%n", SYMLINK="%k"
```

----------

## linuxpyro

 :Shocked:    Gee, I didn't think of that...  Ok, I changed it and it continues to work.  Thanks!

----------

