Instalasi selesai, laptop menyala — dan wifi tidak muncul, resolusi layar mentah, speaker bisu. Linux sebenarnya mengenali mayoritas perangkat begitu saja, tetapi sisanya yang bermasalah hampir selalu berakhir di satu kata: driver. Kabar baiknya, masalah perangkat jarang misterius — kernel mencatat perangkat apa saja yang ditemukan, driver mana yang berhasil diikat, dan firmware mana yang gagal dimuat. Chapter ini melatih cara membaca ketiganya, membedakan driver dari firmware, lalu memetakan perangkat bermasalah ke paket Debian yang menyelesaikannya.
Driver dan Firmware: Dua Bagian yang Berbeda #
Dua istilah ini sering dipakai bergantian padahal keduanya bekerja di tempat berbeda. Driver adalah kode yang berjalan di kernel space — biasanya berbentuk kernel module — dan bertugas mengoperasikan perangkat dari sisi komputer, materi lengkapnya di Kernel dan Kernel Modules . Firmware adalah blob kode yang di-upload ke dalam perangkat itu sendiri saat diinisialisasi: kartu wifi modern misalnya punya prosesor kecil sendiri yang baru bisa bekerja setelah kernel mengirimkan firmware-nya.
| Aspek | Driver | Firmware |
|---|---|---|
| Berjalan di | kernel space komputer | di dalam chip perangkat |
| Wujud | modul .ko (mis. brcmfmac) | file blob (mis. brcmfmac4356-pcie.bin) |
| Disediakan | kernel, atau paket DKMS | paket firmware-* |
| Gejala bila hilang | perangkat tak terikat driver | driver ada, tapi gagal menginisialisasi |
Konsekuensinya praktis: kartu wifi Broadcom bisa dikenali dan drivernya termuat, tetapi tetap mati karena file firmware-nya belum terpasang. Itulah mengapa diagnosis perangkat selalu punya dua pertanyaan — driver sudah mengikat belum, dan firmware sudah termuat belum.
Memetakan Perangkat dengan lspci -k #
Perintah kunci identifikasi adalah lspci -k: mendaftar perangkat PCI beserta driver yang sedang mengikatnya — teknik inventaris lengkapnya di Hardware Information
. Karena output-nya berformat stabil, potongannya bisa disimpan sebagai snapshot dan kita petakan dengan awk:
cat > lspci-k.txt <<'AKHIR'
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09)
Subsystem: Lenovo ThinkPad T450s
Kernel driver in use: i915
01:00.0 Network controller: Broadcom Inc. BCM4356 Wireless Network Adapter (rev 03)
Subsystem: Lenovo Wireless 2x2 11ac
Kernel modules: brcmfmac
02:00.0 Ethernet controller: Realtek RTL8111 Gigabit Ethernet (rev 0c)
Subsystem: Lenovo RTL8111
Kernel driver in use: r8169
03:00.0 3D controller: NVIDIA GM108M [GeForce 940M] (rev a2)
Subsystem: Lenovo GeForce 940M
Kernel modules: nouveau
AKHIR
awk '/^[0-9]/ {perangkat = $0} /Kernel driver in use/ {print perangkat " -> " $NF}' lspci-k.txtOutput yang Dihasilkan:
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09) -> i915
02:00.0 Ethernet controller: Realtek RTL8111 Gigabit Ethernet (rev 0c) -> r8169Perhatikan dua hal dari pola awk-nya: baris yang diawali angka adalah baris perangkat (alamat bus PCI), dan baris Kernel driver in use selalu datang setelahnya — variabel perangkat menyimpan baris terakhir yang dilihat, lalu dicetak bersama $NF, kolom terakhirnya yaitu nama driver. Hasilnya menunjukkan Intel Graphics terikat i915 dan ethernet terikat r8169 — dua perangkat yang sehat. Namun hanya dua dari empat perangkat yang muncul: wifi dan NVIDIA sama sekali tidak punya baris driver in use. Itu sinyal berikutnya: keduanya hanya sampai pada Kernel modules — driver kandidatnya dikenal, tetapi tidak ada yang berhasil mengikat.
Mesin pencari perangkat tanpa driver bisa diotomasi. Skrip kecil berikut menandai setiap perangkat yang tidak diikuti baris driver in use — fixture-nya ditulis ulang agar blok tetap mandiri:
cat > lspci-k.txt <<'AKHIR'
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09)
Subsystem: Lenovo ThinkPad T450s
Kernel driver in use: i915
01:00.0 Network controller: Broadcom Inc. BCM4356 Wireless Network Adapter (rev 03)
Subsystem: Lenovo Wireless 2x2 11ac
Kernel modules: brcmfmac
02:00.0 Ethernet controller: Realtek RTL8111 Gigabit Ethernet (rev 0c)
Subsystem: Lenovo RTL8111
Kernel driver in use: r8169
03:00.0 3D controller: NVIDIA GM108M [GeForce 940M] (rev a2)
Subsystem: Lenovo GeForce 940M
Kernel modules: nouveau
AKHIR
awk '
/^[0-9]/ {
if (baris > 0 && terikat == 0) print "TANPA DRIVER :", perangkat
perangkat = $0; terikat = 0; baris++
}
/Kernel driver in use/ { terikat = 1 }
END { if (terikat == 0) print "TANPA DRIVER :", perangkat }
' lspci-k.txtOutput yang Dihasilkan:
TANPA DRIVER : 01:00.0 Network controller: Broadcom Inc. BCM4356 Wireless Network Adapter (rev 03)
TANPA DRIVER : 03:00.0 3D controller: NVIDIA GM108M [GeForce 940M] (rev a2)Logikanya adalah mesin status dua-baris: begitu baris perangkat baru muncul, nasib perangkat sebelumnya sudah pasti — bila terikat masih nol, ia lolos tanpa driver; blok END menutup pemeriksaan untuk perangkat terakhir yang tidak punya penerus. Untuk perangkat USB, padanan perintahnya adalah lsusb, dan lsmod mendaftar modul yang sedang termuat di memori — cocok untuk memastikan modul kandidat (misalnya nouveau) benar-benar hadir atau justru sengaja di-blacklist.
Firmware yang Hilang dari Log #
Untuk perangkat yang drivernya sudah mengikat namun tetap diam, giliranan berikutnya: periksa log kernel. Pesan khasnya panjang tetapi mudah dikenali — Direct firmware load ... failed with error -2, di mana -2 berarti file firmware tidak ditemukan:
cat > dmesg-firmware.log <<'AKHIR'
Jan 15 10:02:11 laptop-budi kernel: usb 1-4: new high-speed USB device number 5 using xhci_hcd
Jan 15 10:02:11 laptop-budi kernel: brcmfmac: direct firmware load for brcm/brcmfmac4356-pcie.bin failed with error -2
Jan 15 10:02:11 laptop-budi kernel: i915 0000:00:02.0: [drm] Failed to load DMC firmware i915/kbl_dmc_ver1_04.bin (-2)
Jan 15 10:02:12 laptop-budi kernel: r8169 0000:02:00.0 eth0: jumbo features enabled
AKHIR
grep -i firmware dmesg-firmware.logOutput yang Dihasilkan:
Jan 15 10:02:11 laptop-budi kernel: brcmfmac: direct firmware load for brcm/brcmfmac4356-pcie.bin failed with error -2
Jan 15 10:02:11 laptop-budi kernel: i915 0000:00:02.0: [drm] Failed to load DMC firmware i915/kbl_dmc_ver1_04.bin (-2)Dua baris hasilnya bermuara ke satu diagnosis: file firmware belum ada di /lib/firmware. Solusi Debian-nya berupa paket — firmware-linux, firmware-misc-nonfree, firmware-realtek, firmware-brcm80211 — yang semuanya tinggal dipasang dari repositori, pengelolaan paketnya mengikuti Repository Management
. Sejak Debian 12, komponen non-free-firmware sudah disertakan secara bawaan; pada instalasi lama, komponen itu yang perlu ditambahkan ke sources.list lebih dulu. Sebelum memasang, modinfo nama_modul menampilkan daftar file firmware yang dibutuhkan sebuah driver — cara cepat memastikan paket mana yang seharusnya dipasang.
Kasus Nyata: Wifi, GPU, dan Audio #
Tiga keluarga perangkat ini menyumbang mayoritas keluhan kompatibilitas. Peta ringkasnya di Debian:
| Perangkat | Gejala khas | Driver | Paket penyelesai |
|---|---|---|---|
| Wifi Broadcom BCM43xx | interface tidak muncul, atau muncul lalu mati | brcmfmac | firmware-brcm80211 |
| Wifi Realtek USB | tidak bisa tersambung / sering putus | rtw88, rtw89 | firmware-realtek |
| GPU NVIDIA | resolusi mentah, lag, atau gagal masuk desktop | nouveau / nvidia | nvidia-driver (DKMS) |
| GPU Intel/AMD | akselerasi lemah, firmware gagal muat | i915 / amdgpu | firmware-misc-nonfree |
| Audio Intel HDA | tidak bersuara padahal terdeteksi | snd_hda_intel | (bawaan kernel — biasanya masalah mixer, bukan driver) |
Baris NVIDIA layak dijelaskan: kernel menyediakan nouveau sebagai driver open source yang jalan begitu saja, tetapi untuk performa penuh banyak yang memilih driver proprietary nvidia-driver. Pilihan itu bukan tanpa konsekuensi — driver proprietary dikompilasi per versi kernel, dan di situlah DKMS masuk. Konfigurasi audio yang bukan masalah driver dibedah di Audio Configuration
.
DKMS: Saat Kernel Update Merusak Driver #
Skenario klasik pemilik GPU NVIDIA: semuanya sehat, lalu update besar kernel datang, dan setelah reboot layar hanya menampilkan sesi darurat. Penyebabnya bukan sulap: driver proprietary dikompilasi untuk versi kernel tertentu, dan kernel baru tidak lagi memuat modul yang dikompilasi untuk kernel lama. DKMS (Dynamic Kernel Module Support) hadir untuk itu — membangun ulang modul pihak ketiga setiap kali kernel baru dipasang. Statusnya dilihat dengan dkms status: keluaran yang sehat menampilkan modul beserta versi kernel yang sudah dibangun; keluaran yang tidak menyebut kernel baru berarti modulnya tertinggal. Bila kerusakan sudah terjadi, jalan pintasnya aman: pilih entri Advanced options di menu GRUB lalu boot dengan kernel lama yang modulnya masih utuh — teknik memilih kernel di GRUB dibahas di Boot Failures
. Untuk perangkat yang barunya didukung kernel lebih baru, Debian menyediakan backports: kernel dari rilis berikutnya yang dikemas ulang untuk rilis stabil — dokumentasinya di dkms(8)
.
Pola Umum #
| Gejala | Penyebab paling umum | Tindakan pertama |
|---|---|---|
perangkat tidak muncul di ip link | driver tidak terikat / firmware hilang | lspci -k atau lsusb; cek Kernel driver in use |
| driver terikat tapi mati juga | file firmware gagal dimuat | grep -i firmware di log; pasang paket firmware-* |
| rusak setelah update kernel | modul DKMS tidak terbangun ulang | boot kernel lama dari GRUB; dkms status |
| resolusi mentah, tanpa akselerasi | driver GPU generik / firmware | cek driver di lspci -k; pertimbangkan paket vendor |
| audio bisu tapi terdeteksi | mixer mute / konfigurasi server audio | alsamixer / pavucontrol — bukan urusan driver |
Driver GPU yang gagal mengikat punya gejala lanjutan yang lebih dramatis: desktop yang menolak menyala atau jatuh berulang ke layar login. Desktop yang rusak itulah arena chapter berikutnya — dan penanganannya menuntut satu prinsip penting: memisahkan kerusakan milik user dari kerusakan milik sistem.
Format opsi lspci dibaca di lspci(8)
, dan panduan driver NVIDIA termutakhir selalu ada di wiki Arch: NVIDIA
— meski nama paketnya beda antar distribusi, konsep drivernya sama.