Запуск программ с помощью любого дистанционного пульта
LIRC (Linux Infrared Remote Control — «инфракрасный ПДУ для Linux») — открытый программный пакет, позволяющий принимать и передавать инфракрасные сигналы пользователям операционной системы Linux.
Простейший ИК приемник
Подключается к последовательному порту компьютера.
Сигналы принимаются ИК датчиком IC1 и поступают на вход DCD последовательного порта. Питание через стабилизатор 5В берется с выхода RTS порта, на некоторых компьютерах и usb2com переходниках, где на выходах порта меньшее напряжение, схема работать не будет.
Полный список ИК датчиков можно найти на странице http://www.lirc.org/receivers.html.
Установка
#apt-get install lirc
чтобы система не перехватывала управление портом, поставим setserial
#apt-get install setserial
и выполнить команду
#setserial /dev/ttyS0 uart none
чтобы каждый раз не запускать команду можно прописать в /etc/rc.local
Загружаем модуль ядра lirc_serial:
#modprobe lirc_serial #lsmod | grep lirc lirc_serial 18662 0 lirc_dev 19354 1 lirc_serial
Проверяем ик приемник:
сначала останавливаем сервер
#service lirc stop #mode2 -d /dev/lirc0 space 2708220 pulse 9037 space 4436 pulse 626 space 504 pulse 610 space 1644 pulse 610 space 1640 pulse 589 space 530
Настройка
#nano /etc/lirc/hardware.conf # название пульта REMOTE="IR" # загружаемый модуль REMOTE_MODULES="lirc_serial" # драйвер REMOTE_DRIVER="default" # Устройство с которого будет считан сигнал REMOTE_DEVICE="/dev/lirc0" REMOTE_SOCKET="" REMOTE_LIRCD_CONF="" REMOTE_LIRCD_ARGS="" # запуск lircd START_LIRCD="true" # загружать модули LOAD_MODULES="true"
Теперь создадим файл профиля для пульта с помощью команды irrecord:
Программа предложит понажимать все клавиши на ПДУ, и задать название каждой клавиши. На выходе получится файл, имя которого мы задали, останется лишь скопировать его в /etc/lirc/lircd.conf.
список имен кнопок
#irrecord --list-namespace
или отключаем с помощью параметра --disable-namespace
#irrecord -d /dev/lirc0 ~/lircd.conf irrecord - application for recording IR-codes for usage with lirc ... Press RETURN to continue. Now start pressing buttons on your remote control. It is very important that you press many different buttons and hold them down for approximately one second. Each button should generate at least one dot but in no case more than ten dots of output. Don't stop pressing buttons until two lines of dots (2x80) have been generated. Press RETURN now to start recording. ................................................................................ Found const length: 107875 Please keep on pressing buttons like described above. ................................................................................ Space/pulse encoded remote control found. Signal length is 67. Found possible header: 9024 4457 Found trail pulse: 603 Found repeat code: 9026 2206 Signals are space encoded. Signal length is 32 Now enter the names for the buttons. Please enter the name for the next button (press <ENTER> to finish recording) POWER Now hold down button "KEY_POWER". ...
в результате должен получится файл lircd.conf с приблизительно таким содержимым
begin remote name NONAME bits 16 flags SPACE_ENC eps 25 aeps 100 header 9030 4447 one 616 503 zero 616 1628 ptrail 616 repeat 9035 2198 pre_data_bits 16 pre_data 0x9E29 gap 39858 toggle_bit 0 begin codes POWER 0x000000000000B748 PC 0x0000000000007788 SOURCES 0x0000000000000FF0 MTS 0x00000000000037C8 MUTE 0x000000000000F708 VOL_UP 0x00000000000027D8 VOL_DOWN 0x00000000000007F8 CH_UP 0x000000000000A758 CH_DOWN 0x0000000000008778 FUNC 0x0000000000006798 PG- 0x00000000000047B8 PG+ 0x0000000000008F70 TTX 0x0000000000004FB0 1 0x0000000000007F80 2 0x000000000000BF40 3 0x0000000000003FC0 4 0x000000000000DF20 5 0x0000000000005FA0 6 0x0000000000009F60 7 0x0000000000001FE0 8 0x000000000000EF10 9 0x0000000000006F90 0 0x000000000000FF00 CH_RTN 0x00000000000017E8 CC 0x0000000000009768 SYNC 0x000000000000D728 CH_CH 0x000000000000E718 AUTOSCAN 0x000000000000CF30 +100 0x000000000000AF50 end codes end remote
Копирем файл настроек
#cp ~/lircd.conf /etc/lirc/lircd.conf
Запускаем сервер
#service lirc start
и проверяем работу, будет выводится код и название кнопки
#irw 000000009e29bf40 00 2 NONAME 000000009e293fc0 05 3 NONAME 000000009e29a758 00 CH_UP NONAME 000000009e298778 00 CH_DOWN NONAME 000000009e2927d8 06 VOL_UP NONAME
Использование
Файл lircrc должен быть помещен в домашний каталог ~/.config/lircrc. При желании вы можете создать общесистемный конфигурационный файл, расположенный в "/etc/lirc/lircrc" который будет использоваться при отсутствии lircrc. Идея заключается в том, чтобы иметь информацию о конфигурации всех клиентов в одном месте.
............. продолжение