引言:?jiǎn)挝桓鼡QPC,加密狗插入到新PC的USB接口上后無(wú)法識(shí)別。經(jīng)過(guò)一番檢查和測(cè)試,發(fā)現(xiàn)是因?yàn)檫@個(gè)接口是USB 3.0的,接KVM和U盤(pán)沒(méi)問(wèn)題,但不兼容加密狗。通過(guò)修改xHCI PCI Configuration Space,將USB接口從3.0轉(zhuǎn)換為2.0模式,實(shí)現(xiàn)了在3.0接口上識(shí)別該加密狗。
單位有一臺(tái)PC,安 裝了USB Over Network服務(wù)器端,用于共享USB設(shè)備。該P(yáng)C共有6個(gè)USB接口,其中5個(gè)口連接加密狗,剩下的一個(gè)口用于連接KVM。因其性能不能滿足需要,所以找了一臺(tái)新的PC機(jī)(也是6個(gè)USB接口)將其替換。新PC上安裝好Windows 2008系統(tǒng)和USB Over Network服務(wù)器端后,從舊PC上逐一拔下USB加密狗,插入到新PC的USB接口上并安裝驅(qū)動(dòng),結(jié)果第五個(gè)加密狗插入后無(wú)法識(shí)別。
經(jīng)過(guò)一番檢查和測(cè)試,發(fā)現(xiàn)原來(lái)新PC最后兩個(gè)USB接口是USB 3.0的,接KVM和U盤(pán)沒(méi)問(wèn)題,但不兼容加密狗。
由于該P(yáng)C已無(wú)可用USB接口,若要連接加密狗,有兩個(gè)辦法,一是接一個(gè)USB Hub到2.0接口上,通常可擴(kuò)展出四個(gè)USB接口。二是想辦法將USB接口從3.0轉(zhuǎn)換為2.0,也就是讓操作系統(tǒng)把3.0接口識(shí)別成2.0。
經(jīng)測(cè)試,接USB Hub的辦法可行,只是有點(diǎn)兒影響美觀。
如何將USB接口識(shí)別成2.0呢?本人在網(wǎng)上找了一下,有修改BIOS的,也有修改xHCI PCI Configuration Space的。修改BIOS,一般是開(kāi)機(jī)進(jìn)如BIOS后,在Config-USB菜單下,將USB 3.0 Mode修改為Disabled。只可惜在這臺(tái)PC的BIOS里沒(méi)找到相關(guān)的設(shè)置。于是我們采用另一種辦法——修改xHCI PCI Configuration Space。關(guān)于具體參數(shù)值的含義可參考Intel 7 Series/C216 Chipset Family Platform Controller Hub數(shù)據(jù)手冊(cè)(注:下文簡(jiǎn)稱Intel手冊(cè))。
此外,修改配置還需要用到一款軟件——PCI Utilities。軟件下載并解壓到C盤(pán)后,以管理員身份打開(kāi)命令行窗口, 將當(dāng)前目錄切換到PCI Utilities文件夾。
下面會(huì)用到兩個(gè)程序文件 lspci和 setpci。lspci用于顯示PCI總線和設(shè)備的信息,setpci用于修改PCI配置。
第一步,先用lspci查找USB 3.0接口信息。Chipset Family USB xHCI Host Controller[8086:1e31] (rev 04)
00:14.0表示總線和插槽,8086:1e31為廠商標(biāo)識(shí)和設(shè)備標(biāo)識(shí),不同的設(shè)備可能標(biāo)識(shí)也不同。
為更多地了解setpci命令的修改結(jié)果,也為了以后可以恢復(fù)設(shè)置,修改前先用lspci命令將USB 3.0控制器當(dāng)前情況保存下來(lái)(如圖 1)。注意 d0行的值,下面的修改影響的就是這一行。
第二步,關(guān)閉USB 3.0接口的SuperSpeed能力。
(注 :Intel手 冊(cè)17.1.35部分這樣描述:“When set to 0,the port's SuperSpeed capability is not visible to the xHC.”)
查 看Configuration Space的修改情況,如圖2所示。
第三步,實(shí)現(xiàn)將連接到USB 3.0接口上的設(shè)備交由EHCI1主控器處理。
圖1 保存USB 3.0控制器當(dāng)前情況
圖2 查看Configuration Space的修改情況
圖3 再次修改Configuration Space的情況
(注:Intel手 冊(cè) 17.1.33部分這樣描述:“When set to 0, this bit routes all the corresponding USB 2.0 port pins to the EHCI controller (D29:F0) and RMH #1. The USB 2.0 port is masked from the xHC and the USB 2.0 port's OC pin is routed to the EHCI controller(D29:F0).”)
再次查看Configuration Space的修改情況,如圖3所示。修改到此結(jié)束。
將加密狗接到USB 3.0接口,系統(tǒng)順利地識(shí)別出來(lái)。
不過(guò),新的問(wèn)題又出現(xiàn)了。系統(tǒng)重啟后,上面的設(shè)置會(huì)失效。解決辦法是,寫(xiě)一個(gè)批處理程序usb3to2.bat,內(nèi)容如下:
然后添加計(jì)劃任務(wù),讓系統(tǒng)啟動(dòng)時(shí)執(zhí)行usb3to2.bat即可。
這是一個(gè)功能強(qiáng)大可靠、使用方便的USB設(shè)備共享解決方案,可以允許分享和獲取本地或者網(wǎng)上的USB設(shè)備。可以通過(guò)網(wǎng)絡(luò)遠(yuǎn)程訪問(wèn)指定的USB接口的軟件。分為USB Over Network Client和USB Over Network Server。Server相當(dāng)于服務(wù)器端安裝在提供USB內(nèi)容的電腦上,Client相當(dāng)于客戶端安裝在其他電腦上用來(lái)訪問(wèn)Server端的USB內(nèi)容。在Client上輸入Server端電腦的IP地址就可以訪問(wèn)。
Intel 7 Series/C216 Chipset Family Platform Controller Hub數(shù)據(jù)手冊(cè)下載地址: