搜索
Table_bottom

标签云
Table_bottom

分类
Table_bottom

声明
文章若未特別註明,皆採用 知识共享许可协议 請自覺遵守
Table_bottom

鏈。。。
Table_bottom

存档
Table_bottom

匆匆过客
88245
Table_bottom

功能
Table_bottom

解決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. 過熱之說(網址1 網址2
    • 其中說道:“這極爲可能是硬件問題(failure)而不是驅動或者內核bug。USB有‘電流過載(over-current)保護’,會在接口電量消耗過大時觸發。”
    • 解決方案是:“拔下所有USB設備,關閉電源,等一兩分鐘。然後接回所有設備並啓動系統。”
  2. 驅動bug之說(網址
    • 該論壇主題中,許多人遇到了這樣的問題;
    • 2樓(Rocket2DMn)提出了一個解決方案:
      sudo rmmod ehci_hcd
      並說該問題有時候會發生在USB2.0設備上,但他也不清楚究竟是如何觸發的;
    • 再下面9樓(jhoderd)提出卸載ehci驅動模塊會導致無法使用高速USB,他也很糾結這個問題。

對於我碰到的問題,分別(是的我碰到了好幾次)嘗試上面兩個方案的結果如下:

  1. 分爲兩個階段,貌似管用
    1. 關機,睡覺起來之後再開,當時沒有再遇到問題;
    2. 開了一段時間以後(電腦服役五年了且散熱不好,最近濟南氣溫也比較高)溫度又昇上去(九十度),想起來再試,再次出現問題。
  2. 和論壇主題中說的解決方案有一定出入
    1. 卸載ehci_hcd模塊時候提示被ehci_pci模塊依賴,無法卸載;
    2. 同時卸載ehci_pci、ehci_hcd模塊之後所有(?)USB設備均不可使用;
    3. 重新裝載ehci_pci之後均再次工作,且未再出現問題。

在尋找問題過程中,還有過其他猜想,但經嘗試發現當可排除。猜想、原因及嘗試方案(結局均爲“問題依舊”,故不再贅述)如下:

  1. USB接口問題
    • 原因:電腦服役多年,且已知某接口可能接觸不良
    • 方案:更換到其他接口上(共3個USB2.0、1個eSATA/USB)
  2. USB接口供電/休眠問題
    • 原因:開機自動啓動powertop進行調節,其中包括USB接口自動休眠
    • 方案:關閉所有相關項目的自動調節功能
  3. 內核bug
    • 原因:出現該問題前兩天剛剛把內核更新到4.1.2
    • 方案:使用3.14.48(arch官方源中的linux-lts)內核

雖然就目前來看,問題得到解決,但是由於不清楚具體問題何在,難保日後不會再碰到。

如哪位知道具體問題何在,煩勞周知,多謝!