libusb のデバイスを udev ルールで root 以外にアクセス許可する方法

長いタイトルですいません。
libusb で SoftRock を制御するコードを書いているのですが、そのままでは root からしかアクセスできず、不便です。どうやったら root 以外からアクセスできるのでしょうか?
最初ここを見ました。

しかーし、前置きが長すぎてポイントを摑めません。そもそも、目的のデバイスをどう探したらいいねん!!
というわけで備忘録です。もっとストレートな方法を御存知の方は教えてください。
1. まず、lsusb コマンドで目的のデバイスを探します。

$ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 012: ID 08bb:2902 Texas Instruments Japan PCM2902 Audio Codec
Bus 001 Device 011: ID 16c0:05dc VOTI shared ID for use with libusb

はい、私が探しているのは Bus 001 の Device 011 でした。(ちなみに、次のようにすると物理構成が分かります。)

$ lsusb -t
1-1.3:1.0: No such file or directory
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=vend., Driver=smsc95xx, 480M
        |__ Port 2: Dev 12, If 0, Class=audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 12, If 1, Class=audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 12, If 2, Class=audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 12, If 3, Class=HID, Driver=usbhid, 12M
        |__ Port 3: Dev 11, If 0, Class=>ifc, Driver=, 1.5M

はい、これでデバイスが Bus 01 -> Port 1 -> Port 3 にあることが分かります。
2. udevadm コマンドでデバイスの udev 情報を調べます。このとき、--attribute-walk オプションを付けると、udev ルール形式で出力されて便利です。

$ udevadm info --name=/dev/bus/usb/001/011 --attribute-walk|head -40

Udevadm info 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/platform/bcm2708_usb/usb1/1-1/1-1.3':
    KERNEL=="1-1.3"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
    ATTR{bDeviceSubClass}=="00"
    ATTR{bDeviceProtocol}=="00"
    ATTR{devpath}=="1.3"
    ATTR{idVendor}=="16c0"
    ATTR{speed}=="1.5"
    ATTR{bNumInterfaces}==" 1"
    ATTR{bConfigurationValue}=="1"
    ATTR{bMaxPacketSize0}=="8"
    ATTR{busnum}=="1"
    ATTR{devnum}=="11"
    ATTR{configuration}==""
    ATTR{bMaxPower}=="200mA"
    ATTR{authorized}=="1"
    ATTR{bmAttributes}=="80"
    ATTR{bNumConfigurations}=="1"
    ATTR{maxchild}=="0"
    ATTR{bcdDevice}=="0100"
    ATTR{avoid_reset_quirk}=="0"
    ATTR{quirks}=="0x0"
    ATTR{serial}=="Beta1.1"
    ATTR{version}==" 1.10"
    ATTR{urbnum}=="1004"
    ATTR{ltm_capable}=="no"
    ATTR{manufacturer}=="www.obdev.at"
    ATTR{removable}=="removable"
    ATTR{idProduct}=="05dc"
    ATTR{bDeviceClass}=="ff"
    ATTR{product}=="DG8SAQ-I2C"

3. これを元に、

にあるように

SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", ACTION=="add", GROUP="mygroup", MODE="660"

とかすれば良さそうです。(まだ試してません :))
あとでやってみます。

やってみました

まず、/etc/udev/rules.d/99-softrock.rules というファイルを作ります。

ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", SUBSYSTEMS=="usb", ACTION=="add", MODE="660", GROUP="libusb"

これは、他のファイルを真似ました。(^^)
次に sudo /etc/init.d/udev restart すればいいのですが、デバッグ方法が分かりません。以下を参考にしました。

まず、USB コネクタを抜き差しする代わりに次のコマンドを使います。

$ udevadm trigger

ルールのチェックですが、

$ udevadm test /sys/bus/usb/devices/1-1.3

のようにしました。ここで 1-1.3 は、以下の lsusb -t の結果から判断してます。bus 1 -> port 1 -> port 3 です。(上のほうの例とはポートが違ってます。動的に変わってしまうので、すいません。)

$ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 08bb:2902 Texas Instruments Japan PCM2902 Audio Codec
Bus 001 Device 005: ID 16c0:05dc VOTI shared ID for use with libusb
$ lsusb -t
1-1.3:1.0: No such file or directory
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=vend., Driver=smsc95xx, 480M
        |__ Port 2: Dev 4, If 0, Class=audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 4, If 1, Class=audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 4, If 2, Class=audio, Driver=snd-usb-audio, 12M
        |__ Port 2: Dev 4, If 3, Class=HID, Driver=usbhid, 12M
        |__ Port 3: Dev 5, If 0, Class=>ifc, Driver=, 1.5M

もっとうまい方法があるかもですが、とりあえず。