[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Finding a working udev rule for a device



Hi,

I have tried making a udev rule for the device
http://www.syscompdesign.com/WGM201.html, such that it is group owner
is "plugdev" and has group read/write permissions. However every thing
I tried does not seem to work. The device nodes (/dev/ttyUSB0) group
always stays as "dialout". I would be grateful for some insight into
what is going  wrong. I am using Debian/Squeeze with udev version 164.

I have tried various choices for SUBSYSTEM(S) include usb, usb-serial,
and ATTRS including,
manufacturer, serial etc. I have also tried using a lower number
(10-wgm.rule) for my custom rule.

I list below copious output from the following commands in that order

- udevadm info
- udevadm info --attribute-walk
- udevadm test
- lsusb
- dmesg
- my current udev rule
- current device node permissons

---------------------------- udevadm info -q all -n /dev/ttyUSB0
-------------------------------------------------

P: /devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
S: char/188:0
S: serial/by-path/pci-0000:00:1a.0-usb-0:2:1.0-port0
S: serial/by-id/usb-Syscomp_WGM-201_WGVTFKAJ-if00-port0
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/ttyUSB0/tty/ttyUSB0
E: MAJOR=188
E: MINOR=0
E: DEVNAME=/dev/ttyUSB0
E: SUBSYSTEM=tty
E: ID_PORT=0
E: ID_PATH=pci-0000:00:1a.0-usb-0:2:1.0
E: ID_VENDOR=Syscomp
E: ID_VENDOR_ENC=Syscomp
E: ID_VENDOR_ID=0403
E: ID_MODEL=WGM-201
E: ID_MODEL_ENC=WGM-201
E: ID_MODEL_ID=6001
E: ID_REVISION=0600
E: ID_SERIAL=Syscomp_WGM-201_WGVTFKAJ
E: ID_SERIAL_SHORT=WGVTFKAJ
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=ftdi_sio
E: ID_IFACE=00
E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd
E: ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC
E: DEVLINKS=/dev/char/188:0
/dev/serial/by-path/pci-0000:00:1a.0-usb-0:2:1.0-port0
/dev/serial/by-id/usb-Syscomp_WGM-201_WGVTFKAJ-if00-port0

------------------------------------ udevadm info --name=/dev/ttyUSB0
--attribute-walk ----------------

  looking at device
'/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/ttyUSB0/tty/ttyUSB0':
    KERNEL=="ttyUSB0"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device
'/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/ttyUSB0':
    KERNELS=="ttyUSB0"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="ftdi_sio"
    ATTRS{latency_timer}=="1"
    ATTRS{port_number}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0':
    KERNELS=="3-2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="ftdi_sio"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{bInterfaceClass}=="ff"
    ATTRS{bInterfaceSubClass}=="ff"
    ATTRS{bInterfaceProtocol}=="ff"
    ATTRS{modalias}=="usb:v0403p6001d0600dc00dsc00dp00icFFiscFFipFF"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{interface}=="WGM-201"

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2':
    KERNELS=="3-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="450mA"
    ATTRS{urbnum}=="16"
    ATTRS{idVendor}=="0403"
    ATTRS{idProduct}=="6001"
    ATTRS{bcdDevice}=="0600"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="38"
    ATTRS{devpath}=="2"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Syscomp"
    ATTRS{product}=="WGM-201"
    ATTRS{serial}=="WGVTFKAJ"

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3':
    KERNELS=="usb3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="795"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0001"
    ATTRS{bcdDevice}=="0302"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="2"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 3.2.0-0.bpo.4-amd64 uhci_hcd"
    ATTRS{product}=="UHCI Host Controller"
    ATTRS{serial}=="0000:00:1a.0"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1a.0':
    KERNELS=="0000:00:1a.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x3a37"
    ATTRS{subsystem_vendor}=="0x8086"
    ATTRS{subsystem_device}=="0x5003"
    ATTRS{class}=="0x0c0300"
    ATTRS{irq}=="16"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000003"
    ATTRS{local_cpulist}=="0-1"
    ATTRS{modalias}=="pci:v00008086d00003A37sv00008086sd00005003bc0Csc03i00"
    ATTRS{numa_node}=="-1"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

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


------------------------------------ udevadm test
/sys/bus/usb-serial/devices/ttyUSB0 ----------------

udevadm test /sys/bus/usb-serial/devices/ttyUSB0
run_command: calling: test
udevadm_test: version 164
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 '/lib/udev/rules.d/40-hplip.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-usb-media-players.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-usb_modeswitch.rules' as rules file
parse_file: reading '/lib/udev/rules.d/45-libmtp8.rules' as rules file
parse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules file
parse_file: reading '/etc/udev/rules.d/52-digilent-usb.rules' as rules file
parse_file: reading '/lib/udev/rules.d/55-dm.rules' as rules file
add_rule: NAME="" is ignored, because udev will not delete any device
nodes, please remove it from /lib/udev/rules.d/55-dm.rules:57
parse_file: reading '/lib/udev/rules.d/56-hpmud_support.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-fuse-utils.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-gnupg.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-libgphoto2-2.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-libsane-extras.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-libsane.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-openocd.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-alsa.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage-dm.rules'
as rules file
parse_file: reading
'/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as
rules file
parse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-pk2cmd.rules' as rules file
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /lib/udev/rules.d/60-pk2cmd.rules:1
parse_file: reading '/lib/udev/rules.d/60-qemu-system.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-sigrok.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-virtualbox-dkms.rules' as rules file
parse_file: reading '/lib/udev/rules.d/60-virtualbox-guest-dkms.rules'
as rules file
parse_file: reading '/lib/udev/rules.d/60-virtualbox.rules' as rules file
parse_file: reading '/dev/.udev/rules.d/61-dev-root-link.rules' as rules file
parse_file: reading
'/lib/udev/rules.d/61-gnome-bluetooth-rfkill.rules' as rules file
parse_file: reading '/lib/udev/rules.d/61-mobile-action.rules' as rules file
parse_file: reading '/lib/udev/rules.d/62-bluez-hid2hci.rules' as rules file
parse_file: reading '/lib/udev/rules.d/64-xorg-xkb.rules' as rules file
parse_file: reading '/lib/udev/rules.d/69-virtualbox-guest-x11.rules'
as rules file
parse_file: reading
'/lib/udev/rules.d/69-xserver-xorg-input-wacom.rules' as rules file
parse_file: reading '/lib/udev/rules.d/70-acl.rules' as rules file
parse_file: reading '/lib/udev/rules.d/70-hid2hci.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 '/lib/udev/rules.d/70-printers.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules'
as rules file
parse_file: reading '/lib/udev/rules.d/75-net-description.rules' as rules file
parse_file: reading
'/lib/udev/rules.d/75-persistent-net-generator.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-probe_mtd.rules' as rules file
parse_file: reading '/lib/udev/rules.d/75-tty-description.rules' as rules file
parse_file: reading '/lib/udev/rules.d/77-mm-ericsson-mbm.rules' as rules file
parse_file: reading
'/lib/udev/rules.d/77-mm-longcheer-port-types.rules' as rules file
parse_file: reading
'/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules' as rules file
parse_file: reading
'/lib/udev/rules.d/77-mm-platform-serial-whitelist.rules' as rules
file
parse_file: reading '/lib/udev/rules.d/77-mm-simtech-port-types.rules'
as rules file
parse_file: reading
'/lib/udev/rules.d/77-mm-usb-device-blacklist.rules' as rules file
parse_file: reading '/lib/udev/rules.d/77-mm-zte-port-types.rules' as rules file
parse_file: reading '/lib/udev/rules.d/77-nm-olpc-mesh.rules' as rules file
parse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules file
parse_file: reading '/lib/udev/rules.d/79-fstab_import.rules' as rules file
parse_file: reading '/lib/udev/rules.d/80-alsa.rules' as rules file
parse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules file
parse_file: reading '/lib/udev/rules.d/80-udisks.rules' as rules file
parse_file: reading '/lib/udev/rules.d/85-hplj10xx.rules' as rules file
parse_file: reading '/lib/udev/rules.d/85-hwclock.rules' as rules file
parse_file: reading '/lib/udev/rules.d/85-usbmuxd.rules' as rules file
parse_file: reading '/lib/udev/rules.d/85-uvcdynctrl.rules' as rules file
parse_file: reading '/etc/udev/rules.d/90-avrdragon.rules' as rules file
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /etc/udev/rules.d/90-avrdragon.rules:1
parse_file: reading '/etc/udev/rules.d/90-glaxys3.rules' as rules file
parse_file: reading '/lib/udev/rules.d/90-hal.rules' as rules file
parse_file: reading '/etc/udev/rules.d/90-hantek.rules' as rules file
parse_file: reading '/lib/udev/rules.d/90-libgpod.rules' as rules file
parse_file: reading '/etc/udev/rules.d/90-ti_launchpad.rules' as rules file
parse_file: reading '/etc/udev/rules.d/90-usbasp.rules' as rules file
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /etc/udev/rules.d/90-usbasp.rules:1
parse_file: reading '/etc/udev/rules.d/90-usbtiny.rules' as rules file
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /etc/udev/rules.d/90-usbtiny.rules:1
parse_file: reading '/etc/udev/rules.d/90-wgm.rules' as rules file
parse_file: reading '/lib/udev/rules.d/91-permissions.rules' as rules file
parse_file: reading
'/lib/udev/rules.d/95-keyboard-force-release.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-keymap.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules file
parse_file: reading
'/lib/udev/rules.d/95-upower-battery-recall-dell.rules' as rules file
parse_file: reading
'/lib/udev/rules.d/95-upower-battery-recall-fujitsu.rules' as rules
file
parse_file: reading
'/lib/udev/rules.d/95-upower-battery-recall-gateway.rules' as rules
file
parse_file: reading
'/lib/udev/rules.d/95-upower-battery-recall-ibm.rules' as rules file
parse_file: reading
'/lib/udev/rules.d/95-upower-battery-recall-lenovo.rules' as rules
file
parse_file: reading
'/lib/udev/rules.d/95-upower-battery-recall-toshiba.rules' as rules
file
parse_file: reading '/lib/udev/rules.d/95-upower-csr.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-upower-hid.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-upower-wup.rules' as rules file
parse_file: reading '/lib/udev/rules.d/99-phoenix.rules' as rules file
parse_file: reading '/etc/udev/rules.d/99-stellaris-launchpad.rules'
as rules file
parse_file: reading '/etc/udev/rules.d/comedi.rules' as rules file
parse_file: reading '/etc/udev/rules.d/z60_avarice.rules' as rules file
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /etc/udev/rules.d/z60_avarice.rules:4
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /etc/udev/rules.d/z60_avarice.rules:7
parse_file: reading '/etc/udev/rules.d/z60_hdparm.rules' as rules file
parse_file: reading '/etc/udev/rules.d/z60_usbprog.rules' as rules file
add_rule: BUS= will be removed in a future udev version, please use
SUBSYSTEM= to match the event device, or SUBSYSTEMS= to match a parent
device, in /etc/udev/rules.d/z60_usbprog.rules:1
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /etc/udev/rules.d/z60_usbprog.rules:4
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /etc/udev/rules.d/z60_usbprog.rules:7
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /etc/udev/rules.d/z60_usbprog.rules:10
add_rule: SYSFS{}= will be removed in a future udev version, please
use ATTR{}= to match the event device, or ATTRS{}= to match a parent
device, in /etc/udev/rules.d/z60_usbprog.rules:13
udev_rules_new: rules use 244596 bytes tokens (20383 * 12 bytes),
37923 bytes buffer
udev_rules_new: temporary index used 64100 bytes (3205 * 20 bytes)
udev_device_new_from_syspath: device 0x7f9304fc1d50 has devpath
'/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/ttyUSB0'
udev_device_new_from_syspath: device 0x7f9304fcb890 has devpath
'/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/ttyUSB0'
udev_device_new_from_syspath: device 0x7f9304fcb4e0 has devpath
'/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0'
udev_device_new_from_syspath: device 0x7f9304fcb110 has devpath
'/devices/pci0000:00/0000:00:1a.0/usb3/3-2'
udev_device_new_from_syspath: device 0x7f9304fcba60 has devpath
'/devices/pci0000:00/0000:00:1a.0/usb3'
udev_device_new_from_syspath: device 0x7f9304fcbd80 has devpath
'/devices/pci0000:00/0000:00:1a.0'
udev_device_new_from_syspath: device 0x7f9304fca160 has devpath
'/devices/pci0000:00'
udev_rules_apply_to_event: RUN
'socket:@/org/freedesktop/hal/udev_event'
/lib/udev/rules.d/90-hal.rules:2
udevadm_test: UDEV_LOG=6
udevadm_test: DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/ttyUSB0
udevadm_test: DRIVER=ftdi_sio
udevadm_test: ACTION=add
udevadm_test: SUBSYSTEM=usb-serial
udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event'

-------------------------------------  lsusb
------------------------------------------

Bus 003 Device 038: ID 0403:6001 Future Technology Devices
International, Ltd FT232 USB-Serial (UART) IC

-----------------------------  dmesg ---------------------------------------

[229257.836030] usb 3-2: new full-speed USB device number 38 using uhci_hcd
[229258.034067] usb 3-2: New USB device found, idVendor=0403, idProduct=6001
[229258.034073] usb 3-2: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[229258.034077] usb 3-2: Product: WGM-201
[229258.034080] usb 3-2: Manufacturer: Syscomp
[229258.034083] usb 3-2: SerialNumber: WGVTFKAJ
[229258.041132] ftdi_sio 3-2:1.0: FTDI USB Serial Device converter detected
[229258.041182] usb 3-2: Detected FT232RL
[229258.041185] usb 3-2: Number of endpoints 2
[229258.041189] usb 3-2: Endpoint 1 MaxPacketSize 64
[229258.041193] usb 3-2: Endpoint 2 MaxPacketSize 64
[229258.041196] usb 3-2: Setting MaxPacketSize 64
[229258.043165] usb 3-2: FTDI USB Serial Device converter now attached
to ttyUSB0

-------------------- /etc/udev/rules.d/90-wgm.rules
-------------------------------------

SUBSYSTEMS=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
ATTR{serial}=="WGVTFKAJ", GROUP="plugdev", MODE="0666"

------------------ device node created ------------------------------

crw-rw-r-- 1 root dialout 188, 0 Apr 12 00:35 /dev/ttyUSB0

-------------------------------------------------------------------------------

regards
franz


Reply to: