Не может получить данные от ИК-датчика на встроенном Linux с помощью официального драйвера
Я запускаю образ linux (созданный с помощью buildroot и ядра 4.11.2, предоставленного производителем) на плате NANOPI NEO Air с ИК-датчиком, подключенным непосредственно к ИК-контакту. Я хочу использовать датчик для получения данных с пульта дистанционного управления.
Я следовал процедуре, найденной здесь, с тем же драйвером и получил те же результаты, но я не могу получить данные от /dev/input/eventX
, и при этом я не могу заставить свой пульт появляться в /proc/bus/input/devices
(Я пытался отправить данные с пульта дистанционного управления при вставке драйвера или при загрузке, когда драйвер встроен, но, очевидно, это не сработало, и я не нашел много информации об этом).
Я также попытался с lirc и evtest / irrecord, но я все еще не могу получить какие-либо данные, и я думаю, что проблема в другом месте.
Я проверил датчик и пульт дистанционного управления с помощью осциллографа, поэтому я знаю, что датчик получает кадры от пульта. Я также уверен, что это не несоответствие протокола на стороне водителя.
Итак, у меня есть два вопроса:
- В чем здесь проблема и почему я не могу ничего получить, когда бегу
cat /dev/input/eventX
? - Должен ли мой пульт показываться в
/proc/bus/input/devices
и есть ли процедура сопряжения, о которой я должен знать?
Прошу прощения, если это тривиальные вопросы (я никогда раньше не работал над IR), и заранее благодарю.
РЕДАКТИРОВАТЬ
Мне удалось заставить мой пульт работать с одним из старых образов, предоставленных производителем (ядро 3.4.39-h3), и я заметил, что:
- Драйвер, который я использую, не работает (он никогда не входит в функцию прерывания, которая читает FIFO, а физические адреса, связанные с FIFO, всегда равны 0)
- Драйвер для старого образа регистрирует следующее устройство ввода в своей функции инициализации (жестко), которую я затем использую для получения данных с пульта (используя
cat /dev/input/event1
):
pi @ NanoPi-NEO-Air: ~ $ cat / proc / bus / input / devices... I: Автобус =0019 Продавец =0001 Продукт =0001 Версия =0100 N: Name="sunxi-ir" P: Phys=RemoteIR/input1 S: Sysfs=/devices/virtual/input/input1 U: Uniq= H: обработчики =sysrq kbd event1 cpufreq_interactive B: PROP=0 B: EV=100003 B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe
Так что теперь мне интересно, стоит ли мне регистрировать это устройство в используемом мной драйвере, и если да, то как мне это сделать?
1 ответ
Один из моих коллег по работе решил это, проблема была в дтс.
В sun8i-h3-nanopi-neo-air.dts
, просто активировав IR следующим образом:
&ir {
status = "okay";
};
не достаточно, контакты для IR тоже должны быть переопределены:
&ir {
pinctrl-names = "default";
pinctrl-0 = <&ir_pins_a>;
status = "okay";
};
Надеюсь, это кому-нибудь поможет.