Yo ketemu lagi, kali ini postingannya agak unik. Studi kasus? ya, jadi disini saya akan menguraikan masalah yang saya hadapi pada komputer saya sendiri berikut penanggulangannya dan apa yang ada di balik semua masalah ini.
Sesaat setelah saya dapat solusi touchpad di laptop saya yang tidak work di ubuntu 16.04 saya langsung terpikir untuk memposting ini kalau-kalau nanti saya dapat masalah yang mirip seperti ini saya jadi ingat. Ya, saya adalah tipe orang yang mudah mengingat sesuatu jika saya tuliskan sendiri. Sedikit curhat, waktu SD - SMP dulu untuk menghafal (meh, sejujurnya ini pekerjaan yang paling tidak kusuka) atau mengingat sesuatu saya berusaha sebisa mungkin merasakan 'momen' ketika saya membaca atau menghafal sesuatu. Jadi, ketika saya ingin mengingat hal itu saya hanya perlu me recall momen itu and its work like a charm.
Ok, cukup curhatnya. Jadi singkat cerita touchpad di laptop baru saya tidak work ketika selesai menginstall ubuntu 16.04. Spec laptop baru saya adalah
~$ sudo lshw -short
[sudo] password for genomexyz:
H/W path Device Class Description
=====================================================
system X456UF (ASUS-NotebookSKU)
/0 bus X456UF
/0/0 memory 64KiB BIOS
/0/d memory 64KiB L1 cache
/0/e memory 64KiB L1 cache
/0/f memory 512KiB L2 cache
/0/10 memory 3MiB L3 cache
/0/11 processor Intel(R) Core(TM) i5-6200U CPU @ 2.30G
/0/12 memory 4GiB System Memory
/0/12/0 memory 4GiB SODIMM DDR3 Synchronous 1600 MHz
/0/12/1 memory [empty]
/0/100 bridge Sky Lake Host Bridge/DRAM Registers
/0/100/2 display Sky Lake Integrated Graphics
/0/100/4 generic Intel Corporation
/0/100/14 bus Intel Corporation
/0/100/14/0 usb2 bus xHCI Host Controller
/0/100/14/1 usb1 bus xHCI Host Controller
/0/100/14/1/1 input USB OPTICAL MOUSE
/0/100/14/1/6 multimedia USB2.0 VGA UVC WebCam
/0/100/14/1/8 communication Bluetooth wireless interface
/0/100/14.2 generic Intel Corporation
/0/100/15 generic Intel Corporation
/0/100/15.1 generic Intel Corporation
/0/100/16 communication Intel Corporation
/0/100/17 storage Intel Corporation
/0/100/1c bridge Intel Corporation
/0/100/1c/0 display GM108M [GeForce 930M]
/0/100/1c.4 bridge Intel Corporation
/0/100/1c.4/0 enp2s0 network RTL8111/8168/8411 PCI Express Gigabit
/0/100/1c.5 bridge Intel Corporation
/0/100/1c.5/0 wlp3s0 network QCA9565 / AR9565 Wireless Network Adap
/0/100/1f bridge Intel Corporation
/0/100/1f.2 memory Memory controller
/0/100/1f.3 multimedia Intel Corporation
/0/100/1f.4 bus Intel Corporation
/0/1 scsi0 storage
/0/1/0.0.0 /dev/sda disk 500GB HGST HTS545050A7
/0/1/0.0.0/1 /dev/sda1 volume 449MiB Windows NTFS volume
/0/1/0.0.0/2 /dev/sda2 volume 99MiB Windows FAT volume
/0/1/0.0.0/3 /dev/sda3 volume 15MiB reserved partition
/0/1/0.0.0/4 /dev/sda4 volume 97GiB Windows NTFS volume
/0/1/0.0.0/5 /dev/sda5 volume 82GiB Windows NTFS volume
/0/1/0.0.0/6 /dev/sda6 volume 184GiB Windows NTFS volume
/0/1/0.0.0/7 /dev/sda7 volume 97GiB EXT4 volume
/0/1/0.0.0/8 /dev/sda8 volume 3991MiB Linux swap volume
/0/2 scsi1 storage
/0/2/0.0.0 /dev/cdrom disk CDDVDW SU-228GB
Ya, saya dual boot dengan Windows10 (file word, ppt, game etc...belum bisa tergantikan). Kembali ke masalah utama, touchpad saya tidak work, harus pakai mouse untuk menggerakkan kursor. Cek per cek ternyata masalahnya karena ada pada driver i8042. i8042 sendiri adalah controller untuk mouse dan keyboard.
Jadi untuk laptop-laptop keluaran baru, sepertinya dilengkapi dengan kemampuan multiplexing. Multiplexing adalah kemampuan mengirimkan 1 signal yang kompleks, yang mana 1 signal ini merangkap untuk peripheral lainnya. Ini sangat bagus karena menghemat 'jalur' pada rangkaian internal komputer.
Inovasi ini mungkin ada hubungannya dengan tombol disable touchpad pada keyoboard. Laptop keluaran baru saya perhatikan banyak yang punya fitur seperti itu.
Inovasi ini mungkin ada hubungannya dengan tombol disable touchpad pada keyoboard. Laptop keluaran baru saya perhatikan banyak yang punya fitur seperti itu.
Cara kerja dari driver ini ialah, ketika booting, dia akan mengecek apakah device i8042 yang tertanam pada laptop support multiplexing seperti pada source codenya
/*
* i8042_check_mux() checks whether the controller supports the PS/2 Active
* Multiplexing specification by Synaptics, Phoenix, Insyde and
* LCS/Telegraphics.
*/
static int __init i8042_check_mux(void)
{
unsigned char mux_version;
if (i8042_set_mux_mode(true, &mux_version))
return -1;
pr_info("Detected active multiplexing controller, rev %d.%d\n",
(mux_version >> 4) & 0xf, mux_version & 0xf);
/*
* Disable all muxed ports by disabling AUX.
*/
i8042_ctr |= I8042_CTR_AUXDIS;
i8042_ctr &= ~I8042_CTR_AUXINT;
if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
pr_err("Failed to disable AUX port, can't use MUX\n");
return -EIO;
}
i8042_mux_present = true;
return 0;
}
Tapi sayangnya, driver ini masih belum sempurna (ada masalah pada pengecekan) sehingga pada beberapa kasus touchpad hanya kadang-kadang saja work dan selebihnya tidak (pada kasus saya, tidak work sama sekali). Untuk memperbaiki ini, pada /etc/default/grub di parameter GRUB_CMDLINE_LINUX_DEFAULT masukkan
i8042.nomux=1 i8042.reset
lebih jelasnya, file /etc/default/grub menjadi
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 #GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="
i8042.nomux=1 i8042.reset
quiet splash" GRUB_CMDLINE_LINUX="" #sisanya tidak ada yang berubah, hanya bagian atas ini saja
Kegunaan dari command ini adalah mereset device yang terkoneksi dengan KBD port. Ada ungkapan yang mengatakan "terkadang kita hanya perlu merestartnya saja agar bisa jalan lagi" dan itu bekerja disini. Saya masih belum tahu mengapa ini bisa berhasil. Tidak lupa setelah mengedit /etc/default/grub ini langsung restart komputer untuk merasakan efeknya.
Mengingat command line itu di tujukan untuk kernel, maka seharusnya solusi ini bisa untuk semua distro linux.
Ya, sepertinya hanya itu saja untuk studi kasus yang pertama ini. Beberapa ide tulisan yang ingin saya masukkan di potingan kali ini kebanyakan sudah lupa, so moral of the story "ketika punya ide, langsung tulis atau kalau tidak sempat, setidaknya catat lah". Sekian.
referensi:
http://unix.stackexchange.com/questions/28736/what-does-the-i8042-nomux-1-kernel-option-do-during-booting-of-ubuntu
http://searchnetworking.techtarget.com/definition/multiplexing
https://forums.gentoo.org/viewtopic-t-336570-start-0.html
http://askubuntu.com/questions/763584/elantech-touchpad-not-working-on-ubuntu-16-04-and-arch-linux
http://lxr.linux.no/#linux+v3.2/drivers/input/serio/i8042.c
https://www.kernel.org/doc/Documentation/kernel-parameters.txt
https://en.wikipedia.org/wiki/Multiplexing
Komentar
Posting Komentar