Highlighter

воскресенье, 15 января 2012 г.

mceusb и миграция на lirc-0.9

Была у меня система, работающая, в основном, как домашний мультимедиа-центр, на базе Gentoo. Естественно, был пульт и использовался lircd. 

Для работы компилировались модули ядра из комплекта lirc. И для работы использовался модуль lirc_mceusb. Однако примерно с ядра 2.6.36 mceusb включён в ядро linux. Конечно, есть всякие "полезности" для совместимости, но нужно переделывать lircd.conf, что не хочется. В итоге у меня использовался lirc_mceusb, а всё, касающееся пультов ДУ, из ядра было убрано. 

Но это не могло продолжаться вечно. И наступил тот час, когда после обновления, lirc банально не собрался, а в более свежей версии уже не было поддержки lirc. В общем, пришлось делать всё "по-уму". Вообще, действия простые, но на то, чтобы понять, что делать, ушло довольно много времени. 

1) Включаем в ядре (можно модулями, если есть желание) 


CONFIG_RC_MAP=y
CONFIG_IR_RC6_DECODER=y
CONFIG_IR_MCEUSB=y

Это всё зависит от модели пульта и протокола, который он использует. Подробнее можно посмотреть тут 

-> Device Drivers
 -> Multimedia support (MEDIA_SUPPORT =y])
 -> Remote Controller adapters (RC_CORE [=y])


2) В make.conf заменяем значение LIRC_DEVICES на "devinput", заменяя то, что было. И пересобираем lirc. 

LIRC_DEVICES="devinput"

3) Используем стандартный конфиг для lirc 

ln -s /usr/share/lirc/remotes/devinput/lircd.conf.devinput /etc/lirc/lircd.conf

4) стартуем lircd 

5) Если irw не видит нажатий кнопок на пульте, то смотрим, какое устройство в /dev/input соответствует нашему ir-приёмнику. Для этого можно его отключить, и посмотреть, что изчезнет, затем подключить. После этого, можно прописать /etc/conf.d/lircd что-то вроде 

LIRCD_OPTS="-H devinput -d /dev/input/by-id/usb-COMPRO_VideoMate_IR20_REV.02-event-if00"LIRCD_OPTS="-H devinput -d /dev/input/by-id/usb-COMPRO_VideoMate_IR20_REV.02-event-if00"

5) Перезапускаем lirc, смотрим irw и радуемся. 

6) А мне пришлось не радоваться, а править ~/.xbmc/userdata/Lircmap.xml для корректной работы всех кнопок. Для этого я добавил описание пульта. 

<remote device="devinput"> 
 <play>KEY_PLAYPAUSE</play> 
 <pause>KEY_PAUSE</pause> 
 <stop>KEY_STOP</stop> 
 <forward>KEY_FASTFORWARD</forward> 
 <reverse>KEY_REWIND</reverse> 
 <left>KEY_LEFT</left> 
 <right>KEY_RIGHT</right> 
 <up>KEY_UP</up> 
 <down>KEY_DOWN</down> 
 <select>KEY_OK</select> 
 <pageplus>KEY_CHANNELUP</pageplus> 
 <pageminus>KEY_CHANNELDOWN</pageminus> 
 <back>KEY_EXIT</back> 
 <menu>KEY_LEFTMETA</menu> 
 <title>KEY_EPG</title> 
 <info>KEY_INFO</info> 
 <skipplus>KEY_NEXT</skipplus> 
 <skipminus>KEY_PREVIOUS</skipminus> 
 <display>KEY_SUBTITLE</display> 
 <start>Home</start> 
 <record>KEY_RECORD</record> 
 <volumeplus>KEY_VOLUMEUP</volumeplus> 
 <volumeminus>KEY_VOLUMEDOWN</volumeminus> 
 <mute>KEY_MUTE</mute> 
 <power>KEY_POWER</power> 
 <myvideo>KEY_VIDEO</myvideo> 
 <mymusic>KEY_AUDIO</mymusic> 
 <mypictures>KEY_CAMERA</mypictures> 
 <recordedtv>KEY_PVR</recordedtv> 
 <livetv>KEY_TUNER</livetv> 
 <mytv>KEY_DVD</mytv> 
 <one>KEY_NUMERIC_1</one> 
 <two>KEY_NUMERIC_2</two> 
 <three>KEY_NUMERIC_3</three> 
 <four>KEY_NUMERIC_4</four> 
 <five>KEY_NUMERIC_5</five> 
 <six>KEY_NUMERIC_6</six> 
 <seven>KEY_NUMERIC_7</seven> 
 <eight>KEY_NUMERIC_8</eight> 
 <nine>KEY_NUMERIC_9</nine> 
 <zero>KEY_NUMERIC_0</zero> 
 <star>KEY_NUMERIC_STAR</star> 
 <hash>KEY_NUMERIC_POUND</hash> 
 <clear>KEY_DELETE</clear> 
 <enter>KEY_ENTER</enter> 
 <red>KEY_RED</red> 
 <green>KEY_GREEN</green> 
 <yellow>KEY_YELLOW</yellow> 
 <blue>KEY_BLUE</blue> 
 </remote>

Всё работает. 

Примечание. В большинстве дистрибутивов такой проблемы не возникнет, ибо модули компилируются почти все, как для ядра, так и для lirc, но местами материал может быть полезен.

Впервые опубликовано на http://welinux.ru

Комментариев нет:

Отправить комментарий