venerdì 6 novembre 2009

Come installare il telecomando HSTNN-PRO7 su linux

with a little help from https://bugzilla.redhat.com/show_bug.cgi?id=492558, http://www.malex.org/archives/2006/09/linux-media-center-fai-da-te-7-il-telecomando/, http://old.nabble.com/HP-Pavilion-dv5-RC-configuration-%28and-more%29-td25079025.html

Tanto per cominciare, bisogna installare il driver di gestione del telecomando, cioè lirc:

yum install lirc

Come configurare lirc? Non ci si capisce molto Esiste un tool di configurazione per gnome, che però ho trovato molto più complicato che la soluzione terminale/vi. Il problema è che sulla documentazione ufficiale non ho trovato ben chiaro scritto cosa va messo dove. Allora grazie ai link che ho trovato, capisco che:
  • serve un file che mappi i segnali del telecomando e lo colleghi a comandi del sistema. Questo si può fare lanciando da terminale il comando irrecord con opzioni esotiche. Per fortuna ho trovato anche un anima pia (terzo link lì in alto) che ha già configurato il telecomando e ha messo online il tutto:

    #
    # this config file was automatically generated
    # using lirc-0.8.6-CVS(default) on Thu Aug 20 01:15:04 2009
    #
    # contributed by Giuseppe Bilotta
    #
    # brand: HP Pavilion dv5
    # model no. of remote control: HSTNN-PRO7
    # devices being controlled by this remote: HP Pavilion dv5
    #

    begin remote

    name HP_Pavilion
    bits 8
    flags RC6|CONST_LENGTH
    eps 30
    aeps 100

    header 2740 860
    one 482 420
    zero 482 420
    pre_data_bits 29
    pre_data 0x37FF07B
    gap 110890
    toggle_bit_mask 0x8000
    rc6_mask 0x100000000

    begin codes
    KEY_POWER 0xF3
    # DVD MENU
    KEY_DVD 0xDB
    # 'Q' key
    KEY_MEDIA 0x7F
    # MONITOR SWITCH
    KEY_DISPLAYTOGGLE 0x7E
    # Windows Media Center
    KEY_PROG2 0xF2
    # PAGE DOWN
    KEY_PAGEUP 0xED
    # PAGE UP
    KEY_PAGEDOWN 0xEC
    # STOP
    KEY_STOPCD 0xE6
    # REWIND
    KEY_REWIND 0xEA
    # PLAY / PAUSE
    KEY_PLAYPAUSE 0x91
    # FF
    KEY_FASTFORWARD 0xEB
    # SKIP BACK
    KEY_PREVIOUSSONG 0xE4
    # (up)
    KEY_UP 0xE1
    # SKIP FWD
    KEY_NEXTSONG 0xE5
    # (left)
    KEY_LEFT 0xDF
    # OK / ENTER
    KEY_ENTER 0xDD
    # (right)
    KEY_RIGHT 0xDE
    # BACK / UNDO
    KEY_ESC 0xDC
    # (down)
    KEY_DOWN 0xE0
    # 'i'
    KEY_INFO 0xF0
    # VOL +
    KEY_VOLUMEDOWN 0xEE
    # MUTE
    KEY_MUTE 0xF1
    # VOL -
    KEY_VOLUMEUP 0xEF
    end codes

    end remote

    Per testare che il file funzioni, basta lanciare da root il comando lircd fileconf. Con lircd attivo (va in background), il comando irw mostra sullo stdout i comandi del telecomando. Una volta che siamo sicuri che il file di configurazione sia funzionante, lo si deve copiare in /etc/lircd.conf dove il servizio lirc si aspetta di trovarlo;

  • serve poi che lirc vada a leggersi il device giusto, e questo lo si dice nel file /etc/sysconfig/lirc. Lo apro e modifico la riga relativa in modo che diventi:
    LIRCD_OPTIONS="-d /dev/lirc0 -u"

    cioè -d /dev/lirc0 vuol dire che il telecomando è mappato da linux (o chi per lui) in /dev/lirc0. -u significa che i comandi dati al telecomando devono andare direttamente al sistema (si potrebbe fare diversamente e configurarlo per ogni programma, ma... a chi je va?). il file /etc/sysconfig/lirc diventa dunque:

    # Note: in addition to these parameters, you need to have working -*- sh -*-
    # configuration file for lircd (and lircmd if enabled).
    # Options to lircd(8). Typically, this will be empty, as which driver to use
    # should be specified using the LIRC_DRIVER variable below.
    LIRCD_OPTIONS="-d /dev/lirc0 -u"

    # The infrared receiver (and/or transmitter) driver to be used by lircd(8),
    # similar to passing "-H driver" to lircd(8).
    # Run "/usr/sbin/lircd -H help" to get a listing of supported drivers.
    LIRC_DRIVER=""

    # Which lirc device will be used by lircd(8).
    # This is the same as passing "-d device" to lircd.
    # An empty value will use the default /dev/lirc device.
    LIRC_DEVICE=""

    # If "yes", the init script will try to start lircmd(8) too.
    ENABLE_LIRCMD="no"

    # Options to lircmd(8).
    LIRCMD_OPTIONS=""'''<<BR>> '''

Ciò fatto si abilita il servizio a partire all'avvio, e i giochi sono fatti. SElinux protesta perchè lircd vuole blah blah nella posizione blah blah. È un problema noto e dovrebbe essere risolto in uno dei prossimi update, per adesso il mio SElinux è su permissive, quindi pace.

3 commenti: