Controlador de ingeniería inversa para teclado retroiluminado multicolor en computadoras portátiles Clevo

13

Aquí está mi situación:

Recientemente compré un Sager NP9170 (igual que el Clevo P170EM) y tiene un teclado retroiluminado multicolor. En Windows 7, puede iniciar una aplicación que le permite cambiar el color de la retroiluminación a cualquiera de un puñado de colores (azul, verde, rojo, etc.).

Quiero esa misma funcionalidad en Linux. No he podido encontrar ningún software que haga esto, así que supongo que tendré que escribirlo yo mismo. Soy un programador de profesión, pero no he hecho mucha programación de bajo nivel, y ciertamente nunca he escrito un controlador de dispositivo, por lo que me preguntaba si alguien podría responder estas dos preguntas:

1) ¿Existe algún software que haga este tipo de cosas? He examinado bastante a fondo, pero no he encontrado nada aplicable.

2) ¿Dónde comenzaría tratando de realizar ingeniería inversa en este tipo de cosas? ¿Algún artículo útil, tutoriales, libros que puedan ayudar?

Y solo para aclarar: la retroiluminación ya funciona, ese no es el problema. Solo quiero poder cambiar el color de la retroiluminación. Esta funcionalidad es compatible con el hardware. La computadora portátil viene con el software de Windows que hace esto y quiero la misma funcionalidad en Linux. Estoy dispuesto a escribir este software yo mismo, solo quiero saber la mejor manera de hacerlo.

¡Gracias!

Papa jamal
fuente

Respuestas:

9

Bueno, resulta que alguien más lo descubrió. Un enorme "Gracias" a " klystron34 " en los foros de notebookreview.com. Mira el hilo del foro para más información.

Nota: Hasta donde yo sé, esto funcionará para muchas / la mayoría de las computadoras portátiles basadas en el stock Clevo P150EM y el P170EM. Esto fue verificado personalmente por mí en un Sager NP9170 en Ubuntu 12.04. Proceda bajo su propio riesgo. No soy responsable de ningún daño que pueda causar al hacer esto, y de cualquier otro descargo de responsabilidad estándar de Internet. Proceda bajo su propio riesgo. Ahora, sobre lo bueno:

Primero, necesita poder compilar un módulo de kernel, así que actualice sus repositorios:

sudo apt-get update

Ahora, instale git, las herramientas de compilación y la fuente del núcleo:

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

Ahora cree un directorio de trabajo. Prefiero usar una carpeta "dev" ubicada en mi directorio de inicio:

cd ˜
mkdir dev
cd dev

Ahora, descargue la fuente del módulo del núcleo:

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

Entra en el directorio con el código fuente:

cd clevo-wmi-code

"Hacer" el módulo del núcleo:

make

Ahora debería tener un archivo llamado clevo_wmi.ko

Ahora, probemos y veamos si el módulo realmente funciona al cargar el módulo:

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

Si funcionó, ahora debería tener un nuevo directorio llamado:

/ sys / devices / platform / clevo_wmi / kbled

Cambie a ese directorio:

cd /sys/devices/platform/clevo_wmi/kbled

Ahora debería poder cambiar el color de la sección central de su teclado ejecutando el siguiente comando:

sudo su -c 'echo 100 > middle'

La sección central de su teclado ahora debería ser verde. Reemplace middlecon lefto rightpara cambiar la sección correspondiente del teclado. Aquí hay una lista de los códigos de color:

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

Para instalar este módulo del kernel permanentemente, cópielo en la misma ubicación que el resto de los módulos del kernel (NOTA: probablemente tendrá que realizar este paso y el siguiente cada vez que cambie el kernel):

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

A continuación, haga esto (creo que reconstruye la lista de módulos del núcleo):

sudo depmod -a

Luego edite su /etc/modulesarchivo y agregue esta línea al final del archivo:

clevo_wmi

Guarde los cambios /etc/modules.

Ahora, cada vez que reinicie, el módulo debe cargarse y luego puede cambiar el color de la luz de fondo de su teclado. Descubrir cómo hacer que cambie de color al reiniciar y recordar su última configuración de color es un ejercicio que le queda al lector. Consulte el docsdirectorio en el código fuente para obtener instrucciones sobre cómo usar las funciones dinámicas de cambio de color.

¡Gracias de nuevo a los desarrolladores que trabajaron duro para escribir este módulo del núcleo!

Papa jamal
fuente
Estoy encantado: D Gracias. Sería genial si algún día se incluyera en el núcleo. Por cierto: ¿hay alguna forma estándar de exponer esto a la interfaz de usuario, para que Unity u otro WM puedan usarlo?
porcelana
1
A partir de 2017-diciembre, hay algunos modelos de Clevo que el controlador aún no admite. Random_fade y random_flicker funcionan, pero configurar ciertas secciones del teclado con colores específicos no funciona.
Bob mutante
0

¿Cómo se accede a dicha funcionalidad?

Probablemente esto se pueda lograr mediante algunas secuencias de comandos inteligentes y la funcionalidad de inicio.

(En Windows, es probable que necesite escribir código en un modelo de memoria exótico que permita el acceso directo al hardware, o en su lugar necesite escribir un controlador (y API) para detectar y controlar el hardware).


¿Cómo seleccionas tus preferencias?

Luego, algunos scripts básicos (o scripts de llamadas de íconos) podrían seleccionar una preferencia de color específica.

Si usó Python, para una interfaz gráfica de usuario frontal, también sería bastante simple.

david6
fuente
¡Gracias por su respuesta! Lo que estoy buscando es: a) un enlace a algún software que me perdí y que ya hace esto. b) alguna guía sobre dónde comenzar a determinar más sobre el teclado.
PopeJamal
Echa un vistazo a: ubuntuforums.org/showthread.php?t=1998969
david6
Es necesario identificar el número de pieza / marca para el componente de teclado ..
david6
0

Creé un script para cambiar los colores usando el método anterior de Pope. Puede encontrarlo aquí: pb aDWe9s6d (no estoy seguro si el formato aquí funcionará de manera más segura para copiar desde allí)

#! /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
Noé
fuente