16 Apr 2011

HP WMI Berhasil Ditundukkan Kernel 2.6.38.2

Submitted by walecha

V3000.jpgSebelumnya saya pernah menulis mengenai pergulatan saya dengan perangkat nirkabel milik Notebook HP Compaq Presario V3000. Silakan baca tulisan saya yang pertama tentang bagaimana menggunakan perangkat RFKILL pada notebook dengan model seperti milik saya. Kemudian silakan baca juga tulisan kedua saya mengenai hal yang sama tetapi mengenai kembalinya masalah HP WMI vs RFKILL pada Slackware 13.37 yang menggunakan kernel 2.6.37.x (terakhir saat tulisan ini dibuat adalah kernel 2.6.37.6).

Nah kali ini saya mencoba menggunakan kernel testing dari Slackware{64}-Current, yaitu kernel 2.6.38.2. Hal pertama yang saya lakukan adalah meng-install kernel 2.6.38.2:

# installpkg kernel-generic-2.6.38.2-x86_64-2.txz
# installpkg kernel-modules-2.6.38.2-x86_64-2.txz
# upgradepkg kernel-firmware-2.6.38.2-x86_64-2.txz
# upgradepkg kernel-header-2.6.38.2-x86_64-2.txz

Setelah itu saya reboot, masuk ke kernel baru. Jika sebelumnya di kernel 2.6.37.x saya harus memasukkan driver hp_wmi ke dalam file /etc/modprobe.d/blacklist supaya tidak dimuat oleh kernel. Maka di kernel 2.6.38.2 saya mencoba memuatnya dengan menghapus baris 'blacklist hp_wmi' dari blacklist.

Saat pertama kali boot, indikator perangkat jaringan nirkabel Intel Wireless 3945 masih menyala merah alias perangkat tersebut masih tidak aktif. Sempat ragu juga saya, apakah perangkat ini masih tidak dapat digunakan bersama perangkat kontrolnya yaitu HP WMI, di linux. Tapi tunggu sebentar, saya masih belum mengecek apakah RFKILL bisa berjalan normal atau tidak jika HP WMI dalam kondisi aktif. Saya coba saja, iseng-iseng berhadiah:

# rfkill list
0: phy0: Wireless LAN
        Soft blocked: yes
        Hard blocked: no
1: hp-wifi: Wireless LAN
        Soft blocked: yes
        Hard blocked: no
2: hp-bluetooth: Bluetooth
        Soft blocked: yes
        Hard blocked: no
3: hci0: Bluetooth
        Soft blocked: yes
        Hard blocked: no

Haa, kali ini sedikit berbeda dengan kondisi sewaktu menggunakan kernel 2.6.37.6. Sebelumnya seluruh perangkat akan terdeteksi terblokir baik secara software (Soft) maupun hardware (Hard, tombol on/off wifi). Jika seperti ini, artinya saya bisa menggunakan software rfkill untuk mengaktifkan perangkat-perangkat tersebut. Dan:

# rfkill unblock all
# rfkill list
0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no
1: hp-wifi: Wireless LAN
        Soft blocked: no
        Hard blocked: no
2: hp-bluetooth: Bluetooth
        Soft blocked: no
        Hard blocked: no
3: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no

Benar perkiraan saya. RFKILL berhasil mengaktifkan perangkat-perangkat tersebut dan semua perangkat dapat berjalan normal. Sekarang tinggal mengaktifkan semua perangkat sewaktu boot. Saya tambahkan opsi berikut ke dalam /etc/modprobe.d/rfkill.conf (buat file /etc/modprobe.d/rfkill jika belum ada):

options rfkill master_switch_mode=2 default_state=1

Opsi tersebut saya dapatkan dari perintah 'modinfo rfkill'. Artinya adalah sebagai berikut:

  • master_switch_mode: SW_RFKILL_ALL ON should: 0=do nothing (only unlock); 1=restore; 2=unblock all
  • default_state: Default initial state for all radio types, 0 = radio off

Jadi saat boot saya paksa driver RFKILL untuk melepaskan semua blokir (opsi 2) terhadap perangkat jaringan nirkabel. Kemudian saya meminta RFKILL untuk mengaktifkan perangkat radio (opsi 1) dari dari semua perangkat jaringan nirkabel tersebut. Kemudian untuk memastikan saya tambahkan baris ini ke dalam /etc/rc.d/rc.local:

# Making rfkill writable by world
chmod 666 /dev/rfkill
/usr/sbin/rfkill unblock all

Sekarang saat boot, lampu indikator sudah berwarna biru, dan perangkat manajemen jaringan di desktop (saya menggunakan NetworkManager) dapat menggunakan perangkat jaringan nirkabel tanpa kesulitan. Jika berniat mencoba kernel 2.6.38.2, silakan cari di direktori testing dari repo Slackware{64}-Current.

Selamat mencoba.