解決device not accepting address *, error -*
豫:實際上這裏提出的做法並不可稱爲“解決”,因爲沒有找到具體原因,而只有解決方案。
最近手上的Kingston DTR30 32G U盤(屬USB閃存設備)出了問題,在試圖查壞塊時候意外發現了另一個問題(已驗證和U盤無關):
- 插入U盤之後檢測到USB設備(lsusb),但是不出現對應的塊設備(lsblk);
-
查看dmesg,輸出中有多行如下內容:
usb 1-1.2: new high-speed USB device number 92 using ehci-pci usb 1-1.2: device descriptor read/64, error -110 usb 1-1.2: new high-speed USB device number 93 using ehci-pci usb 1-1.2: device not accepting address 93, error -110
- 之後信息反復(並不一定和上面完全相同),其中設備號不斷上升;
-
多次之後變成:
unable to enumerate USB device
其中的設備號完全可以是其他值,錯誤號也可以是其他值,例如下面的:
usb 1-1.4: new high-speed USB device number 103 using ehci-pci usb 1-1.4: device not accepting address 103, error -71 usb 1-1-port4: unable to enumerate USB device usb 1-1.4: new high-speed USB device number 104 using ehci-pci usb 1-1.4: device descriptor read/all, error -71 usb 1-1.4: new high-speed USB device number 105 using ehci-pci usb 1-1.4: device descriptor read/64, error -71
在網上搜索多時,總共找到兩個相關內容,分別如下:
-
過熱之說(網址1 網址2)
- 其中說道:“這極爲可能是硬件問題(failure)而不是驅動或者內核bug。USB有‘電流過載(over-current)保護’,會在接口電量消耗過大時觸發。”
- 解決方案是:“拔下所有USB設備,關閉電源,等一兩分鐘。然後接回所有設備並啓動系統。”
-
驅動bug之說(網址)
- 該論壇主題中,許多人遇到了這樣的問題;
-
2樓(Rocket2DMn)提出了一個解決方案:
sudo rmmod ehci_hcd
並說該問題有時候會發生在USB2.0設備上,但他也不清楚究竟是如何觸發的; - 再下面9樓(jhoderd)提出卸載ehci驅動模塊會導致無法使用高速USB,他也很糾結這個問題。
對於我碰到的問題,分別(是的我碰到了好幾次)嘗試上面兩個方案的結果如下:
-
分爲兩個階段,貌似管用
- 關機,睡覺起來之後再開,當時沒有再遇到問題;
- 開了一段時間以後(電腦服役五年了且散熱不好,最近濟南氣溫也比較高)溫度又昇上去(九十度),想起來再試,再次出現問題。
-
和論壇主題中說的解決方案有一定出入
- 卸載ehci_hcd模塊時候提示被ehci_pci模塊依賴,無法卸載;
- 同時卸載ehci_pci、ehci_hcd模塊之後所有(?)USB設備均不可使用;
- 重新裝載ehci_pci之後均再次工作,且未再出現問題。
在尋找問題過程中,還有過其他猜想,但經嘗試發現當可排除。猜想、原因及嘗試方案(結局均爲“問題依舊”,故不再贅述)如下:
-
USB接口問題
- 原因:電腦服役多年,且已知某接口可能接觸不良
- 方案:更換到其他接口上(共3個USB2.0、1個eSATA/USB)
-
USB接口供電/休眠問題
- 原因:開機自動啓動powertop進行調節,其中包括USB接口自動休眠
- 方案:關閉所有相關項目的自動調節功能
-
內核bug
- 原因:出現該問題前兩天剛剛把內核更新到4.1.2
- 方案:使用3.14.48(arch官方源中的linux-lts)內核
雖然就目前來看,問題得到解決,但是由於不清楚具體問題何在,難保日後不會再碰到。
如哪位知道具體問題何在,煩勞周知,多謝!
Acer 5745G Linux下關閉獨顯
本機相關基本情況:
- 顯卡:nvidia gt330m
-
雙顯卡切換技術:legacy optimus。
- 這是第二代技術,而一般意義上的optimus是第三代。
- 電腦C面有一個實體按鈕,在windows下的作用(需相應軟件和驅動)是切換顯卡。
本文所述內容該當可通用於所有此類電腦。(此技術用於多數gt330m及之前的雙顯卡筆記本)
關閉獨立顯卡使用了bbswitch。AUR上有bbswitch-dkms,當前的最新版本是0.8。
選擇dkms的目的在於我這裏有兩個內核,而arch官方源中的bbswitch是爲目前最新的3.13內核編譯的。
安裝過程不再贅述,裝好之後
sudo modprobe bbswitch load_state=0 unload_state=1
一下試試看能否載入。
若未提示錯誤,執行
lspci | grep VGA
看輸出。若獨立顯卡後邊顯示rev ff
,則其應當已經被關閉。(可以考慮用電池測試一下耗電情況XD)
如果一切順利,做以下兩步:
-
在
/etc/modules-load.d/bbswitch.conf
中加入bbswitch
-
在
/etc/modprobe.d/bbswitch.conf
中加入options bbswitch load_state=0 unload_state=1
之後重啓,若未報錯,則已載入成功,獨顯也該當關閉。
享受續航提升之事吧:P
以上方法已在3.10-lts內核測試,理論上適用於3.12之前的內核。而3.12及以上版本內核由於某些原因(也許是電源管理方案變更)會有問題,至今沒有解決現時狀況見下。
[2014.4.27]
3.12版內核沒發現怎麼關閉掉,bbswitch會有問題。
3.13沒怎麼測試。
3.14下不再需要bbswitch(實話是如果使用依然會有錯),內核已經接手這個工作,會自動關閉獨顯。但是續航沒有達到上邊用bbswitch時候的狀態,具體原因不確定。
Acer 5745G藍牙
自從用Arch以後,藍牙設備就是一個很令我糾結的東西。之前還有Windows的時候,每當需要用到藍牙,都要去Windows下把開關打開,然後回到Arch下使用。後來硬盤掛了,新買了一個就沒再裝Windows,藍牙也就一直沒有用。
這兩天無聊想買個藍牙耳機,順便想到筆記本的藍牙問題還沒解決,於是決定好好解決一下。
以前用別的發行版(比如U盤上的Kali)的時候,藍牙是默認開啓而且可以使用的;而且Arch上也可以使用。所以先確定問題不在內核或者軟件上。所以問題應該就在電源管理上。
我最初認爲藍牙和無線網卡是在一起的(因爲無線網卡上還有個東西),所以精力集中在尋找是不是哪個內核模塊控制的藍牙電源。
我的無線網卡所用的是ath9k,它的參數中有bt_ant_diversity和btcoex_enable兩個和藍牙有關的項目。嘗試使用modprobe加參載之,用wiki中給的一段bash腳本查看下,發現沒有什麼變化。這條路行不通。
後來偶然在/sys/devices/platform/acer-wmi/
看到一個叫rfkill的目錄,cd進去看到又有兩個目錄。分別cd進去並cat name,發現第一個是無線網卡,第二個居然寫的是藍牙!然後下載rfkill這個包,執行
rfkill list
發現藍牙設備(acer-bluetooth)的序號是2,只是被soft block了。之後執行
rfkill unblock 2
這時候如果有圖形化的藍牙控制前端(比如KDE或者Gnome一般都會帶),就可以看到藍牙設備的出現並正常使用了。
補註:
- 執行lshw看到藍牙設備是在USB控制器下的。在archwiki的bluetooth條目其實有一個關於USB藍牙設備的troubleshooting,上邊寫的和我的問題幾乎一樣。再次證實了仔細看wiki的重要性。
-
如果有人和我的電腦狀況類似,但是按上述執行沒有得到應有的結果,請檢查bluez以及相應的GUI前端是否安裝、bluetooth.service是否開啓。
- 我就忘了啓用bluetooth.service,所以在執行過rfkill unblock 2之後KDE沒有給什麼說法。之後又用hciconfig和hcitool折騰了好久都沒有解決。最後還是偶然想起沒有啓動服務=。=