Home > drivers, telecomando, ubuntu > Telecomando, questo sconosciuto …

Telecomando, questo sconosciuto …

Ciao a tutti!

Ho appena ricompilato il kernel, mi tocca quindi reinstallare i driver, operazione non necessaria se e si utilizza il kernel originale di ubuntu.

Ne approffitto per prendere appunti ed inserirli nel blog.

Lirc

Parliamo di lirc… E’ il driver che ci permette di usare il telecomando sotto linux.

E’ presente nei repository, quindi, se avete ancora il kernel originale, vi basta installarlo da synaptic e passare direttamente alla parte che riguarda la configurazione, più in basso, se avete trovato problemi a configurarlo.

Se avete un kernel vanilla, lo dovete compilare, ma immagino che già lo sappiate..!

Se invece avete il kernel originale di ubuntu e lo volete comunque compilare, ci sono degli accorgimenti da prendere. Siccome non è il mio caso, vi riporto in breve le istruzioni che dà il sito ufficiale.

Chiariamo subito un concetto, il comando

:~$ uname -r

vi restituisce la versione del kernel che state utilizzando, provate a digitarlo in un terminale e annotatevi la versione del kernel, perchè va installata:

:~$ sudo apt-get install linux-source-<vostraversionekernel>

Questo comando creerà una cartella /usr/src/linux-<vostraversionekernel>, contenente i sorgenti del vostro kernel.

Poi bisogna assicurarsi di avere un file chiamato “.config” nella directory dei sorgenti. Questo file contiene la configurazione del kernel in uso. E’ possibile ottenerlo in due modi. E’ infatti presente nella cartella “/boot”, ma con un nome diverso: config-<vostraversionekernel>

Potete verificare aprendo un terminale e digitando i seguenti comandi:

:~$ ls -la /boot

vi elenca i file presenti nella cartella /boot.

Quindi lo scopo è copiare il file /boot/config-<vostraversionekernel> nel file /usr/src/linux-<vostraversionekernel>/.config.

Fatelo:

:~$ sudo cp /boot/config-<vostrokernel> /usr/src/linux-<vostrokernel>/

Un secondo modo per ottenere questo file è digitare i seguenti comandi:

:~$ cd /usr/src/linux-<vostraversionekernel>
:~$ sudo make oldconfig && make dep

A questo punto dovreste essere in grado di compilare i driver, se non sarà così, vi rimando al link che ho postato sopra, cioè quello del sito ufficiale, che dà ulteriori spiegazioni per i prolemi che si possono incontrare nel compilare i driver con un kernel precompilato.

Compiliamo lirc

Dunque, procediamo …

NOTA BENE: tutta la procedura che seguirà è quella che ho usato io che lirc l’ho compilato. Non so quanto quello che scriverò sia vero per chi lo ha installato dai repo, ma può comunque tornare utile nel caso sia abbiano problemi con la configurazione.

Cominciamo con lo scaricare i sorgenti dal sito ufficiale partendo da questa pagina. Scompattiamoli.

estrailirc

Entriamo nella crtella appena scompattata e apriamo un terminale.

Una via molto comoda per aprire un terminale in una determinata cartella aperta in nautilus è installare il seguente plugin:

:~$ sudo apt-get install nautilus-open-terminal

che ci permetterà, cliccando col destro in uno spazio vuoto della finestra, di aprire il terminale nell’esatta posizione indicata:

aprinelterminale

Non sto a dirvi che per poter compilare qualcosa su linux sono indispensabili gli strumenti di compilazione, se non lo avete già fatto in precedenza, basta eseguire il seguente comando:

:~$ sudo apt-get install build-essential

ma in questo caso è necessario anche un altro pacchetto:

:~$ sudo apt-get install dialog setserial

che permette di aprire una finestra di dialogo nella shell del terminale, cosa che succederà quando eseguirete il prossimo comando:

:~$ ./setup.sh

In questa finestra di dialogo dovrete selezionare il vostro telecomando al punto 1

setup

Se non sapete quale selezionare, fate una piccola ricerca in rete, perchè deve essere compilato il modulo giusto per il vostro telecomando. Nel mio caso è un telecomando imon.

Fatto ciò andate al punto 3 (Save configuration and run configure) e date ok.

Controllate che la configurazione non dia errori, in tal caso vuol dire che avete delle dipendenze non soddisfatte e dovrete cercare di installare i pacchetti che vi mancano.

Se invece è filato tutto liscio, potete installare il driver:

:~$ make
:~$ sudo make install

Ok!! Il driver è installato, ma siamo solo all’inizio …

Testiamo e configuriamo lirc

Ora dovete caricare il modulo, se non sapete qual’è basta utilizzare un piccolo trucco: digitate – sudo modprobe lirc – e premete due volte il tasto tab. La shell vi presenterà tutti i possibili moduli che iniziano per lirc. Nel mio caso il modulo è lirc_imon, quindi il comando finale sarà

:~$ sudo modprobe lirc_imon

modifichiamo i permessi del device

:~$ sudo chmod 666 /dev/lircd

e proviamo a vedere se funziona:

:~$ sudo mode2 --raw

A questo punto digitando i tasti del telecomando dovrebbe apparire il codice della frequenza a terminale. Bene. Control+c per killare il processo nel terminale.

Purtroppo per noi ubuntiani le cose sono un pò più complesse e qui, devo dire, la prima volta che ci sono caduto ci ho perso un pò la testa … E si perchè al primo riavvio troveremo una bella sorpresa!!

Riavviate.

Ho detto RIAVVIATE !!!!!

Avete riavviato? Bene, possiamo proseguire …

Provate a ridare lo stesso comando di prima ed avrete una bella sorpresa:

:~$ sudo mode2 --raw
[sudo] password for sandro:
mode2: /dev/lirc is not a character device
mode2: use the -d option to specify the correct device

Il dispositivo è scomparso !!!

Proviamo un pò a vedere cosa è successo: la vostra ubuntu utilizza dei filesystem dal nome devfs (per i kernel più vecchi) e sysfs, per la gesione dei dispositivi e questi fanno in modo che il dispositivo /dev/lircd non possa più essere raggiungibile (non mi addentro nei particolari, anche perchè non li conosco). Allora il nostro driver è costretto a creare un nuovo dispositivo, che però non è più quello standard.

Provate ora a dare il comando:

:~$ sudo mode2 --raw -d /dev/lirc/0

oppure

:~$ sudo mode2 --raw -d /dev/lirc0

uno dei due dovrebbe funzionare. In buona sostanza dobbiamo indirizzare i nostri client (mode2 è un client per lirc) al giusto dispositivo con l’opzione -d.

Ora, con un terminale aperto che visualizza l’input del telecomando, aprite un altro terminale e digitate

sudo gedit /etc/lircd.conf

Avete appena aperto il file di configurazione di lirc, premete un pò di pulsanti del telecomando e verificate la corrispondenza dei codici con quelli presenti nel file. Qui sotto potete vedere un particolare del mio lircd.conf

lircconf

ed i codici ottenuti premendo in sequenza i primi tasti dell’elenco

mode2

Come potete vedere corrispondono (il primo codice della coppia è quello di pulsante premuto, il secondo è quello di pulsante rilasciato).

Se anche per voi corrispondono, bene, altrimenti avete sbagliato ad indicare il telecomando in fase di installazione, oppure non era proprio presente una configurazione predefinita per il vostro telecomando.

Potete provare a sbirciare nella cartella “remotes” dei vostri sorgenti. Qui sono presenti tutte le configurazioni pre-confezionate del driver. Se trovate quello giusto, (confrontate i codici come abbiamo fatto prima) con un

sudo cp <filegiusto> /etc/lircd.conf

risolvete tutto.

Un’altra soluzione è crearvi un file di configurazione da zero. Per far questo esiste un tool apposito: irrecord. Il suo funzionamento è molto semplice:

sudo irrecord -d /dev/lirc/0 /etc/lircd

Con l’opzione -d indicate il percorso del dispositivo (ricordate quello che abbiamo detto prima?) e poi date il percorso del file di configurazione senza l’estensione.

Le istruzioni che dà sono in inglese ma la sequenza è semplice. Premete enter per iniziare, digitate il nome che volete dare al pulsante, poi lo premete, così per tutti i pulsanti. Quando avete finito premete solo enter per uscire.

Lircd

Ora introduciamo lircd. Questo è il vero e proprio demone che farà il lavoro sporco, ovvero è un programma che dovrà

  • girare in background,
  • accorgersi che è stato premuto un pulsante, ed intercettarne il codice
  • leggere nel file /etc/lircd.conf a che pulsante corrisponde questo codice (in realtà questo file lo legge una volta sola quando viene avviato, ergo, se lo modifichiamo bisogna riavviare il demone.
  • leggere nel file “.lircrc” cosa deve fare quando viene premuto un determinato pulsante.

Da questo elenco possiamo osservare che ci mancano ancora un paio di punti: fare in modo che lircd si avvii automaticamente, creare un file “.lircrc” che gli dia istruzioni.

Avvio automatico di lircd

Per quanto riguarda il primo punto ci vengono incontro i sorgenti scaricati. E’ infatti presente una cartella che si chiama “contrib” dove sono stati inseriti alcuni file già pronti per le principali distribuzioni.

Prima di tutto verifichiamo cosa è già presente sul nostro sistema:

:~$ ls -la /etc/init.d/lir*
-rwxr-xr-x 1 root root 1470 2009-01-17 17:30 /etc/init.d/lirc

Per esempio il mio output dice che è già presente un file lirc (in quanto sto facendo tutto questo perchè ho ricompilato il kernel ed avevo già installato i driver in precedenza). Se avete installato lirc dal repository dovrebbe essere ugualmente presente). Se non è presente, apriamo un terminale nella cartella contrib e copiamo il file:

:~$ sudo cp lirc.debian /etc/init.d/lirc

ora il file c’è. Diamo il comando di aggiornamento:

:~$ sudo update-rc.d lirc defaults 20

Ora apriamo detto file

:~$ sudo gedit /etc/init.d/lirc

che dobbiamo verificare una cosa.  Intorno alle righe 14 e 38 è presente qualcosa del genere

echo -n "Starting lirc daemon: lircd"
start-stop-daemon --start --quiet --exec /usr/local/sbin/lircd --
...
...
echo -n "Starting lirc daemon: lircd"
start-stop-daemon --start --quiet --exec /usr/local/sbin/lircd --

accertatevi di modificarlo in questo modo:

echo -n "Starting lirc daemon: lircd"
start-stop-daemon --start --quiet --exec /usr/local/sbin/lircd -- --device=/dev/lirc/0
...
...
echo -n "Starting lirc daemon: lircd"
start-stop-daemon --start --quiet --exec /usr/local/sbin/lircd -- --device=/dev/lirc/0

dove –device=/dev/lirc/0 è l’istruzione che dà il percorso giusto del dispositivo (quello che abbiamo trovato prima, quindi adattatelo alla vostra situazione …).

Fatto questo salvate il file e riavviate il demone:

:~$ sudo /etc/init.d/lirc restart

Fate attenzione all’output, dovrebbe essere qualcosa del genere

:~$ sudo /etc/init.d/lirc restart
[sudo] password for sandro:
Stopping lirc daemon: lircmd lircd
Starting lirc daemon: lircd lircmd.

Se vi dà degli errori avete sbagliato qualcosa (probabilmente il percorso del dispositivo), se non ve ne dà, possiamo passare alla creazione e configurazione di “.lircrc”, in quanto il demone è attivo e funzionante!!

Ma questo lo faremo in questo articolo!

drivers, telecomando, ubuntu

  1. Nessun commento ancora...
  1. Nessun trackback ancora...