LIRC и Fedora Core 4
Още от слакерският ми период използвам удобството да командвам компютъра с обикновено дистанционно управление. Преминах през различни етапи на приемащата схема, имаше пушилки от колофон и взиране в мултицети. Сега като по-улегнал или мързелив потребител използвам готовия датчик, който идва със SkyStar 2 платката. Той е универсален и се включва в серийния порт. За да работи е необходимо да се използва допълнителен модул към ядрото, в моя случай е lirc_serial. Това всъщност няма значение.
По принцип лeсно и бързо се инсталира от tarball, но при наличието на пакетна система е по-удобно и елегантно да се направи пакет – в случая rpm.
Доскоро използвах ATrpmst, за подкарване на LIRC. При излизането на ново ядро за Fedora Core , обаче е необходимо да се прекомпилират наново модулите за LIRC. В такъв случай изчаквах да ги компилират от ATrpmst. Опитите ми за собствена компилация завършиха с неуспех, тъй като нямам макросите, които се използват от ATrpmst. Чакането понякога е доста досадно и вместо да се ползва времето пълноценно, аз го губя в излишни и чести забежки към компютъра.
Една друга алтернатива за LIRC е от Fedora Extras. Това хранилище по подразбиране е включено при инсталиране на Fedora Core 4. Там има прекомпилиран LIRC, но няма модули. След малко търсене решението беше намерено.
Нужен е source rpm – именува се lirc-****.fc4.src.rpm и може да бъде намерен например в Fedora Extras хранилището на Софийския университет.
wget http://fedora.lcpe.uni-sofia.bg/fedora/linux/extras/4/SRPMS/lirc-0.7.2-1.1.fc4.src.rpm
Следващото е песен :
Аз създавам и софтуера и модулите:
С командата
rpmbuild --rebuild --target i686 lirc-0.7.2-1.1.fc4.src.rpm
се създава пакета с приложението (lirc-0.7.2-1.1.i686.rpm), и пакети за разработчици (lirc-devel-0.7.2-1.1.i686.rpm и lirc-debuginfo-0.7.2-1.1.i686.rpm)
Следващата стъпка е създаването на пакета с модули с командата :
rpmbuild --rebuild --with modules --target i686 lirc-0.7.2-1.1.fc4.src.rpm
Резултатът е пакет kernel-module-lirc-2.6.13-1.1532_FC4-0.7.2-1.1.i686.rpm – едно чудесно име.
Както се вижда пакетът с модули зависи от версията на ядрото, която се използва в момента.
При липса на зависимости ще бъдете предупредени за такива и процесът ще спре.
Компилираните пакети се намират в директория /usr/src/redhat/RPMS/i686 (последната може да е друга, в съответствие с процесора)
Следва тяхното инсталиране като първо се започва с lirc.
rpm -ivh lirc-0.7.2-1.1.i686.rpm
Ред е на новосъздаденият пакет модули:
rpm -ivh kernel-module-lirc-2.6.13-1.1532_FC4-0.7.2-1.1.i686.rpm
Който иска да създава пакети с приложения, които използват LIRC, е необходимо да инсталира и lirc-devel
rpm -ivh lirc-devel-0.7.2-1.1.i686.rpm
Донастройване е лесно и бързо:
Редактира се файлът /etc/sysconfig/lirc
В реда LIRCD_OPTIONS= се добавя -d /dev/lirc0 между двете кавички и се записва.
Редактира се и файлът /etc/modprobe.conf, като се добавя следния ред
alias char-major-61 lirc_serial
Името на конкретния модул (lirc_serial)може да варира, защото зависи от типа приемник, дали е на USB, през звуковата карта и т.н.
За използващите сериен модул, като в описвания случай преди да се зареди модула е необходимо да се изпълни следната команда:
setserial /dev/ttySX uart none,където X е 0, 1 и т.н. според това кой COM порт се използва. Например COM1=/dev/ttyS0.
След това се зарежда модула с :
modprobe lirc_serial
Отново припомням, че вместо lirc_serial може да е друг модул.
Къде ще поставите горните две команди зависи от вас, тук има чудесно ръководство за стартиране на модули във Fedora Core и Red Hat
Остава да се създадат конфигурационните файлове в зависимост от дистанционните управление. Те са два на брой и едният е за lircd, а другият е за lircmd (демон, който управлява мишката с дистанционното управление – по подразбиране е изключен).
Единият вариант е да се използват готови конфигурационни файлове. В /usr/share/doc/lirc-0.7.2/remotes/ има голям брой готови такива файлове. Те завършват според модела на дистанционното. Например lircd.conf.avermedia98. Това трябва да се преименува и да се сложи на правилното място:
cp /usr/share/doc/lirc-0.7.2/remotes/avermedia/lircd.conf.avermedia98 /etc/lircd.conf
Другият начин е с „обучение“ на LIRC за произволен модел дистанционно. Как става това може да прочетете ето тук (за съжаление на шльокавица).
Накрая се стартира приложението:
service lirc start
Дали работи може да се провери така:
service lirc status
Може да се прегледа и /var/log/messages, появява се подобно:
Nov 14 18:03:25 localhost lircd-0.7.2[7592]: lircd(any) ready
Тестването се извършва така:
При стартирана услуга lirc се се пуска командата :
mode2 -d /dev/lirc0
При натискане на бутоните на дистанционното в конзолата излизат такива редове :
pulse 26
space 631421
pulse 1666
space 901
pulse 855
space 839
pulse 877
С ctrl+c се прекъсва програмата.
Крайното тестване се извършва с друга команда от пакета-
irw
Нейният резултат в конзолата, при натискане на бутон, е такъв:
000000000000128f 00 HELP Skystar2_Remote
000000000000128f 01 HELP Skystar2_Remote
000000000000128f 02 HELP Skystar2_Remote
000000000000128f 03 HELP Skystar2_Remote
000000000000128f 04 HELP Skystar2_Remote
Това показва, че правилно е разчетено дистационното. Отново с ctrl+c се прекъсва програмата.
Оттук нататък по се указва кой бутон каква програма да стартира ила какво друго действие да се извърши. Това става като се създаде файл с име .lircrc в потребителската директория. Форматът на файла е описан тук. След като е създаден подходащ файл, се стартира програмата irxec, която чете този файл и при съвпадение изпълнява действието програмирано с този клавиш. Тази команда може да се сложи в стартиращата папка на KDE (или чрез контролния център на GNOME да се направи подобно), за да не се пуска всеки път ръчно.
При поява на ново ядро, нещото, което трябва да се направи е да се създаде пакета с модулите наново – изпълняваме
rpmbuild --rebuild --with modules --target i686 lirc-0.7.2-1.1.fc4.src.rpm
и след това инсталираме новата версия модули с командата rpm.


on April 9th, 2006 at 15:58
[...] Оттам нататък вече е по стария начин – компилират се приложението и модула. При смяна на версията на ядрото се компилира и инсталира само новия модул. [...]