【问题标题】:/dev/input file created, but contains no data stream/dev/input 文件已创建,但不包含数据流
【发布时间】:2016-11-04 23:29:35
【问题描述】:

所以,我正在尝试在全新安装的 Linux Mint 中读取 USB 设备。

我之前的做法是读取 /dev/input/by-id 中的原始流

正在检测设备,并且正在生产预期的设备:

$ ls /dev/input/by-id/
usb-Generic_WebCam_SC-13HDL11939N_200901010001-event-if00
usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00

但是当我查看文件时使用

tail -f /dev/input/by-id/usb-Generic_WebCam_SC-13HDL11939N_200901010001-event-if00

当我按下某些键时,没有数据输出到终端。我用 sudo 试过了,我试过改变文件的权限。它基本上在原地等待,不变。

有很多关于设备不显示或读取文件时出现 IO 错误的问题,但我找不到其他有同样问题的人。

为什么 Linux Mint 会检测到设备,但没有从中读取数据?


其他要求的信息:

# ls -lRa /dev/input/by-id
/dev/input/by-id:
total 0
drwxr-xr-x 2 root root  80 Jul  2 21:38 .
drwxr-xr-x 4 root root 360 Jul  2 21:38 ..
lrwxrwxrwx 1 root root   9 Jul  2 21:24 usb-Generic_WebCam_SC-13HDL11939N_200901010001-event-if00 -> ../event9
lrwxrwxrwx 1 root root  10 Jul  2 21:38 usb-Logitech_Logitech_Buzz_tm__Controller_V1-event-if00 -> ../event10

我也在 /dev/input/event10 上尝试了 tail -f。结果一样。

还有,dmesg 的最后几行

[  263.440421] usb 2-1.1: new low-speed USB device number 5 using ehci-pci
[  263.538270] usb 2-1.1: New USB device found, idVendor=054c, idProduct=0002
[  263.538280] usb 2-1.1: New USB device strings: Mfr=3, Product=1, SerialNumber=0
[  263.538285] usb 2-1.1: Product: Logitech Buzz(tm) Controller V1
[  263.538290] usb 2-1.1: Manufacturer: Logitech
[  263.585640] hidraw: raw HID events driver (C) Jiri Kosina
[  263.597332] usbcore: registered new interface driver usbhid
[  263.597338] usbhid: USB HID core driver
[  263.615420] input: Logitech Logitech Buzz(tm) Controller V1 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/0003:054C:0002.0001/input/input11
[  263.668811] sony 0003:054C:0002.0001: input,hidraw0: USB HID v1.11 Joystick [Logitech Logitech Buzz(tm) Controller V1] on usb-0000:00:1d.0-1.1/input0
[  811.582183] usb 2-1.1: USB disconnect, device number 5
[  813.318275] usb 2-1.1: new low-speed USB device number 6 using ehci-pci
[  813.416196] usb 2-1.1: New USB device found, idVendor=054c, idProduct=0002
[  813.416207] usb 2-1.1: New USB device strings: Mfr=3, Product=1, SerialNumber=0
[  813.416213] usb 2-1.1: Product: Logitech Buzz(tm) Controller V1
[  813.416218] usb 2-1.1: Manufacturer: Logitech
[  813.422041] input: Logitech Logitech Buzz(tm) Controller V1 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/0003:054C:0002.0002/input/input12
[  813.422335] sony 0003:054C:0002.0002: input,hidraw0: USB HID v1.11 Joystick [Logitech Logitech Buzz(tm) Controller V1] on usb-0000:00:1d.0-1.1/input0

我发现它可以使用 evtest 实用程序 (https://wiki.ubuntu.com/DebuggingTouchpadDetection/evtest) 读取,但只能作为 root 或使用 sudo。

同样作为 root 或 sudo,我无法看到上述路径中的任何数据。


附:我可以通过 /sys/class/leds/ 将控制数据推送到这些控制器中的灯

【问题讨论】:

  • 请向我们展示ls -lRa /dev/input/by-id未编辑输出?
  • 也是dmesg | tail -20unedited输出,在插入设备后立即输出。
  • @zwol 我已按要求添加了信息。
  • 好的,现在我要见ls -l /dev/input/event[0-9]*
  • @zwol 事件*的范围从 0 到 10。我找到了一个解决方案,但这是一个完全出乎意料的解决方案,tail -f 不起作用,但cat 将数据显示为预期的。 :s ---- 我还没弄清楚为什么会这样。

标签: linux usb linux-mint


【解决方案1】:

这里的问题在于tail 程序,而不是输入设备本身。 tail 在开始打印任何内容之前尝试读取数据直到“文件末尾”——但是输入设备没有“文件末尾”,因此它永远不会打印任何内容。另一方面,cat 在数据进入时立即写出数据,因此可以正常工作。我不知道为什么tail 过去可以为您使用其他输入设备。

【讨论】:

猜你喜欢
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2012-07-02
相关资源
最近更新 更多