我在nanopi NEO空气板上运行一个linux映像(由buildroot和制造商提供的4.11.2内核制作),IR传感器直接插在IR引脚上。我想使用传感器从IR遥控器获取数据。
我按照程序找到here,使用相同的驱动程序,得到相同的结果,但我无法从/dev/input/eventX
获取任何数据,也无法让我的遥控器出现在/proc/bus/input/devices
(我尝试在插入驱动程序时使用遥控器发送数据,或者在内置驱动程序时启动,但它显然不起作用,我没有找到太多关于此的信息)。
我也试过lirc和evtest / irrecord,但我仍然无法得到任何数据,我相信问题出在其他地方。
我用示波器测试了传感器和遥控器,所以我知道传感器正在从遥控器获取帧。我也很确定这不是驾驶员方面的协议不匹配。
所以我有两个问题:
cat /dev/input/eventX
时为什么我什么都得不到?/proc/bus/input/devices
显示,是否有配对程序,我应该知道?如果这些都是微不足道的问题(我以前从未在IR工作过),请原谅我并提前感谢你。
我设法让我的遥控器使用制造商提供的旧图像之一(内核3.4.39-h3),我注意到:
cat /dev/input/event1
):pi@NanoPi-NEO-Air:~$ cat /proc/bus/input/devices ... I: Bus=0019 Vendor=0001 Product=0001 Version=0100 N: Name="sunxi-ir" P: Phys=RemoteIR/input1 S: Sysfs=/devices/virtual/input/input1 U: Uniq= H: Handlers=sysrq kbd event1 cpufreq_interactive B: PROP=0 B: EV=100003 B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe
所以现在我想知道我是否也应该在我正在使用的驱动程序中注册该设备,如果是这样,我应该怎么做?
我的一位同事解决了它,问题出在dts上。
在sun8i-h3-nanopi-neo-air.dts
中,只需像这样激活IR:
&ir {
status = "okay";
};
还不够,还必须重新定义IR的引脚:
&ir {
pinctrl-names = "default";
pinctrl-0 = <&ir_pins_a>;
status = "okay";
};
希望这会对某人有所帮助。