Çekirdek 3.7.10 veya daha üstündeki USB otomatik yayılımı nasıl devre dışı bırakılır?


37

Ben çekirdeğinden benim HTPC güncelledik 3.7.10 için 3.10.7 ve öyle görünüyor CONFIG_USB_SUSPEND şimdi çekirdek seçeneklerinden gitmiş ve PM dahildir.

Karşılaştığım en büyük sorun, harici bir HDD’ime sahip olmam ve HTPC’yi askıya alıp uyandırırken sistemde mevcut değil. HDD uyanıyor (tekrar açıldığını duyabiliyorsunuz), ancak bağlama noktasına erişmeye çalıştığınızda aşağıdaki hatayı alıyorsunuz:

ZOTAC ~ # ls /media
ls: reading directory /media: Input/output error

Ve dmesg'de:

[  253.278260] EXT4-fs warning (device sdb1): __ext4_read_dirblock:908: error reading   directory block (ino 2, block 0)

Önceki çekirdeklerde CONFIG_USB_SUSPEND = N ayarının yapılması sorunu çözecektir, çünkü HDD hazırda bekletme modunu kendi kendine idare edecekti ve bağlama noktası her zaman güvenilirdi. HDD uykudayken ve HTPC'nin HDD'nin montaj noktasından bir şeye ihtiyacı olduğunda, HDD'nin kendisi uyanır ve sorunsuz çalışır.

Şu anda aşağıdakileri başarılı olmadan denedim:

  1. Manuel olarak değiştir / sys / bus / usb / cihazlar / usb * / güç / kontrol etmek "açık" yerine "otomatik" .
  2. Manuel olarak değiştir / sys / bus / usb / cihazlar / usb * / güç / otomatik askıya almayı için "-1" yerine "0" .

Ancak HTPC tekrar uyandığında, bağlantı noktası tekrar anlaşılmazdır. Workarround olarak montaj noktasını söküp yeniden monte edebilirim ve tekrar sorunsuz çalışır, ancak işletim sisteminin usb autosuspend ile çalışmasını engellemenin bir yolu olması gerektiğinden eminim.

Çekirdek 3.7.10 veya daha üstündeki usb otomatik engellemenin nasıl devre dışı bırakılacağı hakkında bir fikrin var mı?


Kuyruk /sys/bus/usb/devices/<BUS>-<DEVPATH>/power/persistsana veriyor 1mu? Sana grep CONFIG_PM_RUNTIME /boot/config-$(uname -r)veriyor ymu power-management.txt
Runium

1
power/persistverir 1ve içinde hiçbir config dosyası yok /boot. CONFIG_PM_RUNTIME=yçekirdek .configdosyasında yapılandırılmıştır .
Peter,

Yanıtlar:


32

İçin Ubuntu ve Debian , usbcoreçekirdek tarafından, böylece girişleri oluşturmak /etc/modprobe.dolacak DEĞİL işin: Biz kernel parametrelerini değiştirmek gerekir.

Edit /etc/default/grubdosya ve değiştirmek GRUB_CMDLINE_LINUX_DEFAULTekleme satırı usbcore.autosuspend=-1seçeneği:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"

quit splashZaten mevcut seçenek olduğuna dikkat edin . Öyleyse sahip olduğunuz diğer seçenekleri de saklayın.

Dosyayı kaydettikten sonra grub'u güncelleyin:

sudo update-grub

Ve yeniden başlat .

Şimdi autosuspenddeğeri kontrol et :

cat /sys/module/usbcore/parameters/autosuspend

Ve göstermeli -1.

Çekirdek belgelerinde gelecekte bir gün bu paramın autosuspend_delay_ms(yerine autosuspend) değişeceği belirtilmektedir .


1
Bu Debian için de geçerli gibi görünüyor.
Benjamin Trent,

2
Rael, bunun için çok teşekkürler. Aynısı Kali'nin en son versiyonu için de geçerlidir. Yukarıdakileri ekledim ve USB IRToy'um (v2) şimdi düzgün çalışıyor.
Joat

1
MPCIE yuvalarından birinde bir USB kartım var ve gerçekleri istemedim. Debian Jessie'yi çalıştırmak. Bu benim sorunumu büyük bir baş ağrısını çözerek çözdü, TEŞEKKÜRLER!
xebo

Bunu Ubuntu 15.10'da denedim, ancak değer uygulanmadı (değer 2'dir). Deneyebileceğim başka bir şey var mı?
Jonas Adler,

Hala 14.04'tayım. Fakat afaik, en son çekirdek versiyonlarında, değişmesi gereken param autosuspend_delay_ms.
Rael Gugelmin Cunha

19

Göre çekirdek ağaç belgelerinde , otomatik askıya almayı boşta gecikme zamanı ile kontrol edilir autosuspendmodül parametresi usbcore. Başlangıçtaki varsayılan rölanti gecikmesinin -1 olarak ayarlanması, herhangi bir USB cihazının otomatik artışını engeller. Seçili cihazlar için otomatik yayılma özelliğini etkinleştirebilmelisiniz.

usbcore.autosuspendModül elle yüklendiğinde çekirdek parametresi ayarlanabilir:

$ modprobe usbcore autosuspend=-1

veya aşağıdaki satırı bir yapılandırma dosyasına ekleyerek /etc/modprobe.d:

options usbcore autosuspend=-1

Eğer usbcoreçekirdek içinde gömülü olduğu, parametre çekirdek komut satırına aşağıdaki eklenerek ayarlanabilir:

usbcore.autosuspend=-1

Son olarak, seçenek aşağıdakileri yaparak çalışma zamanında ayarlanabilir:

echo -1 >/sys/module/usbcore/parameters/autosuspend

Değişiklik tüm yeni USB cihazlarını etkileyecektir. Zaten var olan cihazlar etkilenmeyecek.


2
Ben var usbcoreçekirdeğin içine derlenmiş fakat kullanarak modprobe.dseçeneği çalışması görünmüyor. modprobe -c usbcore | grep autosuspendOlarak görüntüler -1, rağmen cat /sys/module/usbcore/parameters/autosuspendalıyorum2
Peter

1
@Peter: autosuspendkullanımdan kaldırıldı. Yeni dosya autosuspend_delay_mssaniye yerine ms alır. ref . Ama power/controlset için onaynı etkiye sahip olmalıdır.
Runium

@Summinder, daha sonra autosuspend'i sonsuza dek devre dışı bırakmak için ne yapılandırmalıyım? Her autosuspend=-1ikisini de modprobe.dve kernelparametresini kullanmayı denedim , ancak HDD hala askıya alıyor ve güzel bir şekilde uyanmıyor.
Peter,

1
@Peter: Bilseydim sana söylerim :). Ben sadece hangi doktordan alıntı yapıyorum. diyor. Sizin pt. Gönderinizdeki 1 söyleyebildiğim kadarıyla yapmalıydı, neden olmadığı hakkında hiçbir fikrim yok. Eğer sete denediniz autosuspend_delay_msiçin -1? (In /sys/bus/usb/devices/<device>/power/autosuspend_delay_ms)
Runium

1
Ben çekirdekli 4.4 yaşıyorum ve autosuspend_delay_msorada değil. Ancak autosuspendIS.
Mariano Dupont,

2

Linux Mint Debian Edition sisteminin çekirdeğe yükseltilmesinden bu yana Microsoft Wheel Mouse Optik USB ve PS / 2 Uyumlu ile benzer bir sorunum var . Çekirdeğin USB güç yönetimi tarafından uygun olmayan bir otomatik artış olduğundan şüphelenildi. Debian'da bu, çekirdeğe modül olarak derlenir .3.10-2-amd64usbcore

Bunu, komut satırında yayınlayarak kalıcı olarak değiştirebilirsiniz:

sudo echo "options usbcore autosuspend=-1" | sudo tee /etc/modprobe.d/disable-usb-autosuspend.conf > /dev/null

Bazı çekirdekler autosuspend=0olsa gerekebilir .

Sisteminiz kullanıyorsa initrd(büyük olasılıkla yapar), sonra initrdçekirdeğiniz için yeniden oluşturun .

Örneğin:

uname -r
sudo dpkg-reconfigure linux-image-3.10-2-amd64

Yeniden başlat ve kontrol et:

cat /sys/module/usbcore/parameters/autosuspend

-1şimdi vermeli .


Kullanmıyorum initrdve burada açıklanan eylemler bu durumda daha önce yanıtladığımız gibi çalışmıyor.
Peter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.