HOWTO lirc

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел железо

Содержание

[править] Что такое lirc

lirc - Linux InfraRed Control - программа с помощью которой можно принимать и посылать команды по инфракрасному каналу связи. В качестве приёмников ИК излучения могут использоваться специальные датчики подсоединённые к параллельному, последовательному или USB порту, а также ИК датчики других устройств (например TV/FM тюнера, или декодера DVD). Тоже относится и к передаче сигналов. Таже есть возможность использовать устройства IrDA.

[править] Задача

Итак, представим ситуацию: у вас есть TV/FM тюнер (например как у меня AverMedia 205), и желание использовать его в Gentoo.

[править] Что делать???

Первое что нужно сделать это, (нет это не emerge), надо определиться или компилировать все драйвера lirc или только тот который нужен. Например для AverMedia -- export LIRC_DEVICES="avermedia98", или export LIRC_DEVICES="=any" - для того чтобы скомпилировать все драйвера. Для большенства современных моделей подойдёт export LIRC_DEVICES="devinput" Также полезная опция - добавить в USE флаг doc.

И только теперь можно делать

# emerge lirc

Примечание: Такая последовательность нужна потому, что по умолчанию emerge компилирует только драйвер lirc для последовательного порта

После этого можно проверить доступен ли драйвер lirc для ядра:

modprobe lirc-gpio

если нет никаких "страшных" сообщений, то всё в порядке

Примечание: в документации по lirc этот драйвер называется lirc-xxx где xxx -- serial, parallel etc.
Примечание: в документации сказано, что lirc-gpio - плагин к драйверу lirc-dev, который обеспечивает поддержку чипов, на котром в частности сделан тюнер AverMedia
Примечание: Если вы используете devinput то этого делать не надо, так же как и следующий пункт

Теперь нужно сделать некоторые добавления в файле /etc/modules.d/aliases

Файл: aliases

#lirc support
alias char-major-61 lirc-gpio
#alias /dev/lirc0 char-major-61

Примечание: Вторая строка закоментирована, так как я использую devfs
Примечание: devfs deprecated

следующее что надо сделать - отредактировать /etc/conf.d/lircd

Файл: lircd

#Options to pass to the lircd process
LIRCD_OPTS="-d /dev/lirc0"

Это путь к устройству с которым ассоциирован драйвер lirc-dev. Вместо /dev/lirc0 напишите путь к устройству (нпример у меня /dev/lirc/0)

Если вы используете devfs, также можно настроить его автоматически создавать символические ссылки типа /dev/lir0 на устройства типа /dev/lirc/0 например так: создать файл

Файл: /etc/devfs.d/lirc

LOOKUP          ^lirc0$           CFUNCTION GLOBAL mksymlink lirc/0 lirc0
REGISTER        ^lirc/0$   	  CFUNCTION GLOBAL mksymlink $devname lirc0
UNREGISTER      ^lirc/0$  	  CFUNCTION GLOBAL unlink lirc0

Примечание: Если Вы используете udev, то в тарболе lirc есь соответствующие правила.
Примечание: В udev > 096 появилась очень удобная для интерфейса input функция - создание ссылок со значищими именами например /dev/input/by-path/pci-0000:05:08.0--event-ir

Теперь нужно настроить пульт ДУ. Есть два пути: воспользоваться готовым файлом lircd.conf (например с сайта lirc), или воспользоваться документацией, и сделать этот файл самостоятельно.

теперь запустите lirc

# /etc/init.d/lircd start

если всё запустилось

дальше нужно проверить lirc, для этого выполните команду mode2 -d путь_к_файлу_устройства нажимайте кнопки на пульте управления, и смотрите, какие коды появляются на экране. Когда закончите нажмите Control+C

[править] Настройка для Avermedia AVerTV Studio 307

Если у вас настроена и работает AVerTV 307, то можно произвести настройку lirc по другому

Во-первых нужно включить модуль evdev

Linux Kernel Configuration: Настраеваем ядро
Device Drivers--->
  Input device support--->
    <M>  Event interface
Code: Собираем, устанавливаем и включаем evdev
# make modules modules_install
# modprobe evdev 


Если надо пересобираем lirc с LIRC_DEVICES="devinput"

Файл: /etc/make.conf
LIRC_DEVICES="devinput"

# emerge app-misc/lirc


У вас уже должен быть настроен и запущен тв-тюнер.

# lsmod | grep ^saa7134

Запускаем saa7134 если результат пустой

# modprobe saa7134

В udev > 096 появилась очень удобная для интерфейса input функция - создание ссылок со значищими именами. Этим и воспользуемся:

Code: $ ls /dev/input/by-path/ | grep event-ir

pci-0000:00:11.0--event-ir

У меня IR находиться на /dev/input/by-path/pci-0000:00:11.0--event-ir

Проверим работу устройства # cat /dev/input/by-path/pci-0000:00:11.0--event-ir Теперь нажимаём кнопки на пульте.

Если есть реакция (какие либо символы), значит работает.


Протестируем lircd

Code: # lircd --nodaemon --driver=dev/input --device=/dev/input/by-path/pci-0000:00:11.0--event-ir
lircd-0.8.0[9875]: lircd(devinput) ready

На другой консоли запустим $ irw

Опять нажимаём кнопки на пульте.

В консоли с lircd появляются сообщения об этих нажатиях.

В консоли с irw появлются символьные имена нажатой кнопки.

Примечание: Если символьные имена не появляются нужно взять следующий lircd.conf
Файл: lircd.conf

begin remote

  name  AVerMediaMy
  bits           32
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       9078  4437
  one           615  1631
  zero          615   515
  ptrail        620
  repeat       9080  2189
  gap          108056
  repeat_bit      0

      begin codes
          POWER                    0x0000000080010074
          TV/FM                    0x0000000080010179
          CD                       0x000000008001017F
          TELETEXT                 0x0000000080010184
          VIDEO                    0x0000000080010189
          1                        0x0000000080010002
          2                        0x0000000080010003
          3                        0x0000000080010004
          AUDIO                    0x0000000080010188
          4                        0x0000000080010005
          5                        0x0000000080010006
          6                        0x0000000080010007
          FULLSCREEN               0x0000000080010174
          7                        0x0000000080010008
          8                        0x0000000080010009
          9                        0x000000008001000a

          PREVIEW                  0x00000000800100D2
          0                        0x000000008001000b
          DISPLAY                  0x0000000080010172
          LOOP                     0x00000000800100A8
          MUTE                     0x0000000080010071
          AUTOSCAN                 0x00000000800100D9
          FREEZE                   0x000000008001008E
          CAPTURE                  0x000000008001019A
          PLAY                     0x00000000800100CF
          RECORD                   0x00000000800100A7
          PAUSE                    0x0000000080010077
          STOP                     0x0000000080010080
          YELLOW                   0x0000000080010190
          RED                      0x000000008001018E
          VOL_DOWN                 0x0000000080010072
          VOL_UP                   0x0000000080010073
          BLUE                     0x0000000080010191
          GREEN                    0x000000008001018F
          CH_DOWN                  0x0000000080010193
          CH_UP                    0x0000000080010192
      end codes

end remote



Прерываем lircd, и записываем его опции в /etc/conf.d/lircd

Файл: /etc/conf.d/lircd
 LIRCD_OPTS=" --driver=dev/input --device=/dev/input/by-path/pci-0000:00:11.0--event-ir"

Не забываем добавить модуль evdev в автозагрузку

Файл: /etc/modules.autoload.d/kernel-2.6
 evdev

добавляем lircd в автозагрузку

# rc-update add lircd default


[править] Настройка для Pinnacle PCTV

1. В /etc/make.conf добавьте строку:

Файл: /etc/make.conf

LIRC_DEVICES="pctv"

2. # emerge -av lirc

3. В /etc/conf.d/lircd пропишите

Файл: /etc/conf.d/lircd

LIRCD_OPTS="--driver=pinsys --device=/dev/ttyS0"

(если используется порт COM2, а не COM1, следует заменить ttyS0 на ttyS1)

4. Скопируйте файл из архива lirc ./remotes/pinnacle_systems/lircd.conf.pctv в /etc/lircd.conf

5. Запустите демон lircd: # /etc/init.d/lircd start

6. Запустите в консоли команду $ irw и проверьте реакцию системы на нажатия кнопок на ПДУ. Если все в порядке, вы получите примерно такой вывод:

Code: Вывод irw
000000000000003f 00 Chan+Play PinnacleSysPCTVRemote
000000000000003b 00 Vol+FF PinnacleSysPCTVRemote
000000000000001a 00 middle PinnacleSysPCTVRemote
000000000000003e 00 Chan-Stop PinnacleSysPCTVRemote
000000000000003d 00 Vol-Rew PinnacleSysPCTVRemote
000000000000001a 00 middle PinnacleSysPCTVRemote
0000000000000016 00 undo PinnacleSysPCTVRemote
0000000000000015 00 pause PinnacleSysPCTVRemote
0000000000000017 00 channel+ PinnacleSysPCTVRemote
000000000000002d 00 Fullscreen PinnacleSysPCTVRemote
000000000000002e 00 Preview PinnacleSysPCTVRemote
000000000000002e 01 Preview PinnacleSysPCTVRemote

7. Теперь можно настроить клиентов lirc.

Вот пример файла ~/.lircrc. С ПДУ можно управлять плеером mplayer, программой просмотра ТВ tvtime и плеером mpd через mpc. Для tvtime и mpc необходимо, чтобы был запущен демон irexec (от имени обычного пользователя), запуск которого, для удобства, можно добавить в автозагрузку.

Файл: ~/.lircrc
#
# mplayer buttons
#
begin
    button = Vol+FF
    prog = mplayer
    config = volume 1
    repeat = 1
end
begin
    button = Vol-Rew
    prog = mplayer
    config = volume -1
    repeat = 1
end
begin
    button = middle
    prog = mplayer
    config = pause
end
begin
    button = Chan+Play
    prog = mplayer
    config = pt_step 1
end
begin
    button = Chan-Stop
    prog = mplayer
    config = pt_step -1
end
begin
    button = Fullscreen
    prog = mplayer
    config = vo_fullscreen
end
begin
    button = 1
    prog = mplayer
    config = seek -10
end
begin
    button = 4
    prog = mplayer
    config = seek -60
end
begin
    button = 3
    prog = mplayer
    config = seek 10
end
begin
    button = 6
    prog = mplayer
    config = seek 60
end
begin
    button = 7
    prog = mplayer
    config = audio_delay +0.1
end
begin
    button = 9
    prog = mplayer
    config = audio_delay -0.1
end
#
# tvtime commands 
#
begin
   prog = irexec
   button = Info
   config = tvtime-command DISPLAY_INFO
   repeat = 1
end
begin
   prog = irexec
   button = Fullscreen
   config = tvtime-command TOGGLE_FULLSCREEN
end
begin
   prog = irexec
   button = Menu
   config = tvtime-command SHOW_MENU
end
begin
   prog = irexec
   button = Mute
   config = tvtime-command TOGGLE_MUTE
end
# Menu navigation
begin
   prog = irexec
   button = Chan+Play
   config = tvtime-command UP
   repeat = 1
end
begin
   prog = irexec
   button = Chan-Stop
   config = tvtime-command DOWN
   repeat = 1
end
begin
   prog = irexec
   button = Vol+FF
   config = tvtime-command RIGHT
   repeat = 1
end
begin
   prog = irexec
   button = Vol-Rew
   config = tvtime-command LEFT
   repeat = 1
end
begin
   prog   = irexec
   button = 1
   config = tvtime-command CHANNEL_1
end
begin
   prog   = irexec
   button = 2
   config = tvtime-command CHANNEL_2
end
begin
   prog   = irexec
   button = 3
   config = tvtime-command CHANNEL_3
end
begin
   prog   = irexec
   button = 4
   config = tvtime-command CHANNEL_4
end
begin
   prog   = irexec
   button = 5
   config = tvtime-command CHANNEL_5
end
begin
   prog   = irexec
   button = 6
   config = tvtime-command CHANNEL_6
end
begin
   prog   = irexec
   button = 7
   config = tvtime-command CHANNEL_7
end
begin
   prog   = irexec
   button = 8
   config = tvtime-command CHANNEL_8
end
begin
   prog   = irexec
   button = 9
   config = tvtime-command CHANNEL_9
end
begin
   prog   = irexec
   button = 0
   config = tvtime-command CHANNEL_0
end
begin
   prog = irexec
   button = middle
   config = tvtime-command MENU_ENTER
end
#
# MPD Player commands:
#
begin
   prog = irexec
   button = Play
   config = mpc play
end
begin
   prog = irexec
   button = Stop
   config = mpc stop
end
begin
   prog = irexec
   button = Pause
   config = mpc pause
end
begin
   prog = irexec
   button = FForward
   config = mpc next
end
begin
   prog = irexec
   button = Rewind
   config = mpc prev
end
begin
   prog = irexec
   button = undo
   config = mpc volume -2
end
begin
   prog = irexec
   button = redo
   config = mpc volume +2
end 

8. Если все хорошо работает и вы хотите постоянно использовать ПДУ, добавьте сервис lircd в список загружаемых по-умолчанию: rc-update add lircd default .

9. При любых проблемах рекомендуется пересобрать lirc с флагом "debug", а запускать с помощью lircd --nodaemon -D4 <опции> - вы будете видеть все, что происходит.

[править] Что дальше

Вобщем-то перед вами открывается масса возможностей. Lirc включает в себя также клиентскую библиотеку для доступа к ИК датчику.

Если у вас установлен KDE то в нём есть очень интересная программа KIRCK. Которая достпна также и через чентр управления - удалённое управление. Например можно настроить удалённое управление так, чтобы запускать какю либо программу по нажатию кнопки, а также настроить управление через пульт ДУ в таких программах как KDEtv или AmaroK.

Есть ещё одна интересная особенность lirc - управление мышью - lircmd. Но я ей не пользуюсь, и поэтому ничего не могу сказать о ней, только послать читать руководство.

Источник — «http://ru.gentoo-wiki.com/HOWTO_lirc»
Личные инструменты