Driver Reverse-Engineer untuk Keyboard Backlit Berwarna-warni pada Laptop Clevo

13

Inilah situasi saya:

Saya baru-baru ini membeli Sager NP9170 (sama seperti Clevo P170EM) dan memiliki keyboard multi-warna, lampu latar. Di bawah Windows 7, Anda dapat meluncurkan aplikasi yang memungkinkan Anda untuk mengubah warna lampu latar ke beberapa warna (biru, hijau, merah, dll).

Saya ingin fungsi yang sama di Linux. Saya belum dapat menemukan perangkat lunak yang melakukan ini, jadi saya kira saya harus menulis sendiri. Saya seorang programmer berdasarkan perdagangan, tetapi saya belum melakukan banyak pemrograman tingkat rendah, dan saya pasti tidak pernah menulis driver perangkat, jadi saya bertanya-tanya apakah ada yang bisa menjawab dua pertanyaan ini:

1) Apakah ada perangkat lunak di luar sana yang melakukan hal semacam ini? Saya telah melihat dengan cukup teliti tetapi belum menemukan sesuatu yang dapat diterapkan.

2) Di mana saya akan mulai mencoba merekayasa balik hal semacam ini? Adakah artikel, tutorial, buku bermanfaat yang dapat membantu?

Dan hanya untuk memperjelas: Lampu latar sudah berfungsi, itu bukan masalahnya. Saya hanya ingin bisa mengubah warna lampu latar. Fungsi ini didukung oleh perangkat keras. Laptop datang dengan perangkat lunak windows yang melakukan ini dan saya ingin fungsi yang sama di Linux. Saya bersedia untuk menulis perangkat lunak ini sendiri, saya hanya ingin tahu cara terbaik untuk melakukannya.

Terima kasih!

PausJamal
sumber

Jawaban:

9

Ya, ternyata, orang lain yang menemukannya. Kata "Terima Kasih" yang sangat besar untuk " klystron34 " di forum notebookreview.com. Lihat utas forum untuk informasi lebih lanjut.

Catatan: Sejauh yang saya tahu, ini akan berfungsi untuk banyak / sebagian besar laptop berdasarkan stok Clevo P150EM dan P170EM. Ini secara pribadi diverifikasi oleh saya di Sager NP9170 di Ubuntu 12.04. Lanjutkan dengan risiko Anda sendiri. Saya tidak bertanggung jawab atas segala kerusakan yang mungkin Anda sebabkan melakukan ini, dan penafian internet standar lainnya. Lanjutkan dengan risiko Anda sendiri. Sekarang, ke hal-hal yang baik:

Pertama, Anda harus dapat mengompilasi modul kernel, jadi perbarui repositori Anda:

sudo apt-get update

Sekarang, instal git, tools build dan sumber kernel:

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

Sekarang buat direktori yang berfungsi. Saya lebih suka menggunakan folder "dev" yang terletak di direktori home saya:

cd ˜
mkdir dev
cd dev

Sekarang, unduh sumber untuk modul kernel:

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

Masuk ke direktori dengan kode sumber:

cd clevo-wmi-code

"Buat" modul kernel:

make

Anda sekarang harus memiliki file yang disebut clevo_wmi.ko

Sekarang, mari kita coba dan lihat apakah modul tersebut benar-benar berfungsi dengan memuat modul:

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

Jika berhasil, Anda sekarang harus memiliki direktori baru bernama:

/ sys / devices / platform / clevo_wmi / kbled

Ubah ke direktori itu:

cd /sys/devices/platform/clevo_wmi/kbled

Anda sekarang harus dapat mengubah warna bagian tengah keyboard Anda dengan menjalankan perintah berikut:

sudo su -c 'echo 100 > middle'

Bagian tengah keyboard Anda sekarang harus berwarna hijau. Ganti middledengan leftatau rightuntuk mengganti bagian keyboard yang sesuai. Berikut daftar kode warna:

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

Untuk menginstal modul kernel ini secara permanen, salin ke lokasi yang sama dengan modul kernel lainnya (CATATAN: Anda mungkin harus melakukan langkah ini dan langkah berikutnya setiap kali Anda mengubah kernel):

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

Selanjutnya, lakukan ini (saya pikir membangun kembali daftar modul kernel):

sudo depmod -a

Kemudian edit /etc/modulesfile Anda dan tambahkan baris ini ke akhir file:

clevo_wmi

Simpan perubahan Anda ke /etc/modules.

Sekarang, setiap kali Anda reboot, modul harus dimuat dan Anda kemudian dapat mengubah warna lampu latar pada keyboard Anda. Mencari tahu bagaimana mengubah warna saat reboot dan mengingat pengaturan warna terakhir Anda adalah latihan yang diserahkan kepada pembaca. Periksa docsdirektori di kode sumber untuk mendapatkan petunjuk tentang cara menggunakan fitur perubahan warna dinamis.

Terima kasih kepada pengembang yang telah bekerja keras untuk menulis modul kernel ini!

PausJamal
sumber
Saya senang: D Terima kasih. Akan lebih bagus jika suatu saat nanti dimasukkan dalam kernel. BTW: apakah ada cara standar untuk mengekspos ini ke UI, sehingga Unity atau WM lainnya dapat menggunakannya?
bcelary
1
Pada 2017-Des ada beberapa model Clevo bahwa pengemudi belum mendukung. Random_fade dan random_flicker berfungsi, tetapi pengaturan bagian keyboard tertentu untuk warna tertentu tidak berfungsi.
Mutant Bob
0

Bagaimana Anda mengakses fungsi seperti itu?

Ini mungkin dapat dicapai dengan beberapa skrip cerdas, dan fungsionalitas startup.

(Pada Windows Anda mungkin perlu menulis kode dalam model memori eksotis yang memungkinkan akses perangkat keras langsung, atau sebaliknya perlu menulis driver (dan API) untuk mendeteksi dan mengontrol perangkat keras.)


Bagaimana Anda memilih preferensi Anda?

Kemudian beberapa skrip dasar (atau skrip panggilan ikon) dapat memilih preferensi warna tertentu.

Jika Anda menggunakan Python, untuk GUI front-end, itu juga akan cukup sederhana.

david6
sumber
Terimakasih atas tanggapan Anda! Yang saya cari adalah: a) tautan ke beberapa perangkat lunak yang saya lewatkan yang sudah melakukannya. b) beberapa panduan tentang di mana harus mulai menentukan lebih banyak tentang keyboard.
PopeJamal
Anda perlu mengidentifikasi nomor bagian / merek untuk komponen keyboard ..
david6
0

Saya membuat skrip untuk mengubah warna menggunakan metode di atas oleh Paus. Anda dapat menemukannya di sini: pb aDWe9s6d (tidak yakin apakah pemformatan di sini akan berfungsi dengan benar sehingga lebih aman untuk menyalin dari sana)

#! /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
Nuh
sumber