от Daniel Zhelyazkov(3-03-2003)

рейтинг (26)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Как да управляваме Линукс приложенията с дистаннционно управление с помоща на
LIRC - Linux Infrared Remote Control


LIRC is a package that allows you to decode and send infra-red signals
of many (but not all) commonly used remote controls.
Pre-release versions are currently available at the LIRC homepage:
http://www.lirc.org/

Цел на тази статия е  да даде идея как да се пусне дистанционно под Линукс чрез LIRC и за какво да се използва.

Чрез LIRC могат да се управляват MPlayer, XMMS и други, но аз използвам само тези. Ако имате DVD и работеща TV карта с MPlayer ще превърнете PC-то си в нещо уникално. С ще си джиткате MP3-ки ще гледате TV, DVD и DIVX без  да се налага да седите на стола пред PC-то.

Инсталация и настроика:

При мен ситуацията е:
Видео карта Tekram M230 Mach64 с TV и дистанционно.
LIRC Version: 0.6.6

След като изтеглите и разархивирате LIRC в директорията на LIRC ще откриете setup.sh, пускате го
$ ./setup.sh
и за обща радост инсталацията се извършва чрез меню, подобно на ядрото на Линукс. Първо е необходимо да изберем нашият хардуер "1 Driver Configuration", следва избор на типа на дистанционното( дали е към TV карта сериен порт или други), аз  избирам "5 TV Card", и следва избор на точния модел (при мен "O Tekram M230  Mach 64"). Дотук с настройката на драйвера. В "2 Software configuration" нямя  нищо, което да се нуждае от промяна. И избирам "4 Save Configuration & run configure". След  успешно изпънение на конфигурационният скрипт бива изписан модула, който трябва да  използваме и сме подканени да компилираме и инсталираме LIRC.

You will have to use the lirc_bt829 kernel module.

Now enter 'make' and 'make install' to compile and install the package.

Изпълняваме:
$ make
за make install ще трябва да сме root затова
$ su
Password:
# make install

В /lib/modules/kernel_version/misc/ ще откриете 2 модула:
lirc_bt829.o това е модула, който аз използвам, а вие този който конфигурационният скрипт ви посочи и
lirc_dev.o

В /dev/ са създадени nod-овете:

  • /dev/lirc - тук модулита lirc_dev предава получените от дистаннционното сигнали. Към /dev/lirc се свързва и демона lircd, който пък сравнява кодовете получени от /dev/lirc с тези в /etc/lircd.conf като на мястото на /etc/lircd.conf трябва да сложите съответстващия на вашето дистанционно, конфигурационните файлове се намират в директорята на LIRC, при мен lirc-0.6.6/remotes/ най-вероятно ще откриете и за вашето(особенно вероятно ако е към TV карта или комерсиално работещо на сериен порт) , ако не потърсете на http://lirc.sourceforge.net/remotes/.

  • /dev/lircd - тук демона lircd след сравняването на кодовете изпраща съответстващия сигнал от вида на "000000000000001c 00 POWER M230" или "000000000000001c 01 POWER M230". Където 000000000000001c е декодирания сигнал, 00 или 01 показват, за кой път се изпраща сигнал от дълго задържано копче POWER e съответства на сигнала 000000000000001c, което е описано в /etc/lircd.conf, а M230 показва от кое дистанционно произлиза сигнала.(предполагам е възможно повече от едно дистанционо да работи с един приемник стига кодовете им да не съвпадат). Към /dev/lircd се свързват XMMS MPlayer и др. приложения.

  • /dev/lircm - чрез демона lircmd може да използвате /dev/lircm като мишка.

След инсталацията изпълнете като root:

# depmod

За стартиране на драйверите е нужно:

modprobe lirc_dev
modprobe lirc_bt829 #тук само да напомня, вместо lirc_bt829 сложете нужния вам модул ;)
lircd

Тези 3 команди най добре да поставите в /etc/rc.d/rc.local (за slackware) или в друг скрипт, който се изпълнява от init на start-up.

След като ги стартирате ръчно или reboot-нете стартирайте `irw`(идва с LIRC) и използвайте дистанционното си, ако на екрана започнат да се  изписват сигнали, всичко е ОК в противен случай ще се наложи да потърсите
проблема.

Настройка на XMMS и MPlayer:

За управление на XMMS използвам "Animax Multimedia Magic Control", които изтеглих  компилиран от http://mta.koti.tpo.fi/xmms/, състои се от 2 фала:
http://mta.koti.tpo.fi/xmms/libanimax.la
http://mta.koti.tpo.fi/xmms/libanimax.so
копирайте ги в /usr/lib/xmms/General или в ~/.xmms/Plugins/, при следващо  стартиране на XMMS в Ефекти/Общи ще откриете "Animax Multimedia Magic Control",  настройте го като за Device посочете /dev/lircd. Съществуват и други плъгини за тази цел, потърсете на http://www.xmms.org

MPlayer ще се наложи да прекомпилирате с опцията --enable-lirc
# ./configure --enable-lirc; make ;make install

Настройката на MPlayer е следната във файла ~/.lircrc ще трябва да опишете  командите.

begin			#усилва звука
button = VOL_UP
prog = mplayer
config = volume 1
repeat = 1
end

begin #намаля звука
button = VOL_DN
prog = mplayer
config = volume -1
repeat = 1
end

begin #пауза
button = RECALL
prog = mplayer
config = pause
end

begin
button = PLAY
prog = mplayer
config = play
end


begin #превърта 1 мин. напред
button = CH_UP
prog = mplayer
config = seek +60
end

begin #превърта 1 мин. назад
button = CH_DN
prog = mplayer
config = seek -60
end

begin #STOP
button = STOP
prog = mplayer
config = seek 0\npause
end

begin #превърта 10 мин. напред
button = FFW
prog = mplayer
config = seek +600
end


begin # превърта 10 мин. назад
button = REW
prog = mplayer
config = seek -600
end


begin #quit mplayer
button = POWER
prog = mplayer
config = quit
end
begin # превключва на цял екран и обратното
button = PC_VID
prog = mplayer
config = vo_fullscreen
end

begin #дали да показва OSD и субтитри
button = 0
prog = mplayer
config = osd 0\nsub_visibility
end

Разбира се вие може да си направите друга подредба.
За повече информация прочетете Mplayer-install-dir/DOCS/documentation.html 3.2.2 Control from LIRC

Примерен скрипт за управление на системата:

С този скрипт, който върви от стартирането на Линукс до неговото спиране, аз имам възможност да изпълнявам и спирам различни команди и приложения, изключително полезно когато искате да се пуснете музика, mount и umont на CD-ROM-а вече не са толкова досадни :).

#!/usr/bin/perl
open(REMOTE, "/usr/local/bin/irw |") || die "cannot fork: $!";
           while (<REMOTE>) {
        $a=<REMOTE>;
chomp($a);
($id,$i,$cmmd,$remote) = split (/ /, $a);
    
	if( ($cmmd eq'ADD_ER') ){
	  system ("/usr/bin/xmms &");
	}

if( ($cmmd eq'FUNC') && ($i eq '00') ){
	  system ("/sbin/mount /cdrom");
	  system ("/usr/local/bin/mplayer /cdrom/*.avi /cdrom/*.AVI /cdrom/*.Avi &");  
        }

if($cmmd eq 'F_MINUS'){
	  system ("eject -t");
	  system ("/sbin/mount /cdrom &");
	}

        if($cmmd eq 'F_PLUS'){
          system ("/sbin/umount /cdrom");
	  system ("eject &");    
        }  

        if($cmmd eq 'SOURCE'){
          system ("killall xmms");
        }

        if( ($cmmd eq 'POWER') && ( $i eq '05' ) ) {
	  system ("apm --standby");
        }

        if($cmmd eq 'PC_VID'){

        if( ($i eq '00') ){
		  system ("xscreensaver-command -deactivate &");
	        }
           
	        if($i eq '03'){
		  system ("xscreensaver-command -activate &");
        	}

        }

 }          
close(REMOTE);

Скрипта е бая бъгав и ще се наложи да го промените за да го използвате поради различните кодове в /etc/lircd.conf , но се надявам ви даде идея, как да постигнете желаното. Няко команди изискват root привилегии, може да ги сетнете suid или да изпълнити скрипта като root, аз го стартирам непосредствено след lircd в /etc/rc.d/rc.local, като го стартирам като background процес

/path_to/script.pl &

Ако разбирате от 'C' в документацията на LIRC има примерен код за нещо подобно.

Поддържан хардуер:

TV Capture карти с дистанционно :

Askey Magic TView CPH03x
Askey/Typhoon/Anubis Magic TView CPH051/061
AverMedia TV card (TVCapture, TVPhone)
AverMedia TV card (TVCapture98, TVPhone98)
BestBuy Easy TV (BT848)
BestBuy Easy TV (BT878)
Chronos Video Shuttle II
Dynalink Magic TView
FlyVideo II
FlyVideo 98
FlyVideo 98/FM /2000S
Hauppauge TV card (new I2C layer required)
Hauppauge DVB-s card (ver. 2.1)
KNC ONE TV Station (-/SE/PRO/RDS)
Lenco MXTV-9578 CP
Miro PCTV serial port receiver
Phoebe Tv Master + FM
PixelView PlayTV PAK
Pixelview PlayTV pro
Pixelview PlayTV (bt878)
Prolink PV-BT878P+4E
Prolink PV-BT878P+9B
ProVideo PV951
Technisat MediaFocus I
Tekram M230 Mach64 (and others bt829 based)
TView99 CPH063
Typhoon TView RDS / FM Stereo
Winfast TV2000

Приемници с дистанционно работещи на сериен порт:

Anir Multimedia Magic
CARACA
Creative Infra Receiver
IRdeo
IRdeo Remote
Irman / UIR
Logitech/AST
Miro PCTV receiver
Packard Bell receiver
Pinnacle Systems PCTV (pro) receiver
REALmagic (bundled with Hollywood Plus DVD card)
Slink-e (receive only)
Silitek SM-1000
Tekram Irmate 210

LIRC поддържа и собственоръчно направени приемници, на сайта ще откриете схеми на примерни приемници работещи на сериен порт. Изработката им не е сложна (по не така изглежда ), но все ще се намери някой познат занимаващ се с електроника :).  С тези приемници може да използвате всякакво дистанционно от телевизор видео и т.н., за някои дистанционни може и да няма конфигурационни файлове, на http://lirc.sourceforge.net/remotes/ ще намерите такива, там има за всякакви модели и марки. Ако вси пак не откриете за вашето LIRC предлага програми, с които да определите кодовете на различните бутони на дистанционното.

Успех.

Даниел Желязков
daniel.zh@gmx.net


<< Как да си подкарате скенер Acer S2W 3300U под Дебиан/GNU | Още по-добър Red Hat 8.x >>