Hotkeys pour portables VAIO sous ubuntu

Sonypi est un bout de code destiné aux portables VAIO pour contrôler certains périphériques. Il permet entre autres de contrôler la luminosité de votre écran, et de programmer les touches de fonctions, et ainsi de contrôler le son ou la luminosité comme vous le feriez sous windows.
La mauvaise nouvelle étant que les portables de la gamme VAIO FS n’ont pas un tel pilote installé par défaut sous Ubuntu, ce qui veut dire que sonypi ne marche pas avec les modèles FS.
Toutefois, le créateur de sonypi a écrit un petit driver (sous licence GPL) qui utilise les interfaces ACPI permettant de changer le niveau de luminosité. Ce petit drivers appelé sony_acpi fonctionne parfaitement, et nous donne tout le confort pour les réglages via les raccourcis claviers.

Il faut cependant faire quelques commandes avant de pouvoir utiliser ce drivers mais rien de bien compliqué.

important Attention : Les commandes décrites dans ce tutorial peuvent avoir des conséquences importantes sur le fonctionnement de votre système. Il est recommandé de faire une sauvegarde préalable de votre machine ou si vous n’êtes pas très sûre, de vous abstenir d’ effectuer ces opérations. Les manipulations décrites dans ce document engagent votre responsabilité, si elles devaient endommager ou occasionner des pertes de données.

Remarques préalables :
Ces tests ont été effectués sur un portables VAIO VGN-FS215S avec Ubuntu 7.10 Gutsy Gibbon
D’autres utilisateurs montrent qu’il fonctionne avec les portables VAIO FSN-660, FS-215E, VNG-FS115B
Vérifiez que le compilateur et les librairies du noyau sont bien installés sur votre machine, sinon exécutez les commandes suivantes dans une console:

$sudo apt-get install gcc gcc-3.4 linux-headers-`uname -r`

Ensuite, telechargez le module sony_acpi ici et décompressez-le :

$ tar xzvf sony_acpi.tar.gz

Compiler le fichier sony_acpi.c et déplacez-le sous le répertoire des modules:

$ cd sony_acpi
$ make
$ sudo cp sony_acpi.ko /lib/modules/`uname -r`/kernel/drivers/acpi/

Editez le fichier /etc/modules et ajoutez sony_acpi pour que le module soit lancé à chaque démarrage de la machine.

$ sudo gedit /etc/modules

et ajoutez le mot sony_acpi à la fin du fichier.

A partir de là, vous pouvez commencer à tester le nouveau module en le chargeant:

$ sudo modprobe sony_acpi

Pour voir si la gestion de la luminosité est bien activée, faites :

$ ls /proc/acpi/sony/

Et vous devriez voir apparaître des fichiers dont l’un d’eux est nommé brightness
Effectuez ces commandes en root (à l’aide de la commande sudo -s dans une console à part) pour tester la luminosité:

# echo "1" > /proc/acpi/sony/brightness 

pour avoir la luminosité au minimum

# echo "8" > /proc/acpi/sony/brightness 

pour l’avoir au maximum

Cependant, il est clair qu’il n’est pas confortable d’effectuer les commandes dans une console, sachant que l’on veut utiliser les touches de raccourcis pour le faire.
D’où l’intérêt du petit programme suivant qui va se charger de mapper les touches de fonctions afin d’effectuer les commandes vues ci-dessus à votre place, et tout cela dans un processus séparé et transparent qui sera lancé au démarrage de la machine.
Telechargez, compilez et déplacez le fichier sonyfn.c vers votre repertoire /usr/sbin à l’aide des commandes suivantes.

$ gcc sonyfn.c -o sonyfn
$ sudo mv sonyfn /usr/sbin

Enfin, modifiez le fichier bootmisc.sh pour que le script sonyfn soit executé à chaque démarrage :

$ sudo gedit /etc/init.d/bootmisc.sh

Ajoutez la ligne sonyfn & au début du fichier aprés la ligne : do_start () {
Ce qui devrait ressembler à celà :

...
do_start () {
#fnkey management for VAIO laptop sonyfn &
...

Maintenant rebootez et testez, l’appuie des touches de raccourcis Fn+F2, F3,… devrait vous permettre de modifier luminosité, son, etc..

Merci à Thomas et Ricardo pour leurs aides et leurs excellents « Howto » pour les portables VAIO:
http://users.skynet.be/thomasvst/linux-on-laptop/
http://web.tagus.ist.utl.pt/~ricardo.cruz/…

22 réflexions au sujet de « Hotkeys pour portables VAIO sous ubuntu »

  1. Bon, j’ai finalement
    SonyFN loaded
    Error opening /proc/acpi/sony/fnkey: No such file or directory
    quand je lance sonyfn.

    Et rien qui ne marche avec les touches. 🙁

    C’était Nicolas en test live.

  2. Salut Nicolas,

    Et merci pour tes remarques, je vais les prendre en compte car j’ai écrit ce tuto en cours de test et des « boulettes » se sont effectivement glissées.
    Pour le « Error opening /proc/acpi/sony/fnkey: No such file or directory », fait un ls /proc/acpi/sony/, tu devrais voir apparaître 3 fichiers si tu as fait le tuto jusqu’à la fin, qui sont:
    brightness
    brightness_default
    fnkey
    Si tu n’as pas ce dernier fichier, refais la deuxième partie du tuto concernant la compilation de sonyfn.c, et colle le compte-rendu de ce que te dit la compilation suite à :
    gcc sonyfn.c -o sonyfn
    Je te rassure, j’ai eu aussi des pbs suite à cette absence du fichier fnkey lors de précédents essais. courage, ça devrait marcher 😉

  3. Je n’ai que les deux premiers fichiers (brightness et brightness_default).

    Au « gcc sonyfn.c -o sonyfn », je n’ai rien dans la console, simplement une nouvelle ligne de prompt (et le fichier sonyfn qui est créé dans mon dossier perso).

  4. Bonjour, j’utilise la dernière version d’ubuntu
    qd je lance gcc sonyfn.c -o sonyfn, j’ai les messages d’erreur suivants :
    sonyfn.c:1:19: erreur: stdio.h : Aucun fichier ou répertoire de ce type
    sonyfn.c:2:20: erreur: stdlib.h : Aucun fichier ou répertoire de ce type
    sonyfn.c:3:19: erreur: errno.h : Aucun fichier ou répertoire de ce type……
    merci pour votre aide

  5. @Nicolas : essaye d’effacer tous les fichiers avec l’extension « o » dans le directory où tu compiles avec rm *.o, et retente la compilation en mode verbose (-v):
    gcc -v sonyfn.c -o sonyfn
    pour avoir un peu plus d’informations

    @flo: as-tu bien installé les linux-hearders à l’aide de la commande:
    sudo apt-get install gcc gcc-3.4 linux-headers-`uname -r`
    attention au caractère « ` », c’est celui que tu as sur la touche « è » ou « 7 » du clavier alphanumérique du clavier azerty.
    sinon, va sous synaptic et recherche le mot « linux-headers » et installe la version des headers disponible pour la version du noyau linux que tu utilises. Pour connaitre cette version, dans une fenetre terminal, tape:
    uname -r

  6. Je suis passé à Hardy entre temps. Je ne sais pas si ça pose problème :

    nicolas@ubuntu-nicolas:~$ sudo modprobe sony_acpi [sudo] password for nicolas: FATAL: Module sony_acpi not found.

    Alors que tout est bon avant, ordi relancé, /etc/modules édité et sony_acpi.ko qui est bien dans /lib/modules/2.6.24-16-generic/kernel/drivers/acpi/

  7. Ça va mieux au modprobe, mais plus rien quand je liste ce que contient /proc/acpi/sony/. J’abandonne, je m’y repencherais peut-être une autre fois.

  8. En effet, même problème pour moi depuis mon passage sous hardy, promis, dés que j’ai un peu de temps, je retravail et recompile tout afin d’approfondir et espère vous donner une solution rapidement 😉 …

  9. Salut,
    Je suis sous Hardy Heron et j’ai les mêmes problèmes. En listant les différents modules, je me suis rendu compte qu’un module sony-laptop était présent… Est-ce le problème?

  10. Re Salut, En fait pour que ca marche sous Hardy (en tout cas chez moi, sony VGN-FS485B), il faut d’abord arrêter les modules sony-laptop et sonypi, puis lancer sony_acpi et le programme sonyfn.
    Les touches « muet », « Son+ », « Son-« , « Luminosité+ », « Luminosité- » marchent!

  11. @Jean-Christophe : merci pour ces infos, ça nous aidera car j’ai encore pas eu le temps de me pencher à nouveau sur le pb sous hardy, mais dés que j’ai un moment, je mets à jour le billet.

  12. Pour regler le probleme de :
    FATAL: Module sony_acpi not found.

    executer la commande suivante:
    $ sudo depmod -a

    maintenant refaite la commande:

    $ sudo modprobe sony_acpi

    et ca marche.

  13. Bonsoir,

    Ce tuto semble très prometteur mais j’en suis au meme point que Payman :
    aucun fichier dans /proc/acpi/sony !!!

    Payman as-tu résolu le problème ?? Ou quelqu’un d’autre a-t-il une réponse ?

    Merci !!

  14. Bonjour,

    il semble que sony_acpi ne soit plus maintenu : la compilation échoue sous jaunty et karmic.

    Il faut de préférence utiliser le module chargé par défaut : sony-laptop.
    Après quelques modifs mineures dans sonyfn.c, ça marche !!

    remplacer : /proc/acpi/sony/fnkey par /sys/devices/platform/sony-laptop/fnkey
    remplacer : /proc/acpi/sony/brightness par /sys/class/backlight/sony/brightness

    Les fonctions mute, vol_up, vol_down, lum_up, lum_down sont OK sur un VGN-FS515H.

    Reste que les fonctions OSD ne sont pas utilisées avec cette méthode, tant pis…

  15. Bonjour,

    J’ai essayé d’exécuter les commandes fournies sur mon Vaio VGN-FS215S mais sans résultat :

    A l’utilisation de la commande : $sudo apt-get install gcc gcc-3.4 linux-headers-`uname -r` j’ai le message suivant

    Lecture des listes de paquets... Fait
    Construction de l'arbre des dépendances
    Lecture des informations d'état... Fait
    E: Impossible de trouver le paquet gcc-3.4
    E: Impossible de trouver de paquet correspondant à l'expression rationnelle « gcc-3.4 »

    J'ai remplacé la version de gcc par la version 4.6 (version installée chez moi) :
    Lecture des listes de paquets... Fait
    Construction de l'arbre des dépendances
    Lecture des informations d'état... Fait
    gcc est déjà la plus récente version disponible.
    gcc-4.6 est déjà la plus récente version disponible.
    linux-headers-3.8.0-36-generic est déjà la plus récente version disponible.
    0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

    Après le téléchargement, extraction du package et déplacement dans le répertoire sony_ j’ai tapé la commande make :

    make -C /lib/modules/3.8.0-36-generic/build SUBDIRS=/home/themid/Téléchargements/sony_acpi modules
    make[1]: entrant dans le répertoire « /usr/src/linux-headers-3.8.0-36-generic »
    CC [M] /home/themid/Téléchargements/sony_acpi/sony_acpi.o
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c:55:2: attention : initialization from incompatible pointer type [enabled by default]
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c:55:2: attention : (near initialization for ‘sony_acpi_driver.ids’) [enabled by default]
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c: In function ‘sony_walk_callback’:
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c:258:46: erreur: déréférencement d'un pointeur de type incomplet
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c:260:55: erreur: déréférencement d'un pointeur de type incomplet
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c:261:22: erreur: déréférencement d'un pointeur de type incomplet
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c: In function ‘sony_acpi_add’:
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c:274:27: erreur: lvalue required as left operand of assignment
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c:279:11: erreur: too few arguments to function ‘acpi_walk_namespace’
    include/acpi/acpixf.h:202:1: note: declared here
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c:324:13: erreur: ‘struct proc_dir_entry’ has no member named ‘owner’
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c: In function ‘sony_acpi_init’:
    /home/themid/Téléchargements/sony_acpi/sony_acpi.c:379:15: erreur: ‘struct proc_dir_entry’ has no member named ‘owner’
    make[2]: *** [/home/themid/Téléchargements/sony_acpi/sony_acpi.o] Erreur 1
    make[1]: *** [_module_/home/themid/Téléchargements/sony_acpi] Erreur 2
    make[1]: quittant le répertoire « /usr/src/linux-headers-3.8.0-36-generic »
    make: *** [default] Erreur 2

    Quelqu’un saurait m’indiquer comme résoudre l’erreur ?
    pour info, résultat de la commande uname -a :
    Linux OCELOT 3.8.0-36-generic #52~precise1-Ubuntu SMP Mon Feb 3 21:56:56 UTC 2014 i686 i686 i386 GNU/Linux
    Merci par avance.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *