🖥️ Arch Linux Üzerinde USB Güç Yönetimi ve Kernel Modül Analizi Rehberi
Linux sistemlerde donanım kaynaklarını verimli kullanmak, güç tüketimini azaltmak ve uyumluluk sorunlarını gidermek için USB güç yönetimi ve çekirdek modül ayarları oldukça önemlidir. Bu rehberde, bir Bash scripti yardımıyla sisteminizdeki USB aygıtlarının durumunu ve modül parametrelerini nasıl inceleyebileceğinizi öğreneceksiniz. 🚀
🧠 Bu Rehber Kimler İçin?
- ⚙️ Teknik bilgiye sahip Linux kullanıcıları
- 🐧 Arch Linux veya benzeri minimalist dağıtımları kullananlar
- 🧪 USB cihazlarla ilgili uyku/uyanma sorunları yaşayanlar
- 🔋 Dizüstü bilgisayarlarında güç tasarrufu sağlamak isteyenler
- 🎧 Ses aygıtları, kablosuz adaptörler, klavye/fare gibi donanımların yönetimini incelemek isteyenler
🔍 Bu Script Ne Yapar?
Script iki temel işlemi gerçekleştirir:
- Tüm USB aygıtlarının güç yönetimi ayarlarını okur ve listeler.
- Sistemde aktif olarak kullanılan kernel modüllerini ve parametrelerini gösterir.
🛠️ Script’in Adım Adım İncelemesi
1. Script İçeriği
#!/bin/bash
for i in $(find /sys/devices -name "bMaxPower")
do
busdir=${i%/*}
busnum=$(<$busdir/busnum)
devnum=$(<$busdir/devnum)
title=$(lsusb -s $busnum:$devnum)
printf "\n\n+++ %s\n -%s\n" "$title" "$busdir"
for ff in $(find $busdir/power -type f ! -empty 2>/dev/null)
do
v=$(cat $ff 2>/dev/null|tr -d "\n")
[[ ${#v} -gt 0 ]] && echo -e " ${ff##*/}=$v";
done | sort -g;
done;
printf "\n\n\n+++ %s\n" "Kernel Modules"
for mod in $(lspci -k | sed -n '/in use:/s,^.*: ,,p' | sort -u)
do
echo "+ $mod";
systool -v -m $mod 2> /dev/null | sed -n "/Parameters:/,/^$/p";
done
🧪 Uygulamalı Kullanım ve Örnek Çıktı
2. Komutu Çalıştır
chmod +x usb-kernel-analyzer.sh
./usb-kernel-analyzer.sh
Çalıştırdığınızda aşağıdaki gibi bir çıktı alırsınız:
+++ Bus 001 Device 005: ID 10c4:8108 Silicon Labs USB OPTICAL MOUSE
-/sys/devices/.../usb1/1-9
autosuspend=2
autosuspend_delay_ms=2000
control=on
runtime_status=active
wakeup=disabled
📊 Çıktıdaki Anahtar Alanlar
Alan | Anlamı |
---|---|
autosuspend |
2 ise cihaz uykuya geçebilir. |
autosuspend_delay_ms |
Uykuya geçmeden önceki bekleme süresi. |
control |
auto : sistem yönetir, on : kullanıcı belirler. |
runtime_status |
active : çalışıyor, suspended : uyku modunda. |
wakeup |
Cihaz sistem uykudayken uyandırabilir mi. |
🔎 3. Öne Çıkan Cihaz Analizleri
🖱️ USB Mouse (Silicon Labs)
- Durum: Aktif,
autosuspend=2
olmasına rağmen uyumamış. - Güç Tüketimi: Devam ediyor.
- Wakeup: Kapalı, bu yüzden sistem uykudan mouse ile uyanmayabilir.
⌨️ USB Klavye (CASUE)
- Wakeup: Açık. Bu cihaz sistem uykudayken uyanma tetikleyebilir.
- runtime_status=active olduğundan uyumamış.
📶 Kablosuz Ağ Adaptörü (Realtek RTL8188RU)
- Uyku destekleniyor ama runtime_status=active → uyumuyor.
- wakeup=disabled → Ağdan uyanma tetikleyemez.
🧩 4. Kernel Modül Parametreleri
Çıktıdaki modül örneği:
+++ Kernel Modules
+ nvme
Parameters:
io_queue_depth = 1024
use_threaded_interrupts = 0
🎯 Neden Önemli?
Bu parametreler sistemin performansı, güç yönetimi ve donanım uyumluluğu üzerinde doğrudan etkilidir.
Modül | Kritik Parametreler |
---|---|
snd_hda_intel |
power_save, enable_msi, jackpoll_ms |
nvme |
io_queue_depth, use_cmb_sqes |
xhci_hcd |
quirks, link_quirk |
🧰 5. Uykuya Geçmeyen Cihazları Bulmak
Script dışında şu komutları da kullanabilirsiniz:
🔍 Uykuya geçmeyen cihazları listele
grep . /sys/bus/usb/devices/*/power/runtime_status | grep -v suspended
🔋 Uyuyabilir ama aktif olan cihazları bul
find /sys/bus/usb/devices/*/power -name runtime_status -exec grep -H active {} \;
✅ 6. İyileştirme Önerileri
autosuspend=2
olan ama sürekliactive
durumda kalan cihazlar içincontrol=auto
yapılabilir.wakeup=disabled
olan klavye gibi aygıtlar için:
echo enabled | sudo tee /sys/bus/usb/devices/1-3/power/wakeup
- Sürücü parametrelerini kalıcı yapmak için
/etc/modprobe.d
altına.conf
dosyası ekleyebilirsiniz.
📌 Sonuç: Bu Script Neden Faydalı?
✅ USB güç yönetimini sistemsel düzeyde görebilirsiniz. ✅ Uyku/uyanma sorunlarını tespit edebilirsiniz. ✅ Kernel modül parametrelerini analiz ederek performans veya uyumluluk artırabilirsiniz.