Infos générales

Changement d'adresse du blog !!

Blog.Roozeec.fr
Mercredi 18 avril 2007
J'avais acheté il y a quelque temps une télécommande ATI pour pouvoir piloter mon PC. Je voulais à vrai dire voir un petit peu de quoi ca avait l'air.




Et àprès quelques manipulations et tests, cette télécommande est restée dans le fond de mon tiroir. Je l'ai retrouvé il y a quelques jour et j'ai donc voulu la tester sous Ubuntu. La version Ubuntu est la Edgy.

tout d'abord, voir comment Ubuntu réagi lorsque je branche le capteur HF sur un port USB. Pour celà je regarde les messages systèmes en tapant dmesg dans un terminal :

[17194778.044000] input: X10 Wireless Technology Inc USB Receiver as /class/input/input3
[17194778.044000] usbcore: registered new driver ati_remote
[17194778.044000] drivers/usb/input/ati_remote.c: Registered USB driver ATI/X10 RF USB Remote Control v. 2.2.1
[17194778.052000] drivers/usb/input/ati_remote.c: Weird data, len=1 ff 00 00 00 00 00 ...

Apparemment, c'est ok, elle est reconnue. Je double-vérifie en lancant la commande lsusb pour voir les connections sur les ports USB :
Bus 002 Device 001: ID 0000:0000 
Bus 001 Device 005: ID 0bc7:0004 X10 Wireless Technology, Inc. X10 Receiver
Bus 001 Device 003: ID 046d:0929 Logitech, Inc.
Bus 001 Device 004: ID 1532:0003 
Bus 001 Device 001: ID 0000:0000 

Egalement présente en tant que module X10. Donc tout va bien .... a priori...
Je lance maintenant un film avec mplayer et je m'apercois que beaucoup de touches ne fonctionne pas ou font pas vraiment ce qu'il faut.

donc, je surfe, je teste, je bidouille, eh oui .... pour en arriver à ce qui suit.

Il y a en fait 2 méthodes pour faire fonctionner la télécommande, soit par un module directement impléménté dans le kernel (ati_remote), soit par un programme externe : lirc.

C'est cette dernière méthode que je vais utiliser car grace à elle on a un contrôle total de la télécommande pour chaque application que l'on veut piloter.

Tout d'abord l'installation se fait sans problèmes particulier , un simple sudo apt-get install lirc et c'est parti.
Dépaquetage de lirc (à partir de .../lirc_0.8.1+cvs20070310-0ubuntu1~edgy1_i386.deb) ...
Paramétrage de lirc (0.8.1+cvs20070310-0ubuntu1~edgy1) ...
Setting up modutils file
##################################################
## LIRC IS NOT CONFIGURED                       ##
##                                              ##
## read /usr/share/doc/lirc/html/configure.html ##
##################################################
Starting lirc daemon:.

Un message indique que lirc n'est pas configuré. Normal. donc configurons tout celà.
Deux fichiers sont utilisés pour la configuration de la télécommande :
  • /etc/lirc/lircd.conf
  • /etc/lirc/hardware.conf
Fichier /etc/lirc/hardware.conf

Ce fichier est utilisé pour définir le driver que l'on va utiliser pour la télécommande, dans ce cas c'est : atiliusb

Le fichier ressemble à ca :

# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Try to load appropriate kernel modules
#LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="atilibusb"
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead
DEVICE=""
MODULES=""

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""


Fichier /etc/lirc/lircd.conf

Ce fichier est très important car c'est lui qui défini les codes des touches de la télécommande. Heureusement, il existe un programme qui permet d'enregistrer pour chaque touche les codes correspondant. C'est assez laborieux a faire quand même, mais bon, voici comment faire :

Tout d'abord il faut passer en mode root : sudo su

Le programme utilisé est le programme irrecord. Comme le dit le programme lui-même :
irrecord -  application for recording IR-codes for usage with lirc
En francais dans le texte : irrecord - programme pour enregister les codes infra-rouges avec lirc

La commande à lancer est donc : irrecord -H atilibusb atiremotewonder.conf

Note : si vous n'êtes pas en mode root vous risquez d'avoir le message d'erreur suivant :
irrecord: could not init hardware (lircd running ? --> close it, check permissions)


Bon, Allons-y pour la définition des touches (en gras les commentaires que j'ai rajoutés)  :
Press RETURN to continue.

Hold down an arbitrary button. Appuyer de facon continue sur un bouton"
................................................................................
Found gap length: 147959
Now enter the names for the buttons.

Please enter the name for the next button (press <ENTER> to finish recording)
MENU Definion de la touche MENU

Now hold down button "MENU" Appuyer sur le bouton adequat
Please enter the name for the next button (press <ENTER> to finish recording)

Et ainsi de suite
Quand c'est fini, appuyer sur ENTREE

Checking for toggle bit mask.
Please press an arbitrary button repeatedly as fast as possible.
Make sure you keep pressing the SAME button and that you DON'T HOLD
hthe button down!.
If you can't see any dots appear, then wait a bit between button presses.
.............................. Là, j'ai pas trop compris le but de la manip ....
Invalid toggle bit.
Successfully written config file.
Le fichier atiremotewonder.conf à donc été crée.

Maintenant et c'est très important, il faut copier ce fichier dans le répertoire /etc/lirc avec comme nom : lircd.conf

Commande à taper : sudo cp atiremotewonder.conf /etc/lirc/lircd.conf

Le fichier ressemble à ca :

begin remote

  name  atiremotewonder.conf
  bits           16
  eps            30
  aeps          100

  one             0     0
  zero            0     0
  pre_data_bits   8
  pre_data       0x14
  post_data_bits  16
  post_data      0x0
  gap          148030
  toggle_bit_mask 0x0
  min_repeat      3

      begin codes
          A                        0xC500
          .........
          VOLDOWN                  0xCE09
          ............
          CLOSE                    0x417C
          ............
      end codes

end remote

Vous pouvez le télécharger ici : /etc/lirc/lircd.conf

Maintenant testons tout ca !

Premièrement, relancer le démon lirc pour prendre en compte nos fichiers de configurations. Ceci se fait avec la commande : sudo dpkg-reconfigure lirc
sudo dpkg-reconfigure lirc
Password:
Stopping lirc daemon: lircmd lircd.
Starting lirc daemon: lircd.

Maintenant, lancons un programme qui permet d'afficher les touches appuyées : irw
A ce moment dès qu'une touche de la télécommandes est appuyé, son code et son nom apparait :
0000014df1a0000 03 UP atiremotewonder.conf
00000014df1a0000 04 UP atiremotewonder.conf
00000014e7220000 00 DOWN atiremotewonder.conf
00000014e7220000 01 DOWN atiremotewonder.conf
00000014e7220000 02 DOWN atiremotewonder.conf
00000014e7220000 03 DOWN atiremotewonder.conf
00000014e7220000 04 DOWN atiremotewonder.conf
00000014e41f0000 00 NEXT atiremotewonder.conf
00000014e41f0000 01 NEXT atiremotewonder.conf
00000014e41f0000 02 NEXT atiremotewonder.conf
Super, ca marche !

Configuration des bouton pour une application : mplayer

Lirc chargera (si il existe) le fichier qui se trouve sous votre répertoire personnel : ~/.lircrc

Ce fichier definit pour chaque application, le role de chaque touche. Par exemple :
begin
  button = volup
  prog = mplayer
  config = volume 10
  repeat = 5
end
Ce qu'il faut absolument, c'est que le nom du champ button soit présent également dans le fichier lircd.conf. C'est à dire que si j'écris : button = volumeup et que dans lirc.conf j'ai volup, ca ne marchera pas.

Voic un fichier pour mplayer : ~/lircrc.mplayer. A renommer en .lircrc.mplayer pour le cacher
A noter que le fichier ~/.lircrc supporte les inclusion de fichier, ce qui peut etre plus facile à ecrire et à maintenir . Comme par exemple : include ~/.lircrc.mplayer

Faire fonctionner tout ca au démarrage :

Ce qu'il faut tout simplement faire, c'est de supprimer le chargement du module ati_remote au démarrage. Ceci se fait dans le fichier :  /etc/modprobe.d/blacklist
Il suffit d'y rajouter (en mode root bien sur) les lignes suivantes :
#Ne pas charger le module ati_remote
blacklist ati_remote
Un petit test avec un film avec mplayer. Test rapide , augmentation/diminution du volume, pause, stop . tout fonctionne correctement. Génial !
Amusez vous bien !!
par Roozeec publié dans : Ubuntu
 
 
blog religion sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus