2015-01-02 59 views

回答

0

這正是

udevadm trigger --verbose ... 

會告訴你。它會觸發對udev規則的重新評估,您可以使用其他標誌(如--subsystem-match--attr-match)來縮小USB設備的範圍。

man udevadm

,並找到你的USB設備使用這些屬性

lsusb -v 
+0

它沒有告訴的創造? – kayle

0

試着這麼做:udevadm test /dev/bus/usb/001/045

+0

我試過了,它顯示爲「讀取規則文件」並顯示所有的規則文件。我需要準確地爲這個設備執行哪個規則文件。感謝您的貢獻:) – kayle

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Mathias

+0

爲每個設備讀取由'udevadm test'...顯示的所有文件。但是,每個設備僅使用每個文件中的匹配行。 –

0

Carlqvist的答案是正確的,但它忽略了大部分的細節。 從一個真實的案例...

問題: 我的USB鍵盤正在我的gNewsense設置,但我的SourceMage。所以下面是我試圖找出gNewsense中的udev規則適用於此鍵盤。

1)獲取基本信息

# lsusb 
[...omitted...] 
Bus 007 Device 006: ID 413c:2003 Dell Computer Corp. Keyboard 
[...omitted...] 

所以現在我知道...

USB設備節點(不一樣的鍵盤設備)是/ dev /巴士/ USB/007/006 idVendor = 413c和idProduct = 2003如果鍵盤沒有任何標誌或郵票,我會尋找人性化的文字。

如今,鍵盤和鼠標位於/ dev/input/*之下,這只是您必須知道或從網頁中進行分類的東西。我很幸運,有是/ dev /輸入/按-ID/USB-Dell_Dell_USB_Keyboard事件,大骨節病

這在我的情況下是一個符號鏈接到/ dev /輸入/ EVENT0

2)這將讓對於鍵盤

# udevadm info --query=path --name=/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd 
/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input9/event0 

3)現在,規則發生,使這種鍵盤的工作「其他」設備路徑(內核或udev的內部)?

請注意,對於idVendor和idProduct的grep'ing可能已足夠,但通常有通配符和默認內置案例來完成大部分工作。

udevadm test命令會告訴您所有規則,按照在此事件期間處理的順序(將USB鍵盤插入USB連接器時)處理。

開頭的行parse_file向您顯示實際掛鉤到(e)udev中的規則腳本文件(讀取順序較低的前綴應該是第一個)。這通常是一個垃圾噸文件,所以現在忽略它們。

開頭的行udev_node_mknod值得關注,因爲這是udev實際製造設備節點時的情況。

線條起始udev_rules_apply_to_event可能是您感興趣的內容。它給出規則腳本文件和規則的行號在udev中觸發某些更改。

所以這裏是我的輸出。將有大量的噪聲(我省略了),但你仍然可以通過跟蹤,看哪個規則這個USB設備執行的開發節點

# udevadm test /devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input9/event0 
[...] 
parse_file: reading '/lib/udev/rules.d/69-cd-sensors.rules' as rules file 
add_rule: IMPORT found builtin 'usb_id', replacing /lib/udev/rules.d/69-cd-sensors.rules:78 
[...] 
udev_rules_apply_to_event: IMPORT builtin 'input_id' /lib/udev/rules.d/50-udev-default.rules:4 
[...] 
udev_builtin_add_property: ID_INPUT_KEY=1 
udev_builtin_add_property: ID_INPUT_KEYBOARD=1 
[...] 
udev_rules_apply_to_event: IMPORT builtin 'usb_id' /lib/udev/rules.d/60-persistent-input.rules:7 
builtin_usb_id: /sys/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0: if_class 3 protocol 0 
udev_builtin_add_property: ID_VENDOR=Dell 
udev_builtin_add_property: ID_VENDOR_ENC=Dell 
udev_builtin_add_property: ID_VENDOR_ID=413c 
udev_builtin_add_property: ID_MODEL=Dell_USB_Keyboard 
udev_builtin_add_property: ID_MODEL_ENC=Dell\x20USB\x20Keyboard 
udev_builtin_add_property: ID_MODEL_ID=2003 
[...] 
udev_rules_apply_to_event: LINK 'input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd' /lib/udev/rules.d/60-persistent-input.rules:24 
udev_rules_apply_to_event: IMPORT builtin 'path_id' /lib/udev/rules.d/60-persistent-input.rules:31 
udev_builtin_add_property: ID_PATH=pci-0000:00:1d.1-usb-0:1:1.0 
udev_builtin_add_property: ID_PATH_TAG=pci-0000_00_1d_1-usb-0_1_1_0 
udev_rules_apply_to_event: LINK 'input/by-path/pci-0000:00:1d.1-usb-0:1:1.0-event-kbd' /lib/udev/rules.d/60-persistent-input.rules:33 
udev_rules_apply_to_event: IMPORT builtin skip 'usb_id' /lib/udev/rules.d/95-keymap.rules:13 
udev_event_execute_rules: no node name set, will use kernel supplied name 'input/event0' 
udev_node_add: creating device node '/dev/input/event0', devnum=13:64, mode=01600, uid=0, gid=0 
udev_node_mknod: preserve file '/dev/input/event0', because it has correct dev_t 
udev_node_mknod: preserve permissions /dev/input/event0, 021600, uid=0, gid=0 
node_symlink: preserve already existing symlink '/dev/char/13:64' to '../input/event0' 
link_find_prioritized: found 'c13:64' claiming '/run/udev/links/input\x2fby-id\x2fusb-Dell_Dell_USB_Keyboard-event-kbd' 
link_update: creating link '/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd' to '/dev/input/event0' 
node_symlink: preserve already existing symlink '/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd' to '../event0' 
link_find_prioritized: found 'c13:64' claiming '/run/udev/links/input\x2fby-path\x2fpci-0000:00:1d.1-usb-0:1:1.0-event-kbd' 
link_update: creating link '/dev/input/by-path/pci-0000:00:1d.1-usb-0:1:1.0-event-kbd' to '/dev/input/event0' 
node_symlink: preserve already existing symlink '/dev/input/by-path/pci-0000:00:1d.1-usb-0:1:1.0-event-kbd' to '../event0' 
udev_device_update_db: created db file '/run/udev/data/c13:64' for '/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input9/event0' 
.INPUT_CLASS=kbd 
ACTION=add 
[...] 
[end]