Usb
跳過 USB 設備的容器 ID 和 BOS 描述符查詢
嘗試執行
fastboot
命令時,傳輸總是錯誤的。快速搜尋指出與 USB 3.0 埠存在某些不兼容性。強制傳統 USB 2.0 模式在我的 BIOS 設置中不存在,並且在作業系統端也不可能,因此我將不得不依賴一個看起來至少可行的軟體解決方案,因為有幾個來源通過添加系統資料庫項在 Windows 上提供了解決方案:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100" /v "osvc" /t REG_BINARY /d "0000" /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100" /v "SkipContainerIdQuery" /t REG_BINARY /d "01000000" /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\18D1D00D0100" /v "SkipBOSDescriptorQuery" /t REG_BINARY /d "01000000" /f
因此,我的問題是:Linux 上的等效解決方案是什麼?
libusb
我試圖在 Linux 上搜尋 BOS 描述符和容器 ID,但除了來源之外無濟於事。相關
dmesg
日誌:[ 1467.568758] usb 1-1: new high-speed USB device number 8 using xhci_hcd [ 1467.718322] usb 1-1: New USB device found, idVendor=18d1, idProduct=d00d, bcdDevice= 1.00 [ 1467.718325] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1467.718326] usb 1-1: Product: Android [ 1467.718327] usb 1-1: Manufacturer: Google [ 1467.718327] usb 1-1: SerialNumber: 832ec5e4 ////// Here I executed `fastboot devices` [ 1476.552829] usb usb5-port1: over-current condition [ 1476.636501] usb usb6-port1: over-current condition [ 1484.336743] usb usb5-port1: over-current condition [ 1484.416485] usb usb6-port1: over-current condition [ 1487.100726] xhci_hcd 0000:00:14.0: USB core suspending port 1-1 not in U0/U1/U2 [ 1487.100879] usb 1-1: USB disconnect, device number 8 [ 1487.100987] usb 1-1: Failed to suspend device, error -32 [ 1490.074492] ucsi_acpi USBC000:00: UCSI_GET_PDOS returned 0 bytes
在深入研究各種文件之後,這是我設法解決問題的方法:
echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend echo '18d1:d00d:k' | sudo tee /sys/module/usbcore/parameters/quirks echo 1 | sudo tee /sys/bus/usb/devices/1-1/power/pm_qos_no_power_off echo | sudo tee /sys/bus/usb/devices/1-1/power/wakeup echo on | sudo tee /sys/bus/usb/devices/1-1/power/control echo -1 | sudo tee /sys/bus/usb/devices/1-1/power/autosuspend_delay_ms echo n | sudo tee /sys/bus/usb/devices/1-1/power/usb2_hardware_lpm
可能有點多餘,但它有效。根據插入的埠更改USB埠。我的設備是小米Mix 2S。根據需要更改
18d1:d00d
相關硬體。參考:https ://www.kernel.org/doc/html/v4.15/driver-api/usb/power-management.html https://www.kernel.org/doc/html/v4.15/admin -guide/kernel-parameters.html?highlight=usb-storage.quirks
我的推理是,
- 問題的發生有點不確定(有時在插入後,有時甚至在對引導載入程序進行幾次查詢之後),因此不太可能在
fastboot
其本身內。與權力相關的問題往往以這種方式表現出來,所以我懷疑這一點。lsusb -t
該設備 ( )沒有專用驅動程序,因此usbcore
“原始”USB 設備可能是興趣點。我仍然不太確定電源管理的底層機制以及它與繞過這兩個查詢的 Windows 解決方案的關係。據此,可能是BOS描述符和LPM容量之間的關係。
對此答案的進一步擴展將不勝感激。