LIRC (ir-keytable + lircd) на armbian

LIRC стабильная и проверенная библиотека с открытым кодом, которая позволяет отправлять и получать команды по инфракрасному порту, (англ. Linux Infrared Remote Control, «управление Linux при помощи инфракрасного пульта дистанционного управления»)

При использовании irrecord он будет просить вас несколько раз нажимать кнопки различным образом, использование ir-keytable лишает этой радости, но всё равно надо привязать названия к кнопкам. Не обязательно ко всем, можно только к тем, которые планируете использовать.

тестировал на Armbian_5.75_Orangepipc_Ubuntu_bionic_next_4.19.20

uname -a


Linux orangepipc 4.19.20-sunxi #5.75 SMP Sat Feb 9 19:02:47 CET 2019 armv7l armv7l armv7l GNU/Linux

ставим ir-keytable

apt install ir-keytable -y

(просто скопируйте код, и вставьте в терминал )

mkdir -p  /etc/rc_keymaps
touch /etc/rc_keymaps/my_keymaps

ir-keytable -c -p other,lirc,rc-5,rc-5-sz,jvc,sony,nec,sanyo,mce_kbd,rc-6,sharp,xmp -w /etc/rc_keymaps/my_keymaps

ir-keytable -t

нажимаем на кнопки пульта, пример выдачи моего пульта
при нажатии кнопки «1» , «2», «-VOL», «+VOL» и т. д.

root@orangepipc:~# ir-keytable -t
Testing events. Please, press CTRL-C to abort.
1300.707932: lirc protocol(nec): scancode = 0xc
1300.758474: lirc protocol(nec): scancode = 0xc repeat
1305.305770: lirc protocol(nec): scancode = 0x18
1308.840815: lirc protocol(nec): scancode = 0x18 repeat
1810.025185: lirc protocol(nec): scancode = 0x15
1810.075733: lirc protocol(nec): scancode = 0x15 repeat
1811.312910: lirc protocol(nec): scancode = 0x9
1811.363469: lirc protocol(nec): scancode = 0x9 repeat

scancode прописываем в файл: /etc/rc_keymaps/my_keymaps

0x0c KEY_1
0x18 KEY_2
0x15 KEY_VOLUMEDOWN
0x09 KEY_VOLUMEUP

для автозапуска ir-keytable в  файл /etc/rc.local прописываем строку:

ir-keytable -c -p other,lirc,rc-5,rc-5-sz,jvc,sony,nec,sanyo,mce_kbd,rc-6,sharp,xmp -w /etc/rc_keymaps/my_keymaps

вывод команды: lsmod | grep ir_

root@orangepipc:~# lsmod | grep ir_
ir_xmp_decoder 16384 0
ir_mce_kbd_decoder 16384 0
ir_sharp_decoder 16384 0
ir_sanyo_decoder 16384 0
ir_sony_decoder 16384 0
ir_jvc_decoder 16384 0
ir_rc6_decoder 16384 0
ir_nec_decoder 16384 0
ir_rc5_decoder 16384 0

после настройки, лишние модули при запуске ir-keytable в опции -p можно не указывать.

Ставим lirc

apt install lirc -y

запуск irw

irw

при нажатии на кнопки пульта «1» , «2», «-VOL», «+VOL» и т. д. если scancode прописали в файл: /etc/rc_keymaps/my_keymaps наблюдаем выдачу irw.
пример выдачи моего пульта:

root@orangepipc:~# irw
0000000080010002 00 KEY_1 devinput-32
0000000080010003 00 KEY_2 devinput-32
0000000080010072 00 KEY_VOLUMEDOWN devinput-32
0000000080010073 00 KEY_VOLUMEUP devinput-32

Далее требуется настроить команды, которые будут получать приложения, использующие управление при помощи ПДУ, при нажатии кнопок пульта. Они указываются в файле: /etc/lirc/irexec.lircrc в котором описывается как и какому приложению реагировать на нажатие клавиши на пульте. Для примера как всегда поморгаем светодиодами на плате OrangePI PC и поуправляем громкостью с помощью amixer, запустив alsamixer наблюдаем визуально столбик «Line Out» при регулировке громкостью с помощью пульта.

begin
   remote = devinput-32	
   button = KEY_1
   repeat = 0
   delay = 0
   prog = irexec
   config = echo heartbeat | sudo tee "/sys/class/leds/orangepi:red:status/trigger"
   config = echo none | sudo tee "/sys/class/leds/orangepi:red:status/trigger"
end
begin
   remote = devinput-32	
   button = KEY_2
   repeat = 0
   delay	= 0
   prog = irexec
   config = echo heartbeat | sudo tee "/sys/class/leds/orangepi:green:pwr/trigger"
   config = echo none | sudo tee "/sys/class/leds/orangepi:green:pwr/trigger"
end
begin
   remote = devinput-32
   prog   = irexec
   button = KEY_VOLUMEDOWN
   config = amixer set "Line Out" 3%- &> /dev/null
   repeat = 10
   delay  = 10
end
 begin
   remote = devinput-32
   prog   = irexec
   button = KEY_VOLUMEUP
   config = amixer set "Line Out" 3%+ &> /dev/null
   repeat = 10
   delay  = 10
end
 225   7 мес   armbian   IR/InfraRed
Популярное