題 強制單個USB 3.0端口作為USB 2.0使用


我有幾台Dell XPS 13機器出現左USB 3.0端口的間歇性故障,如中所述 這個帖子。 我丟失了數據到幾個外部硬盤上的靜默損壞/斷開連接。

有證據表明硬件設計缺陷(內部連接端口與控制器的電纜屏蔽不足)導致在USB 3.0協議下運行時出現中斷。因此,在軟件/固件更新中不太可能完全解決。

我正在尋找的是一個 軟件解決方案強制降級單個端口以使用USB 2.0,即使插入支持USB 3.0的設備也是如此。有些人報告說使用USB 2.0集線器取得了成功,但我正在尋找一種沒有額外硬件的解決方案。

Windows將USB控制器報告為 Intel(R) USB 3.0 eXtensible Host Controller。兩個端口都通過相同的根集線器。請告訴我是否需要提供有關控制器的更多詳細信息。

沒有BIOS選項可以切換USB速度 (事實證明,有,但沒有清楚地呈現)。如果可能的話,我希望其他端口在3.0運行。


4
2017-09-15 15:00


起源


這是不可能做到的。  即使有可能。你仍然會使用相同的電纜和USB 3.0接頭,你懷疑它沒有足夠好的屏蔽,這意味著問題仍然存在於USB 2.0速度。無論如何都使用相同的電纜。 - Ramhound
@Ramhound雖然這是真的,但軼事證據表明問題是針對USB 3.0頻率的。此外,我會對在Windows中將控制器全局降級到2.0的解決方案感興趣。 - Xan
你不能“降級”控制器。 USB 3.0控制器無法成為USB 2.0控制器。您總是可以通過添加更多屏蔽來解決問題(當然)我懷疑USB電纜連接到外部設備而不是內部插頭電纜(個人)。 - Ramhound
@Ramhound對於2.0客戶端設備,USB 3.0控制器可以回退到2.0操作。問題是,即使插入3.0設備,是否有可能在某處設置強制這種情況發生。我最初也懷疑設備電纜,但事實證明這是錯誤的,並且相同的設備/電纜在正確的港口。 - Xan
USB規範不支持您描述的內容。它支持將2.0設備插入3.0設備,但3.0控制器在發生這種情況時不會作為2.0控制器運行。它仍然是一個3.0控制器。 - Ramhound


答案:


這可能是不可能的,或者 非常 特定於設備。如果可能的話,它將取決於系統如何處理2.0 / 3.0兼容性。我希望低級硬件和協議檢測以及傳輸頻率管理在硬件/固件中處理 - 而不是操作系統。如果是這種情況,則完全由硬件供應商提供支持以強制驅動程序中的“遺留模式”。我強烈懷疑這通常是 - 如果有的話 - 完成。

有關詳細信息,請參閱硬件製造商的文檔。


2
2017-09-15 16:31



我的筆記本電腦在UEFI中有一個選項,可以在2.0模式而不是3.0模式下運行所有端口。 - Robin Hood
@RobinHood這是一個全有或全無。 OP希望挑選。 - Iszi


雖然這不是軟件解決方案,但如果使用USB 2延長線,則會阻止插頭中的5個USB 3引腳物理連接主機和設備之間進行USB 3握手的線路。 USB 2設備或電纜僅有4個引腳。當僅連接4個引腳時,USB 3端口將默認為USB 2信號通信。 USB 2延長線只能連接4條線,連接4個USB 2通信引腳。


12
2017-12-29 12:28



Upvoted,這是一個有用的觀點。雖然我的問題更多的是“事故預防”類型。 - Xan
我使用相同的技巧來強制外部驅動器機箱連接2.0,因為在3.0中運行時,它會在大型傳輸期間頻繁斷開連接。可能不是一個優雅的解決方案,但它的工作原理。 - Ivan Dossev
非常感謝@Robert Simpson。在我嘗試過的所有解決方案中,這是唯一有效的“解決方法”。我的問題與Ivan Dossev(即在傳輸大數據期間出現問題的外部硬盤驅動器機箱)非常相似。奇怪的是我借用了我朋友的希捷外置硬盤(帶有usb 3.0),它與我的usb 3.0左端口完美搭配。順便說一下,我正在使用Win 10,戴爾Inspiron 14.再次感謝! - Annie Lagang


這是可能的。它涉及更改xHCI控制器中的配置寄存器,因此它顯然是特定於芯片組的。這是在Linux上完成的。我想也應該可以在Windows上進行,但我不知道使用什麼實用程序。

要將兩個端口都設置為USB 2.0模式:

sudo setpci -H1 -d 8086:1e31 d8.l = 0

右端口3.0和左端口2.0:

sudo setpci -H1 -d 8086:1e31 d8.l = 1

右端口2.0和左端口3.0:

sudo setpci -H1 -d 8086:1e31 d8.l = 2

在d8(USB3_PSSEN)更改寄存器會將端口設置為USB 2.0模式,但它們仍在xHCI控制器上。要切換到EHCI,還必須在d0(XUSB2PR)更改寄存器。例如,要從EHCI控制器上運行兩個端口,您必須執行以下操作:

sudo setpci -H1 -d 8086:1e31 d8.l = 0

sudo setpci -H1 -d 8086:1e31 d0.l = 0

寄存器記錄在本數據表的第17.1節中。

http://www.intel.com/content/www/us/en/chipsets/7-series-chipset-pch-datasheet.html


4
2018-02-09 23:25



這些更改是永久性的,還是必須在引導時重新應用? - Xan
它們不是永久性的。它們必須在啟動時重新應用。 - Erik
遺憾的是:否則它仍適用於Win7。仍然是非常有用的信息。 - Xan
我認為這個實用程序可以用於在Windows上進行,但由於我自己沒有Windows,我無法測試它。 https://downloadcenter.intel.com/Detail_Desc.aspx?lang=eng&DwnldID=10316 - Erik
適用於Windows的pciutils(lspci,setpci)可在此處獲得: https://eternallybored.org/misc/pciutils/ - Erik


對於我的問題的系統特定答案,戴爾XPS 13有一個 USB Debug BIOS中的選項

啟用後,它會強制左USB端口進入2.0 / EHCI模式,而右端口則保持3.0。

如果這有助於解決原始問題,還有待觀察。 經過一些測試,它似乎確實有助於解決問題。這讓我或多或少地確定BIOS中的這個選項只是因為他們知道硬件設計問題。


2
2017-09-15 16:35



它對原始問題有幫助嗎? - branoholy
@branoholy是的,據我所知,端口問題消失了。 - Xan


我有一個xbox 360控制器,但我的HP Stream Notebook 11有usb 3.0,它需要usb 2.0。但是,如果您使用USB 2.0集線器,您將能夠獲得3.0速度,但具有2.0連接。

希望這有幫助, 可靠的人


-2
2017-11-09 09:54



這是完全錯誤的。如果您使用USB 2.0集線器,則不會獲得3.0速度,因為它不是3.0。 - cascer1