Установка Lirc. Подключение ДУ пульта к OpenSuse 11.2
Раздел : Программное обеспечение
Опубликовано DrStrip [06/06/2010]
В статье Установка LXDE на Open SUSE 11.2, я писал, что в компьютере у меня установлен TV-Tuner LifeView FlyTV Platinum, родного ДУ пульта и IR датчика от него у меня небыло. Но у меня давно лежал пульт (RM-1500) с рессивером (SB0540) от Audigy 4, который должен был управлять звуковым софтом от CREATIVE. Я решил использовать эти устройства для управления TVTime, который я выбрал для просмотра ТВ.
В статье описывается подключение, конкретного устройства CREATIVE SB 0540 и пульта RM-1500, но я попытюсь описать в статье общие моменты установки и настройки, которые, надеюсь помогут вам подключить другие IR устройства. В инетернете много информации, о настройке Lirc, но в большенстве она под дистрибутивы семейства Debian, которые "несколько" отличаются от Open Suse 11.2.
Для управления различными IR устройствами в Linux, используется пакет Lirc (Linux Infrared Remote Control), который и был установлен в системе. В пакет входит несколько утилит и демон, который и надо настроить для работы с нашим рессивером и пультом.
На сайте http://www.lirc.org/ в разделе документации, я посмотрел список поддерживаемого оборудования Detailed list of supported hardware, в котором было найдено мое устройство.
Рессивер был подключен в USB, и в системе появилось новое устройство /dev/usb/hiddev0, на всякий случай я дал права всем пользователям на это устройство.
chmod 666 /dev/usb/hiddev0

Настройки lirc храняться в файле /etc/sysconfig/lirc, открываем его на редактирование. Ниже мой файл /etc/sysconfig/lirc, в который я добавил свои примечания на русском, к тем значениям которые я менял.
## Path:           Hardware/Lirc
## Description: lirc (infrared remote control) configuration
## Type: string
## Default: "660"
## ServiceRestart: lirc
#
# permissions for /dev/lircd
#
LIRCD_DEV_PERMISSIONS="666"
#Дал права для все пользователей

## Type: string
## Default: "root:video"
#
# owner and group for /dev/lircd
#
LIRCD_DEV_OWNER="root:video"

## Type: string
## Default: ""
#
# use given driver
#
LIRCD_DRIVER="sb0540"
#Драйвер устройства нашел в http://www.lirc.org/html/table.html

## Type: string
## Default: ""
#
# read from given device
#
LIRCD_DEVICE="/dev/usb/hiddev0"
#Мое устройство которое создалось при подключении рессивера в usb

## Type: string(lirc_bt829,lirc_gpio,lirc_i2c,lirc_it87,lirc_parallel,lirc_sir,ir-kbd-i2c,ir-kbd-gpio)
## Default: ""
#
# load given lirc driver module
#
LIRC_MODULE=""

## Type: string
## Default: ""
#
# listen for network connections on specified port.
# WARNING: don't use this on a machine with an internet
# connection as lircd is running as root!
#
LIRCD_LISTENPORT=""

## Type: string
## Default: ""
#
# connect lircd to specified host
#
LIRCD_CONNECT=""

Далее надо создать /etc/lircd.conf, в котором описаны коды кнопок пульта. В директории /usr/share/lirc/remotes лежат готовые описания различных пультов, и там даже я нашел свой пульт в каталоге /creative/lircd.conf.alsa_usb, но с этим конфигом ничего не работало . Поэтому я создал свой конфиг, делается это командой
irrecord -H <Ваш драйвер> -d /dev/<Ваше устройство> --disable-namespace /etc/lircd.conf

для моего рессивера
irrecord -H sb0540 -d /dev/usb/hiddev0 --disable-namespace /etc/lircd.conf

На приглашение зажать кнопку, зажимаем на пульте ДУ какую-нибудь кнопку и держим ее. На экране при нажатии должны отображаться точки.
Далее программа спросит, как будет называться кнопка. Набираем, например, 1, давим "Enter" и жмем на пульте ДУ тоже "1", затем 2, "Enter", "2" на ДУ, и т.д. все кнопки. После ввода всех кнопок пульта нажимаем просто "Enter" и затем программа попросит нажимать какую-нибудь кнопку. Необходимо не ЗАжимать, а НАжать, как можно быстрее. В результате получиться /etc/lircd.conf примерно с таким содержимым

# Please make this file available to others
# by sending it to
#
# this config file was automatically generated
# using lirc-0.8.6(sb0540) on Wed Jun 2 02:21:43 2010
#
# contributed by
#
# brand: Creative
# model no. of remote control: RM-1500
# devices being controlled by this remote: Audigy 4
#

begin remote

name Creative_RM-1500
bits 16
eps 30
aeps 100

one 0 0
zero 0 0
pre_data_bits 16
pre_data 0x8322
gap 103967
toggle_bit_mask 0x0

begin codes
POWER 0x000000000000619E # Power
1 0x0000000000008B74 # 1
2 0x0000000000008F70 # 2
3 0x000000000000906F # 3
4 0x0000000000008A75 # 4
5 0x000000000000847B # 5
6 0x0000000000007887 # 6
7 0x0000000000008976 # 7
8 0x000000000000837C # 8
9 0x0000000000007788 # 9
0 0x000000000000807F # 0
CMSS 0x000000000000718E # CMSS
EAX 0x0000000000008C73 # EAX
MUTE 0x0000000000006E91 # Mute
VOLUMEDOWN 0x000000000000639C # Vol_Down
VOLUMEUP 0x000000000000629D # Vol_Up
UP 0x0000000000007B84 # Up
LEFT 0x0000000000008778 # Left
OK 0x000000000000817E # Ok
RIGHT 0x000000000000758A # Right
DOWN 0x0000000000008D72 # Down
RETURN 0x0000000000008E71 # Return
START 0x0000000000008877 # Start
CANCEL 0x0000000000007C83 # Cancel
REC 0x000000000000738C # Rec
OPTIONS 0x000000000000827D # Options
DISPLAY 0x0000000000007689 # Display
PREVIOUS 0x0000000000007F80 # Previous
PLAY 0x0000000000007986 # Play
NEXT 0x0000000000007A85 # Next
SLOW 0x0000000000007D82 # Slow
STOP 0x000000000000857A # Stop
STEP 0x0000000000007E81 # Step


end codes

end remote


Запускаем демон lirc
sudo /etc/init.d/lirc start

Неплохо было бы проверить, работает ли то что мы настроили . В терминале вводим команду
irw
и нажимем кнопки на пульте, если все нормально, то вы получите примерно такое
000000008322847b 00 5 Creative_RM-1500
000000008322847b 00 5 Creative_RM-1500
000000008322906f 00 3 Creative_RM-1500
000000008322619e 00 POWER Creative_RM-1500
Желательно пронажимать ВСЕ кнопки на пульте и проверить правильность кодов. У меня например, некоторые кнопки срабатывали неправильно, пока не установил toggle_bit_mask 0x0 в /etc/lircd.conf.
Осталось настроить приложения для работы с lirc. Настройка приложений происходит через файлы /etc/.lircrc (который общий для всех пользователей) и/или /home//.lircrc для каждого отдельно. Часть приложений имеют нативную поддержку lirc (mplayer,audacious), для тех же приложений которые не умеют работать с lirc, но работают с коммандной стройкой есть утилита irexec, которая позволяет выполнять любые команды, принажатии кнопок пульта, в качестве примера я приведу свои фалы конфигурвции для регулировки звука с пульта и TVtime. ~/.lircrc
include ~/.lirc/vlc
include ~/.lirc/tvtime

begin
prog = irexec
remote=*
button = VOLUMEUP
config = amixer sset Master,0 5%+
repeat = 0
delay = 0
end

begin
prog = irexec
remote=*
button = VOLUMEDOWN
config = amixer sset Master,0 5%-
repeat = 0
delay = 0
end

begin
button = MUTE
prog = irexec
config = amixer sset Master mute
config = amixer sset Master unmute
repeat = 0
delay = 0
end





~/.lirc/tvtime
begin
button = POWER
prog = irexec
config = tvtime &
config = tvtime-command QUIT
end

begin
prog = irexec
button = UP
config = tvtime-command UP
repeat = 1
end
begin
prog = irexec
button = DOWN
config = tvtime-command DOWN
repeat = 1
end

begin
prog = irexec
button = DISPLAY
config = tvtime-command DISPLAY_INFO
repeat = 1
end

begin
prog = irexec
button = MUTE
config = tvtime-command TOGGLE_MUTE
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 = OK
# config = tvtime-command ENTER
config = tvtime-command SHOW_MENU &
config = tvtime-command ENTER
end
#begin
# prog = irexec
# button = OK
# config = tvtime-command MENU_SHOW
#end



begin
prog = irexec
button = RETURN
config = tvtime-command CHANNEL_JUMP
repeat = 1
end
Для нормальной работы irexec его надо сначала запустить как демон
irexec -d
и добавить в автозагрузку оконного менеджера.
Вот собственно и все.
Удачи!

Примечание: Если у TV-tunera есть поддержка пульта, то он (пульт) видится системой, как обычное устройство ввода /dev/input/eventX (где X номер устройства). Как своеобразная клавиатура.
cat /proc/bus/input/devices
выведет вам все ваши устройства input. Для его работы под lirc используйте драйвер devinput, а в качестве устройства /dev/input/eventX.