Cara mengatasi masalah baterai laptop Toshiba yang tidak terdeteksi dengan modifikasi kernel


OS : Ubuntu, Centos, BackTrack Linux


Masalah: Tidak mendeteksi keberadaan battery sehingga statusnya tidak ada, walau ditambah beberpa package atau software tambahan, yang namanya juga dianggap ngak ada batre, :),,,

mengapa bisa begitu?

Penyebab masalah adalah karena Toshiba termasuk dua set data boot yang memberitahu OS hardware apa yang ada dalam mesin. Windows membaca dengan benar sedangkan Linux tidak. Kita akan perlu untuk membangun kernel kita sendiri (compile sendiri) untuk membuat hal ini terjadi. Kita akan perlu untuk mengambil DSDT (Sistem Tabel Deskripsi Differentiated) dari mesin, dimodifikasi ASL, dan baru AML DSDT dapat dikompilasi. Bagian di bawah ini menunjukkan cara untuk memberitahu Linux untuk menggunakan ini DSDT dimodifikasi bukan versi yang datang dengan BIOS.

Ok, ini dia langkah-langkahnya,,,,!!!

buka terminal, dan jalankan perintah
Code:
sudo cat /sys/firmware/acpi/tables/DSDT > DSDT.dat
sebelumnya instal dulu IASL
Kutip:
sudo apt-get install iasl


kita bongkar filenya agar bisa diedit

Kutip:

iasl -d DSDT.dat


setelah menjalankan perintah diatas, maka akan membuat file DSDT.dsl

dan buka dengan gedit, letaknya di Home Directory anda

cari line OperationRegion (EMEM, SystemMemory, 0xFF808001, 0xFF)

dan ganti menjadi OperationRegion (EMEM, EmbeddedControl, 0×00, 0xFF)

ingat menggantinya jangan copy paste, harus diketik sendiri

kita build deh pake perintah:

Code:
iasl -tc DSDT.dsl


lalu lahirlah file bernama DSDT.hex (nah ini yg bakal jadi bumbu utama)

mungkin nanti akan menemukan 2 buah error saat bulild file DSDT.dsl, tapi jangan khawatir, bisa diakalin kok

caranya:

baca keterangan errornya, disitu ada petunjuk di line keberapa letak masalahnya

misalnya seperti ini :

Code:
DSDT.dsl  [COLOR="Red"]2662[/COLOR]:                     0x00000000,         // Length
Error    4122 -                              ^ Invalid combination of Length and Min/Max fixed flags

DSDT.dsl  [COLOR="Red"]2669[/COLOR]:                     0x00000000,         // Length
Error    4122 -                              ^ Invalid combination of Length and Min/Max fixed flags

ubah menjadi :

Code:
0×00000000,         // Granularity
0×00000000,         // Range Minimum
0xFEAFFFFF,         // Range Maximum
0×00000000,         // Translation Offset
0x[B]FEB[/B]00000,         // Length

Line 2663 changed to

0×00000000,    // Granularity
0xFED40000,         // Range Minimum
0xFED44FFF,         // Range Maximum
0×00000000,         // Translation Offset
0×0000[B]5[/B]000,         // Length


build/compile ulang, tapi hapus dulu file DSDT.aml dan DSDT.hex di Home

selanjutnya kita download beberapa bumbu pelengkap yg nanti berguna buat menggoreng kernelnya, bumbunya adalah:

Code:
sudo apt-get install fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev


jika sudah, baru kita download bahan bakunya:

Code:
apt-get build-dep --no-install-recommends linux-image-$(uname -r)


lumayan lama, sekitar 90'an MB (tergantung koneksi)

kalo sudah selesai, kita bikin perapiannya (baca: folder/directory)

Code:
sudo mkdir /root/source


Code:
su


Code:
cd /root/source


Code:
apt-get source linux-image-$(uname -r)


NB: kalo tidak bisa masuk ke root pake perintah "su", karena password salah, maka bikin dulu passwordnya:

Code:
sudo passwd


masih di terminal yg sama dan masih di super user, masuk ke directory kernelnya

Code:
cd linux-2.6.38


itu directory kernel dengan versi yg terbaru, dan berlaku saat ini (nanti sesuaikan dengan versi yg anda dapatkan saat mengikuti tutorial ini)

cara liatnya:

Code:
gksudo nautilus


terus ke directory Root/Source/

terus yg perlu kita lakuin skarang adalah copy file .config ke folder tersebut, gunanya undah mempermudah kita nanti setting kernelnya

masih sebagai SUper User (su), dan di directory kernelnya)

Code:
cp -vi /boot/config-`uname -r` .config


lalu copy bumbu utama (DSDT.hex)

Code:
cp DSDT.hex /root/source/linux-2.6.38/include


skarang kita setting dulu file .config

buka terminal baru (terminal sebelumnya jangan ditutup)

Code:
gedit /root/source/linux-2.6.38/.config


cari dan lakukan perubahan pada settingan berikut:

Code:
CONFIG_STANDALONE=n
CONFIG_ACPI_CUSTOM_DSDT=y
CONFIG_ACPI_CUSTOM_DSDT_FILE="[COLOR="Blue"]DSDT.hex[/COLOR]"


save lalu tutup

lalu di terminal sebelumnya jalankan perintah:

Code:
make menuconfig


nanti keluar menu config dan kita load aja langsung file .config yg tadi kita setting. 

caranya tekan tombol panah kebawah di keyboad, hingga nanti ada pilihan load configuration... 

klik enter, dan pilih save configuration

lalu tekan tombol panah di keyboard ke kanan (untuk memilih Exit), dan tekan enter

nah,, kata yg punya tutorial, kita bisa mempercepat proses kompilasi dengan trik khusus berikut ini:

buka terminal baru, dan jalankan perintah:

Code:
cat /proc/cpuinfo | grep -i processor


Code:
export CONCURRENCY_LEVEL=5


Proses dimulai

ini dia saatnya, hehehe,,,,

buka terminal sebelumnya, lalu

Code:
make-kpkg clean


Code:
fakeroot make-kpkg --initrd --append-to-version=-luxm4n kernel-image kernel-headers


ini bakalan lama sekali prosesnya, bisa berjam-jam, tergantung prosesor anda, jadi tunggu aja sampe selesai, lebih baik start waktu mau tidur, jadi ketika bangun udah finish

kalo sudah selesai, kita instal deh kernel racikan kita tadi

buka terminal baru

Code:
su


Code:
cd /root/source


Code:
dpkg -i linux-image-2.6.38.8-luxm4n_2.6.38.8-luxm4n-10.00.Custom_amd64.deb


Code:
dpkg -i linux-headers-2.6.38.8-luxm4n_2.6.38.8-luxm4n-10.00.Custom_amd64.deb


lalu kita buat initramfs

Code:
update-initramfs -c -k 2.6.38-luxm4n


terakhir, kita update grub

Code:
sudo update-grub


dan restart

selesai deh,,

o ya sampai lupa, nama krnelnya bisa anda sesuaikan sendiri, sesuai keinginan anda,,, pada proses compile...

ok, semoga bemanfaat

Scren Shoot nya :