web-dev-qa-db-fra.com

Pilote de reverse engineering pour un clavier rétro-éclairé multicolore sur les ordinateurs portables Clevo

Voici ma situation:

J'ai récemment acheté un Sager NP917 (identique au Clevo P170EM) doté d'un clavier rétro-éclairé multicolore. Sous Windows 7, vous pouvez lancer une application qui vous permet de modifier la couleur du rétroéclairage en une poignée de couleurs (bleu, vert, rouge, etc.).

Je veux la même fonctionnalité sous Linux. Je n'ai pas été en mesure de trouver un logiciel qui fait cela, alors je suppose que je vais devoir l'écrire moi-même. Je suis programmeur de métier, mais je n'ai pas encore beaucoup fait de programmation de bas niveau et je n'ai certainement jamais écrit de pilote de périphérique. Je me demandais donc si quelqu'un pouvait répondre à ces deux questions:

1) Existe-t-il déjà un logiciel qui fait ce genre de chose? J'ai regardé assez attentivement mais je n'ai rien trouvé qui soit applicable.

2) Où pourrais-je commencer en essayant de faire de l’ingénierie inverse? Des articles utiles, des tutoriels, des livres qui pourraient aider?

Et juste pour clarifier: le rétro-éclairage fonctionne déjà, ce n'est pas le problème. Je veux juste pouvoir changer la couleur du rétro-éclairage. Cette fonctionnalité est prise en charge par le matériel. L'ordinateur portable est venu avec le logiciel Windows qui fait cela et je veux la même fonctionnalité sous Linux. Je suis prêt à écrire ce logiciel moi-même, je veux juste savoir la meilleure façon de s'y prendre.

Merci!

13
PopeJamal

Eh bien, il se trouve que quelqu'un d'autre l'a compris. Un énorme "Merci" à " klystron34 " dans les forums de notebookreview.com. Consultez le fil de discussion pour plus d'informations.

Remarque: pour autant que je sache, cela fonctionnera pour beaucoup/la plupart des ordinateurs portables basés sur le stock Clevo P150EM et le P170EM. Cela a été personnellement vérifié par moi sur un Sager NP9170 sur Ubuntu 12.04. Procédez à vos risques et périls. Je ne suis pas responsable des dommages que vous pourriez causer en faisant cela, ni de toute autre clause de non-responsabilité standard sur Internet. Procédez à vos risques et périls. Maintenant, sur les bonnes choses:

Tout d'abord, vous devez être capable de compiler un module du noyau. Mettez à jour vos référentiels:

Sudo apt-get update

Maintenant, installez git, les outils de compilation et la source du noyau:

Sudo apt-get install git build-essential linux-source

Maintenant, créez un répertoire de travail. Je préfère utiliser un dossier "dev" situé dans mon répertoire personnel:

cd ˜
mkdir dev
cd dev

Maintenant, téléchargez le code source du module du noyau:

git clone git://git.code.sf.net/p/clevo-wmi/code clevo-wmi-code

Allez dans le répertoire avec le code source:

cd clevo-wmi-code

"Make" le module du noyau:

make

Vous devriez maintenant avoir un fichier appelé clevo_wmi.ko

Maintenant, testons et voyons si le module fonctionne réellement en le chargeant:

Sudo insmod /home/<your-username-here>/dev/clevo-wmi-code/clevo_wmi.ko

Si cela a fonctionné, vous devriez maintenant avoir un nouveau répertoire appelé:

/ sys/devices/platform/clevo_wmi/kbled

Passez à ce répertoire:

cd /sys/devices/platform/clevo_wmi/kbled

Vous devriez maintenant pouvoir changer la couleur de la partie centrale de votre clavier en exécutant la commande suivante:

Sudo su -c 'echo 100 > middle'

La partie centrale de votre clavier devrait maintenant être verte. Remplacez middle par left ou right pour modifier la section correspondante du clavier. Voici une liste des codes de couleur:

GRB (Green-Red-Blue)
000 - Off
111 - White
100 - Green
010 - Red
001 - Blue
110 - Yellow
011 - Purple
101 - Aqua

Pour installer ce module de noyau de manière permanente, copiez-le au même emplacement que le reste de vos modules de noyau (REMARQUE: vous devrez probablement effectuer cette étape et l'étape suivante chaque fois que vous modifierez votre noyau):

Sudo cp ~/dev/clevo-wmi-code/clevo_wmi.ko /lib/modules/`uname -r`/kernel/drivers/platform/x86/

Ensuite, faites ceci (je pense reconstruire la liste des modules du noyau):

Sudo depmod -a

Editez ensuite votre fichier /etc/modules et ajoutez cette ligne à la fin du fichier:

clevo_wmi

Enregistrez vos modifications dans /etc/modules.

Maintenant, chaque fois que vous redémarrez, le module devrait être chargé et vous pourrez alors changer la couleur du rétro-éclairage de votre clavier. Comprendre comment le changer de couleur au redémarrage et se souvenir de votre dernier réglage de couleur est un exercice laissé au lecteur. Consultez le répertoire docs dans le code source pour obtenir des instructions sur l'utilisation des fonctionnalités de changement de couleur dynamique.

Merci aux développeurs qui ont travaillé dur pour écrire ce module du noyau!

9
PopeJamal

Il existe déjà un pilote pour toutes les fonctions de l’ensemble du clavier ET de la touche flymode! TUXEDO Computers a développé ce pilote et l’offre à travers son forum de support: http://www.linux-onlineshop.de/forum/index.php?page=Thread&threadID=26

S'amuser :)

0
Tobias

Comment accédez-vous à cette fonctionnalité?

Cela peut probablement être réalisé par des scripts intelligents et des fonctionnalités de démarrage.

(Sous Windows, vous devrez probablement écrire du code dans un modèle de mémoire exotique permettant un accès matériel direct, ou plutôt écrire un pilote (et une API) pour détecter et contrôler le matériel.)


Comment sélectionnez-vous vos préférences?

Ensuite, certains scripts de base (ou scripts d’appel d’icône) peuvent sélectionner une préférence de couleur spécifique.

Si vous utilisiez Python, pour une interface graphique front-end, ce serait aussi assez simple.

0
david6

J'ai créé un script pour changer les couleurs en utilisant la méthode ci-dessus de Pope. Vous pouvez le trouver ici: pb aDWe9s6d (je ne sais pas si le formatage ici fonctionnera correctement, donc il est plus sûr de copier à partir de là)

#! /bin/bash
#changes keyboard colors
#Noah B.

#Prompt for root
[ "$UID" -eq 0 ] || exec Sudo bash "$0" "$@"

off=000
white=111
green=100
red=010
blue=001
yellow=110
purple=011
aqua=101

left=$1
l_code=000
middle=$2
m_code=000
right=$3
r_code=000

#LEFT SIDE

if [ -z "$left" ]
then 
    echo "Enter desired color for the left side:
    (off/white/green/red/blue/yellow/purple/aqua)"
read -p "Color choice: " left
fi

eval "l_code=\$$left"

echo $l_code > /sys/devices/platform/clevo_wmi/kbled/left

#MIDDLE

if [ -z "$middle" ]
then
    echo "Enter desired color for the middle:
    (off/white/green/red/blue/yellow/purple/aqua)"
read -p "Color choice: " middle
fi

eval "m_code=\$$middle"

echo $m_code > /sys/devices/platform/clevo_wmi/kbled/middle

#RIGHT SIDE

if [ -z "$right" ]
then
    echo "Enter desired color for the right side:
    (off/white/green/red/blue/yellow/purple/aqua)"
read -p "Color choice: " right
fi

eval "r_code=\$$right"

echo $r_code > /sys/devices/platform/clevo_wmi/kbled/right
0
Noah