USB接口無效(vmware usb device、unknown usb device)



由VMware USB驅動引發的USB接口“故障”解析

此前一直正常使用的Dell U2311h顯示器上面的一個USB接口突然無法使用了,表現爲插入什麼設備都無法識別,但可以聽到有設備插入和彈出的系統提示音。經過仔細觀察設備管理器,發現不管在那一個USB接口插入什麼設備,都會被識別爲unknown usb device,硬件ID爲USB\vid_0E0F & pid_0001,且提示驅動無法加載。

    故障分析:
        Dell U2311h顯示器上自帶了一個USB Hub,一共有四個USB接口,顯示器側面兩個,底部兩個,通過顯示器自帶的一根USB電纜連接到主板背部(顯示器上的四個USB接口是通過顯示器供電的,不是通過連接到主板背部的USB線纜供電)。這次出故障的USB接口是底部的第一個接口,經過反覆測試發現,USB設備只要插入其它三個USB接口或者機箱上的USB接口,都能正常使用,但一旦插入到顯示器底部對應的第一個USB,則出現上面的故障。

        既然插入和彈出設備時系統有聲音提示,那說明物理連接應該是沒有問題的,所以極有可能是軟件故障。通過google那個unknown usb device的硬件id,發現這個id對應的硬件和vmware有關,於是很容易聯想到是VMware的USB功能導致的,把VMUSBArbService這個服務停掉後,撥下對應的設備再次插上,這次終於被正常識別了。

    那麼爲什麼會出現這樣的問題呢?

    VMware是一個很有名的虛擬機軟件,衆所周知,虛擬機是指共享宿主機的硬件,在宿主系統裏面再運行一個或多個獨立的操作系統。由於涉及到硬件層的操作,所以虛擬機軟件必須要在宿主系統中加載很多驅動來實現虛擬系統的基本功能,比如:共享宿主機的網絡,USB設備,磁盤等等。在使用官方安裝包安裝的VMware的情況下,其會自動在宿主機系統服務裏面添加如下幾個服務且設爲自動啓動:
    VMAuthdService (用於實現虛擬系統的認證的服務)
    VMnetDHCP    (用於實現虛擬機的DHCP自動分配ip地址的服務)
    VMware NAT Service    (用於實現虛擬機共享宿主機網絡實現NAT的服務)
    VMUSBArbService        (用於實現共享宿主機USB設備的服務)
    VMwareHostd        (這個是vmware 9.0及以後新增的服務)

    問題就出在VMware USB這個服務上面。這個服務的主要用於把接入宿主機的USB設備接入到虛擬系統中這個功能,這個功能具體是如何實現我們不必深究,但過程有必要說一下。當把一個USB設備插入宿主機之後,vmware會默認把這個設備直接接入虛擬系統中去(除非在虛擬機USB選項裏面禁用了自動接入USB設備這個功能),此時,VMware就會爲這個USB設備加載一個名叫VMware USB Device的驅動,推測這個驅動就是用於把USB設備接入虛擬系統中。正常情況下,這個驅動加載不會出問題,驅動加載完成之後,USB設備就會被接入到虛擬系統中去,而在宿主系統中這個USB設備就會變成VMware USB Device這個設備,而不再是原來的設備名了,也就是說此時該USB設備只能在虛擬系統裏面使用,宿主機就已經無法再使用這個USB設備了。

    VMware對於USB設備的接入不知道是以什麼樣的方式來識別的,之所以會造成上面的“故障”,很明顯在加載VMware USB Device這個驅動的時候出了問題,造成了該驅動無法被正常加載,然後就會出現一個unknown usb device,如此一來,這個設備在宿主機和虛擬機都無法使用了,也就造成了對應的USB接口壞掉了的假象。

    當然這只是推測,具體到底是什麼情況還不得而知。而且奇怪的是,假設VMware USB Device這個驅動未被正常加載,那應該只是對於那一個設備無法正常使用,而不應該造成那個USB接口都不能使用。當然這可能也是VMware 的一個小bug了吧。

    最後,推薦使用Vmware的朋友們可能把VMUSBArbService和VMwareHostd這兩個服務取消開機自動啓動(當然前提是用不到把USB設備接入到虛擬系統中這個功能),改成手動啓動即可,這樣開機時可能會快一點點。



此文轉自:http://blog.sina.com.cn/s/blog_5f2e119b0101l54h.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章