키보드를 내 Raspberry Pi에 연결할 때마다 (스크립트에서 선호하는) 일부 코드를 실행하려고합니다. 현재 Rasbian Jessie가 설치되어 있습니다 (아마도 최신 버전입니까?). 내 연구를 통해 USB 장치가 Linux 컴퓨터에 연결될 때 "udev"를 사용하여 이벤트를 트리거해야 함을 발견했습니다.Raspbian Jessie : USB 장치를 꽂을 때 udev가 실행되지 않습니다
키보드를 플러그인 할 때마다 브라우저를 열어보고 싶습니다. (실행하려고하는 명령은 내 모니터를 연결 한 라즈베리 파이의 터미널에서 작동합니다.)
ACTION=="add",ATTRS{idVendor}=="413c",RUN+="epiphany --display=:0 http://www.google.com"
나는 lsusb
명령에서 idVendor을 가지고 : 나는 다음과 같은 파일 /etc/udev/rules.d/keyboard.rules
만든 Bus 001 Device 027: ID 413c:2105 Dell Computer Corp. Model L100 Keyboard
을하지만 내 키보드에 & 플러그 다시 분리 할 때 아무 반응이 없습니다.
내가 해봤 다른 무엇 :
- 가 keyboard.rules 시도하고 (스크립트
RUN+='/home/pi/test.sh'
를 실행하는 데 명령을sudo udevadm control --reload
- 실행 명령
sudo udevadm control --reload-rules
- 실행하기 라즈베리 파이
- 를 다시 시작 실행 가능한 것으로 설정되었습니다).
- F1 (콘솔) 및 F7 (GUI 데스크탑) 만 활성화되어 있지만 다른 "데스크톱"(Crl + Alt + F1 - F12)을 확인하십시오. 나는 키보드 에 연결하고 있습니다로
- udev가이 (가) "추가"보고 있는지 확인합니다 (키보드 나에게 바인드합니다 모두를 제공하는)
udevadm info -a -p $(udevadm info -q path -n /dev/input/event0)
을 실행하여 idVendor 확인 - 도
udevadm monitor
&udevadm monitor --property
을 실행하여 올 udevadm test $(udevadm info -q path -n /dev/input/event0)
으로 테스트하십시오. 여기에는 다음과 같은 정보가 표시됩니다 : 당신이 아래로 스크롤 경우run: 'epiphany --display=:0 http://www.google.com'
을 볼
calling: test version 215 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. load module index Network interface NamePolicy= disabled on kernel commandline, ignoring. timestamp of '/etc/systemd/network' changed timestamp of '/lib/systemd/network' changed Parsed configuration file /lib/systemd/network/99-default.link Created link configuration context. timestamp of '/etc/udev/rules.d' changed timestamp of '/lib/udev/rules.d' changed read rules file: /lib/udev/rules.d/10-local-rpi.rules read rules file: /etc/udev/rules.d/40-scratch.rules read rules file: /lib/udev/rules.d/42-usb-hid-pm.rules read rules file: /lib/udev/rules.d/50-bluetooth-hci-auto-poweron.rules read rules file: /lib/udev/rules.d/50-firmware.rules read rules file: /lib/udev/rules.d/50-udev-default.rules read rules file: /lib/udev/rules.d/55-dm.rules read rules file: /lib/udev/rules.d/60-cdrom_id.rules read rules file: /lib/udev/rules.d/60-crda.rules read rules file: /lib/udev/rules.d/60-drm.rules read rules file: /lib/udev/rules.d/60-fuse.rules read rules file: /lib/udev/rules.d/60-gnupg.rules read rules file: /lib/udev/rules.d/60-keyboard.rules read rules file: /lib/udev/rules.d/60-libgphoto2-6.rules read rules file: /lib/udev/rules.d/60-libpisock9.rules read rules file: /lib/udev/rules.d/60-persistent-alsa.rules read rules file: /lib/udev/rules.d/60-persistent-input.rules read rules file: /lib/udev/rules.d/60-persistent-serial.rules read rules file: /lib/udev/rules.d/60-persistent-storage-dm.rules read rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules read rules file: /lib/udev/rules.d/60-persistent-storage.rules read rules file: /lib/udev/rules.d/60-persistent-v4l.rules read rules file: /lib/udev/rules.d/60-triggerhappy.rules read rules file: /lib/udev/rules.d/61-accelerometer.rules read rules file: /lib/udev/rules.d/64-btrfs.rules read rules file: /lib/udev/rules.d/64-xorg-xkb.rules read rules file: /lib/udev/rules.d/69-libmtp.rules read rules file: /lib/udev/rules.d/70-power-switch.rules read rules file: /lib/udev/rules.d/70-uaccess.rules read rules file: /lib/udev/rules.d/71-seat.rules read rules file: /lib/udev/rules.d/73-idrac.rules read rules file: /lib/udev/rules.d/73-seat-late.rules read rules file: /lib/udev/rules.d/75-net-description.rules read rules file: /lib/udev/rules.d/75-persistent-net-generator.rules read rules file: /lib/udev/rules.d/75-probe_mtd.rules read rules file: /lib/udev/rules.d/75-tty-description.rules read rules file: /lib/udev/rules.d/78-sound-card.rules read rules file: /lib/udev/rules.d/80-drivers.rules read rules file: /lib/udev/rules.d/80-net-setup-link.rules read rules file: /lib/udev/rules.d/80-networking.rules read rules file: /lib/udev/rules.d/80-udisks.rules read rules file: /lib/udev/rules.d/80-udisks2.rules read rules file: /lib/udev/rules.d/85-hdparm.rules read rules file: /lib/udev/rules.d/85-hwclock.rules read rules file: /lib/udev/rules.d/85-regulatory.rules read rules file: /lib/udev/rules.d/90-alsa-restore.rules read rules file: /lib/udev/rules.d/95-udev-late.rules read rules file: /lib/udev/rules.d/95-wedo.rules read rules file: /lib/udev/rules.d/97-hid2hci.rules read rules file: /etc/udev/rules.d/99-com.rules read rules file: /lib/udev/rules.d/99-systemd.rules read rules file: /etc/udev/rules.d/keyboard.rules read rules file: /etc/udev/rules.d/test.rules rules contain 393216 bytes tokens (32768 * 12 bytes), 23387 bytes strings 23799 strings (190642 bytes), 21572 de-duplicated (169483 bytes), 2228 trie nodes used IMPORT builtin 'input_id' /lib/udev/rules.d/50-udev-default.rules:10 capabilities/ev raw kernel attribute: 120013 capabilities/abs raw kernel attribute: 0 capabilities/rel raw kernel attribute: 0 capabilities/key raw kernel attribute: 10000 7 ff9f207a c14057ff febeffdf ffefffff ffffffff fffffffe test_key: checking bit block 0 for any keys; found=1 test_key: checking bit block 32 for any keys; found=1 test_key: checking bit block 64 for any keys; found=1 test_key: checking bit block 96 for any keys; found=1 test_key: checking bit block 128 for any keys; found=1 test_key: checking bit block 160 for any keys; found=1 test_key: checking bit block 192 for any keys; found=1 test_key: checking bit block 224 for any keys; found=1 GROUP 101 /lib/udev/rules.d/50-udev-default.rules:29 IMPORT builtin 'hwdb' /lib/udev/rules.d/60-keyboard.rules:12 IMPORT builtin 'hwdb' returned non-zero IMPORT builtin 'hwdb' /lib/udev/rules.d/60-keyboard.rules:20 IMPORT builtin 'hwdb' returned non-zero IMPORT builtin 'usb_id' /lib/udev/rules.d/60-persistent-input.rules:7 /sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0: if_class 3 protocol 0 LINK 'input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd' /lib/udev/rules.d/60-persistent-input.rules:24 IMPORT builtin 'path_id' /lib/udev/rules.d/60-persistent-input.rules:31 LINK 'input/by-path/platform-3f980000.usb-usb-0:1.2:1.0-event-kbd' /lib/udev/rules.d/60-persistent-input.rules:33 RUN '/usr/sbin/th-cmd --socket /var/run/thd.socket --passfd --udev' /lib/udev/rules.d/60-triggerhappy.rules:4 GROUP 101 /etc/udev/rules.d/99-com.rules:1 MODE 0660 /etc/udev/rules.d/99-com.rules:1 RUN 'epiphany --display=:0 http://www.google.com' /etc/udev/rules.d/keyboard.rules:1 handling device node '/dev/input/event0', devnum=c13:64, mode=0660, uid=0, gid=101 preserve permissions /dev/input/event0, 020660, uid=0, gid=101 preserve already existing symlink '/dev/char/13:64' to '../input/event0' found 'c13:64' claiming '/run/udev/links/\x2finput\x2fby-id\x2fusb-Dell_Dell_USB_Keyboard-event-kbd' creating link '/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd' to '/dev/input/event0' preserve already existing symlink '/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd' to '../event0' found 'c13:64' claiming '/run/udev/links/\x2finput\x2fby-path\x2fplatform-3f980000.usb-usb-0:1.2:1.0-event-kbd' creating link '/dev/input/by-path/platform-3f980000.usb-usb-0:1.2:1.0-event-kbd' to '/dev/input/event0' preserve already existing symlink '/dev/input/by-path/platform-3f980000.usb-usb-0:1.2:1.0-event-kbd' to '../event0' unable to create temporary db file '/run/udev/data/c13:64.tmp': Permission denied .INPUT_CLASS=kbd ACTION=add BACKSPACE=guess DEVLINKS=/dev/input/by-id/usb-Dell_Dell_USB_Keyboard-event-kbd /dev/input/by-path/platform-3f980000.usb-usb-0:1.2:1.0-event-kbd DEVNAME=/dev/input/event0 DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:413C:2105.0014/input/input23/event0 ID_BUS=usb ID_INPUT=1 ID_INPUT_KEY=1 ID_INPUT_KEYBOARD=1 ID_MODEL=Dell_USB_Keyboard ID_MODEL_ENC=Dell\x20USB\x20Keyboard ID_MODEL_ID=2105 ID_PATH=platform-3f980000.usb-usb-0:1.2:1.0 ID_PATH_TAG=platform-3f980000_usb-usb-0_1_2_1_0 ID_REVISION=0352 ID_SERIAL=Dell_Dell_USB_Keyboard ID_TYPE=hid ID_USB_DRIVER=usbhid ID_USB_INTERFACES=:030101: ID_USB_INTERFACE_NUM=00 ID_VENDOR=Dell ID_VENDOR_ENC=Dell ID_VENDOR_ID=413c MAJOR=13 MINOR=64 SUBSYSTEM=input USEC_INITIALIZED=78790607 XKBLAYOUT=us XKBMODEL=pc105 XKBOPTIONS=terminate:ctrl_alt_bksp XKBVARIANT= run: '/usr/sbin/th-cmd --socket /var/run/thd.socket --passfd --udev' run: 'epiphany --display=:0 http://www.google.com' unload module index Unloaded link configuration context.
합니다. 그래서 그것이 효과가 있다고 믿게합니다.
하지만 난 아무것도 할 udevadm trigger
를 얻을 수 없었다
&가 .... 다시 아무것도에서 일어나는 내 키보드를 연결 분리 (시도 다중 경로 및 다른 입력을하지만, 그냥 아무 것도 반환하지 않습니다) 때 .
내 명령/스크립트를 실행하려고하는지 확인할 수있는 일종의 로그가 있습니까? 이 스크립트를 모니터링하는 또 다른 방법이 있습니까? 이 스크립트를 테스트 할 다른 방법이있어서 실제로 USB 장치를 연결하지 않고도이 스크립트가 실행되는 것을 실제로 볼 수 있습니까?
다음을 포함하는 스크립트 controller_retropi.sh : –
다음을 포함하는 controller_retropi.sh 스크립트를 만들었습니다 : '#!/bin/sh epiphany --display = : 0 http://www.google.com ' (실행할 수 있도록 777에 chowning) 이제'keyboard.rules'을 다음과 같이 업데이트했습니다 : 012// bash /home/pi/scripts/controller_retropi.sh & "' 나는'sudo 명령을 다시 실행했다. 'udevadm control --reload-rules'을 사용하여 규칙을 새로 고치고'udevadmin test $ (udevadm info -q path -n/dev/input/event0)'로로드 된 것을 두 번 확인했습니다. 아직 운이 없습니다. –
나는 또한'sudo udevadm trigger -v -c add -a idVendor = 413c'에서 트리거를 사용하는 방법을 알아 냈습니다. 그리고 내가 장치를봤을 때 모니터를보고 그것을 볼 수 있습니다. 그러나 RUN 명령은 여전히 트리거되지 않습니다 ..... –