Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Trying to set up my first udev rule and failing.
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware
View previous topic :: View next topic  
Author Message
greedyfly
n00b
n00b


Joined: 22 Aug 2004
Posts: 54

PostPosted: Wed Dec 12, 2007 1:38 am    Post subject: Trying to set up my first udev rule and failing. Reply with quote

Following guide at http://www.reactivated.net/writing_udev_rules.html

using following as example

Code:
# udevinfo -a -p /sys/block/sda

  looking at device '/block/sda':
    KERNEL=="sda"
    SUBSYSTEM=="block"
    ATTR{stat}=="  128535     2246  2788977   766188    73998   317300  3132216  5735004        0   516516  6503316"
    ATTR{size}=="234441648"
    ATTR{removable}=="0"
    ATTR{range}=="16"
    ATTR{dev}=="8:0"

  looking at parent device '/devices/pci0000:00/0000:00:07.0/host0/target0:0:0/0:0:0:0':
    KERNELS=="0:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{ioerr_cnt}=="0x0"
    ATTRS{iodone_cnt}=="0x31737"
    ATTRS{iorequest_cnt}=="0x31737"
    ATTRS{iocounterbits}=="32"
    ATTRS{timeout}=="30"
    ATTRS{state}=="running"
    ATTRS{rev}=="3.42"
    ATTRS{model}=="ST3120827AS     "
    ATTRS{vendor}=="ATA     "
    ATTRS{scsi_level}=="6"
    ATTRS{type}=="0"
    ATTRS{queue_type}=="none"
    ATTRS{queue_depth}=="1"
    ATTRS{device_blocked}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:07.0':
    KERNELS=="0000:00:07.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="sata_nv"
    ATTRS{vendor}=="0x10de"
    ATTRS{device}=="0x037f"

 As you can see, udevinfo simply produces a list of attributes you can use as-is as match keys in your udev rules. From the above example, I could produce (e.g.) either of the following two rules for this device:
SUBSYSTEM=="block", ATTR{size}=="234441648", NAME="my_hard_disk"



so i do the following on my system

Code:
udevinfo -a -p /sys/bus/usb-serial/devices/ttyUSB0

Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/ttyUSB0':
    KERNEL=="ttyUSB0"
    SUBSYSTEM=="usb-serial"
    DRIVER=="cp2101"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0':
    KERNELS=="2-2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="cp2101"
    ATTRS{interface}=="CP2102 USB to UART Bridge Controller"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-2':
    KERNELS=="2-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{serial}=="0001"
    ATTRS{product}=="CP2102 USB to UART Bridge Controller"
    ATTRS{manufacturer}=="Silicon Labs"
    ATTRS{quirks}=="0x0"
    ATTRS{maxchild}=="0"
    ATTRS{version}==" 1.10"
    ATTRS{devnum}=="7"
    ATTRS{busnum}=="2"
    ATTRS{speed}=="12"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bcdDevice}=="0100"
    ATTRS{idProduct}=="ea60"
    ATTRS{idVendor}=="10c4"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{bmAttributes}=="80"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{configuration}==""
    ATTRS{dev}=="189:134"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2':
    KERNELS=="usb2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{serial}=="0000:00:1d.0"
    ATTRS{product}=="UHCI Host Controller"
    ATTRS{manufacturer}=="Linux 2.6.23-hardened-r2_PhosZoe uhci_hcd"
    ATTRS{quirks}=="0x0"
    ATTRS{maxchild}=="2"
    ATTRS{version}==" 1.10"
    ATTRS{devnum}=="1"
    ATTRS{busnum}=="2"
    ATTRS{speed}=="12"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bcdDevice}=="0206"
    ATTRS{idProduct}=="0000"
    ATTRS{idVendor}=="0000"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{configuration}==""
    ATTRS{dev}=="189:128"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0':
    KERNELS=="0000:00:1d.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{msi_bus}==""
    ATTRS{broken_parity_status}=="0"
    ATTRS{enable}=="1"
    ATTRS{modalias}=="pci:v00008086d000024C2sv00000E11sd000000B8bc0Csc03i00"
    ATTRS{local_cpus}=="ffffffff"
    ATTRS{irq}=="20"
    ATTRS{class}=="0x0c0300"
    ATTRS{subsystem_device}=="0x00b8"
    ATTRS{subsystem_vendor}=="0x0e11"
    ATTRS{device}=="0x24c2"
    ATTRS{vendor}=="0x8086"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""


and write the following rule

Code:
cat /etc/udev/rules.d/10-local.rules
SUBSYSTEM=="usb-serial",  DRIVER=="cp2101", SYMLINK+="vantagepro"


I try
Code:
udevtest /sys/bus/usb-serial/devices/ttyUSB0
This program is for debugging only, it does not run any program,
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

parse_file: reading '/etc/udev/rules.d/05-udev-early.rules' as rules file
parse_file: reading '/etc/udev/rules.d/10-local.rules' as rules file
parse_file: reading '/dev/.udev/rules.d/10-root-link.rules' as rules file
parse_file: reading '/etc/udev/rules.d/30-kernel-compat.rules' as rules file
parse_file: reading '/etc/udev/rules.d/40-alsa.rules' as rules file
parse_file: reading '/etc/udev/rules.d/40-gentoo.rules' as rules file
parse_file: reading '/etc/udev/rules.d/40-video.rules' as rules file
parse_file: reading '/etc/udev/rules.d/50-udev-default.rules' as rules file
parse_file: reading '/etc/udev/rules.d/60-cdrom_id.rules' as rules file
parse_file: reading '/etc/udev/rules.d/60-persistent-input.rules' as rules file
parse_file: reading '/etc/udev/rules.d/60-persistent-storage-tape.rules' as rules file
parse_file: reading '/etc/udev/rules.d/60-persistent-storage.rules' as rules file
parse_file: reading '/etc/udev/rules.d/61-persistent-storage-edd.rules' as rules file
parse_file: reading '/etc/udev/rules.d/64-device-mapper.rules' as rules file
parse_file: reading '/etc/udev/rules.d/65-permissions.rules' as rules file
parse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules file
parse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules file
parse_file: reading '/etc/udev/rules.d/75-cd-aliases-generator.rules' as rules file
parse_file: reading '/etc/udev/rules.d/75-persistent-net-generator.rules' as rules file
parse_file: reading '/etc/udev/rules.d/80-drivers.rules' as rules file
parse_file: reading '/etc/udev/rules.d/90-network.rules' as rules file
parse_file: reading '/etc/udev/rules.d/95-udev-late.rules' as rules file
import_uevent_var: import into environment: 'DRIVER=cp2101'
import_uevent_var: import into environment: 'PHYSDEVBUS=usb-serial'
import_uevent_var: import into environment: 'PHYSDEVDRIVER=cp2101'
udevtest: looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/ttyUSB0' from subsystem 'usb-serial'
wait_for_sysfs: file '/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/ttyUSB0/bus' appeared after 0 loops
udevtest: run: 'socket:/org/kernel/udev/monitor'


but it doesn't work for me. I can't see what I am doing wrong, can you?

from plugging and unplugging in vain...

Code:

cp2101 ttyUSB0: cp2101 converter now disconnected from ttyUSB0
cp2101 2-2:1.0: device disconnected
usb 2-2: new full speed USB device using uhci_hcd and address 6
usb 2-2: configuration #1 chosen from 1 choice
cp2101 2-2:1.0: cp2101 converter detected
usb 2-2: reset full speed USB device using uhci_hcd and address 6
usb 2-2: cp2101 converter now attached to ttyUSB0
usb 2-2: USB disconnect, address 6
cp2101 ttyUSB0: cp2101 converter now disconnected from ttyUSB0
cp2101 2-2:1.0: device disconnected
usb 2-2: new full speed USB device using uhci_hcd and address 7
usb 2-2: configuration #1 chosen from 1 choice
cp2101 2-2:1.0: cp2101 converter detected
usb 2-2: reset full speed USB device using uhci_hcd and address 7
usb 2-2: cp2101 converter now attached to ttyUSB0
Back to top
View user's profile Send private message
jcat
Veteran
Veteran


Joined: 26 May 2006
Posts: 1337

PostPosted: Wed Dec 12, 2007 1:45 am    Post subject: Reply with quote

have you restarted udev with
Code:
udevstart
?




Cheers,
jcat
Back to top
View user's profile Send private message
greedyfly
n00b
n00b


Joined: 22 Aug 2004
Posts: 54

PostPosted: Wed Dec 12, 2007 1:49 am    Post subject: Reply with quote

yes but I get...

Code:
bash: udevstart: command not found


I reemerged udev and still no udevstart available

Thanks for the quick response tho. :)
Back to top
View user's profile Send private message
jcat
Veteran
Veteran


Joined: 26 May 2006
Posts: 1337

PostPosted: Wed Dec 12, 2007 2:19 am    Post subject: Reply with quote

You need to be "root" :) then it should work.

If you're using sudo instead of su, then maybe you need to specify the path, so...
Code:
/sbin/udevstart




Cheers,
jcat
Back to top
View user's profile Send private message
PaulBredbury
Watchman
Watchman


Joined: 14 Jul 2005
Posts: 7310

PostPosted: Wed Dec 12, 2007 2:38 am    Post subject: Reply with quote

greedyfly wrote:
udevstart: command not found

Depends on udev version. Later versions don't have "udevstart".
Back to top
View user's profile Send private message
greedyfly
n00b
n00b


Joined: 22 Aug 2004
Posts: 54

PostPosted: Wed Dec 12, 2007 2:39 am    Post subject: Reply with quote

there is no /sbin/udevstart

I also ran a locate -u and can't locate udevstart.

I am logged in as root and when I emerged the package I saw udevstart.o flash by but for some reason it is not available to me :(
Back to top
View user's profile Send private message
greedyfly
n00b
n00b


Joined: 22 Aug 2004
Posts: 54

PostPosted: Wed Dec 12, 2007 2:40 am    Post subject: Reply with quote

PaulBredbury wrote:
greedyfly wrote:
udevstart: command not found

Depends on udev version. Later versions don't have "udevstart".



using udev-117
Back to top
View user's profile Send private message
jcat
Veteran
Veteran


Joined: 26 May 2006
Posts: 1337

PostPosted: Wed Dec 12, 2007 3:19 am    Post subject: Reply with quote

I'm on 115-r1, so I'm not sure what to tell you know :wink:


Paul, can you enlighten us as to the correct way to restart udev without the udevstart command in the most recent versions?


If all else fails, just kill the udevd process, and start it again with
Code:
/sbin/udevd --daemon &


But I'm sure there's an official and better way..




Cheers,
jcat
Back to top
View user's profile Send private message
PaulBredbury
Watchman
Watchman


Joined: 14 Jul 2005
Posts: 7310

PostPosted: Wed Dec 12, 2007 7:10 am    Post subject: Reply with quote

Yep.
Code:
$ ps ax | grep udev
/sbin/udevd --daemon

So run:
Code:
killall udevd && udevd --daemon
Back to top
View user's profile Send private message
greedyfly
n00b
n00b


Joined: 22 Aug 2004
Posts: 54

PostPosted: Wed Dec 12, 2007 12:18 pm    Post subject: Reply with quote

Well, that doesn't work either. I am at a loss...
Back to top
View user's profile Send private message
PaulBredbury
Watchman
Watchman


Joined: 14 Jul 2005
Posts: 7310

PostPosted: Wed Dec 12, 2007 12:25 pm    Post subject: Reply with quote

So Googling for "udev debugging" returns zero results, does it...
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum