Reverse-Engineer-Treiber für mehrfarbige Tastatur mit Hintergrundbeleuchtung auf Clevo-Laptops

13

Hier ist meine Situation:

Ich habe kürzlich einen Sager NP9170 (wie den Clevo P170EM) gekauft und er verfügt über eine mehrfarbige Tastatur mit Hintergrundbeleuchtung. Unter Windows 7 können Sie eine App starten , mit der Sie die Farbe der Hintergrundbeleuchtung in eine von wenigen Farben ändern können (blau, grün, rot usw.).

Ich möchte die gleiche Funktionalität unter Linux. Ich konnte keine Software finden, die dies tut, also muss ich es wohl selbst schreiben. Ich bin von Beruf Programmierer, aber ich habe nicht viel auf niedriger Ebene programmiert, und ich habe auf jeden Fall nie einen Gerätetreiber geschrieben. Deshalb habe ich mich gefragt, ob jemand diese beiden Fragen beantworten könnte:

1) Gibt es bereits eine Software, die so etwas macht? Ich habe ziemlich gründlich nachgesehen, aber nichts Passendes gefunden.

2) Wo würde ich anfangen, um zu versuchen, so etwas zurückzuentwickeln? Irgendwelche nützlichen Artikel, Tutorials, Bücher, die helfen könnten?

Und nur zur Verdeutlichung: Die Hintergrundbeleuchtung funktioniert bereits, das ist nicht das Problem. Ich möchte nur die Farbe der Hintergrundbeleuchtung ändern können. Diese Funktionalität wird von der Hardware unterstützt. Der Laptop wurde mit einer Windows-Software geliefert, die dies ermöglicht, und ich möchte die gleiche Funktionalität unter Linux. Ich bin bereit, diese Software selbst zu schreiben. Ich möchte nur wissen, wie ich am besten vorgehen kann.

Vielen Dank!

Papst Jamal
quelle

Antworten:

9

Nun, wie sich herausstellt, hat es tatsächlich jemand anderes herausgefunden. Ein großes Dankeschön an " klystron34 " in den notebookreview.com-Foren. Weitere Informationen finden Sie im Forenthread .

Hinweis: Soweit ich weiß, funktioniert dies für viele / die meisten Laptops, die auf den Serien Clevo P150EM und P170EM basieren. Dies wurde von mir persönlich auf einem Sager NP9170 unter Ubuntu 12.04 verifiziert. Fahren Sie auf eigenes Risiko fort. Ich bin nicht verantwortlich für Schäden, die dadurch verursacht werden könnten, und für andere Standard-Internet-Haftungsausschlüsse. Fahren Sie auf eigenes Risiko fort. Nun zu den guten Sachen:

Zunächst müssen Sie in der Lage sein, ein Kernelmodul zu kompilieren. Aktualisieren Sie daher Ihre Repositorys:

sudo apt-get update

Installieren Sie nun git, die Build-Tools und den Kernel-Quellcode:

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

Erstellen Sie nun ein Arbeitsverzeichnis. Ich bevorzuge die Verwendung eines "dev" -Ordners in meinem Homeverzeichnis:

cd ˜
mkdir dev
cd dev

Laden Sie jetzt den Quellcode für das Kernelmodul herunter:

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

Gehen Sie in das Verzeichnis mit dem Quellcode:

cd clevo-wmi-code

Kernelmodul "machen":

make

Sie sollten jetzt eine Datei mit dem Namen haben clevo_wmi.ko

Testen wir nun, ob das Modul tatsächlich funktioniert, indem wir das Modul laden:

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

Wenn es funktioniert hat, sollten Sie jetzt ein neues Verzeichnis haben:

/ sys / devices / platform / clevo_wmi / kbled

Wechseln Sie in dieses Verzeichnis:

cd /sys/devices/platform/clevo_wmi/kbled

Sie sollten nun in der Lage sein, die Farbe des mittleren Bereichs Ihrer Tastatur zu ändern, indem Sie den folgenden Befehl ausführen:

sudo su -c 'echo 100 > middle'

Der mittlere Bereich Ihrer Tastatur sollte jetzt grün sein. Ersetzen Sie middledurch leftoder right, um den entsprechenden Tastaturbereich zu ändern. Hier ist eine Liste der Farbcodes:

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

Um dieses Kernel-Modul dauerhaft zu installieren, kopieren Sie es an den gleichen Speicherort wie die anderen Kernel-Module.

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

Führen Sie als Nächstes Folgendes aus (ich denke, die Liste der Kernelmodule wird neu erstellt):

sudo depmod -a

Bearbeiten Sie dann Ihre /etc/modulesDatei und fügen Sie diese Zeile am Ende der Datei hinzu:

clevo_wmi

Speichern Sie Ihre Änderungen an /etc/modules.

Nach jedem Neustart sollte nun das Modul geladen sein und Sie können die Farbe der Hintergrundbeleuchtung auf Ihrer Tastatur ändern. Es ist eine Aufgabe des Lesers, herauszufinden, wie Sie die Farben beim Neustart ändern und sich an Ihre letzte Farbeinstellung erinnern können. Im docsVerzeichnis im Quellcode finden Sie Anweisungen zur Verwendung der dynamischen Farbänderungsfunktionen.

Nochmals vielen Dank an die Entwickler, die hart daran gearbeitet haben, dieses Kernel-Modul zu schreiben!

Papst Jamal
quelle
Ich freue mich: D Danke. Wäre toll, wenn es eines Tages in den Kernel aufgenommen würde. Übrigens: Gibt es Standardmethoden, um dies der Benutzeroberfläche zugänglich zu machen, damit Unity oder ein anderes WM es verwenden kann?
Bcelary
1
Ab 2017-Dezember gibt es einige Clevo-Modelle, die der Treiber noch nicht unterstützt. Random_Fade und Random_Flicker funktionieren, aber das Festlegen bestimmter Tastaturbereiche auf bestimmte Farben funktioniert nicht.
Mutant Bob
0

Wie greifen Sie auf solche Funktionen zu?

Dies kann wahrscheinlich durch einige clevere Skript- und Startfunktionen erreicht werden.

(In Windows müssten Sie wahrscheinlich Code in ein exotisches Speichermodell schreiben, das den direkten Hardwarezugriff ermöglicht, oder stattdessen einen Treiber (und eine API) schreiben, um die Hardware zu erkennen und zu steuern.)


Wie wählst du deine Vorlieben aus?

Dann könnten einige grundlegende Skripte (oder Skripte zum Aufrufen von Symbolen) eine bestimmte Farbpräferenz auswählen.

Wenn Sie Python für eine Front-End-GUI verwenden würden, wäre dies ebenfalls recht einfach.

david6
quelle
Vielen Dank für Ihre Antwort! Was ich suche, ist entweder: a) ein Link zu einer Software, die ich vermisst habe und die dies bereits tut. b) eine Anleitung, wo Sie anfangen sollen, um mehr über die Tastatur zu erfahren.
PopeJamal
PDF ( Quellmodell
david6
Sie müssen die
Teilenummer
0

Ich habe ein Skript zum Ändern der Farben mit der obigen Methode von Pope erstellt. Sie finden es hier: pb aDWe9s6d (nicht sicher, ob die Formatierung hier richtig funktioniert, so dass Sie sicherer von dort kopieren können)

#! /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
Noah
quelle