VirtualBox で USB デバイスを使用しようとすると、何が問題になるのでしょうか?

VirtualBox で USB デバイスを使用しようとすると、何が問題になるのでしょうか?

Ubuntu ホスト、XP ゲスト。

必要な USB デバイスを仮想マシンに接続すると、次のようになります。

USB デバイス Microchip Technology Inc. PICDEM FS USB Demo Board (C) 2004 を仮想マシン DevelXP に接続できませんでした。USB デバイスのプロキシ デバイスを作成できませんでした。(エラー: VERR_READ_ERROR)。結果コード: NS_ERROR_FAILURE (0x80004005) コンポーネント: コンソール インターフェイス: IConsole {8ab7c520-2442-4b66-8d74-4ff1e195d2b6}

$ lsusb
Bus 002 Device 029: ID 04d8:000c Microchip Technology, Inc. 

$ cat /etc/udev/rules.d/90-picdem.rules 
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="000c", GROUP="plugdev", MODE="660"

(このファイルなしでも試しましたが、変化はありませんでした)

$ grep dargaud /etc/group:
plugdev:x:46:dargaud
vboxusers:x:124:dargaud

$ dmesg
[103413.447464] usb 2-1.3: new full-speed USB device number 29 using ehci-pci
[103413.549055] usb 2-1.3: New USB device found, idVendor=04d8, idProduct=000c
[103413.549063] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[103413.549068] usb 2-1.3: Product: PICDEM FS USB Demo Board (C) 2004
[103413.549072] usb 2-1.3: Manufacturer: Microchip Technology Inc.

$ VBoxManage list usbhost
Host USB Devices:
UUID:               fbd0bac3-f283-46bc-9632-603471a932cb
VendorId:           0x04d8 (04D8)
ProductId:          0x000c (000C)
Revision:           0.0 (0000)
Port:               2
USB version/speed:  2/1
Manufacturer:       Microchip Technology Inc.
Product:            PICDEM FS USB Demo Board (C) 2004
Address:            sysfs:/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3//device:/dev/vboxusb/002/029
Current State:      Held

なぜ保留になっているのですか? 何が保留になっているのですか? 注: 他のカスタム USB カードは正常に動作します。ただし、これは古いカードなので、USB1/1.1/2 の問題である可能性があります。VM で USB 2.0 EHCI を一時的に無効にしましたが、変化はありませんでした。

より詳しい情報:

$ sudo udevadm info -q path -n /dev/bus/usb/002/029
/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3

$ sudo udevadm info -a -p /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3                      

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3':
    KERNEL=="2-1.3"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
    ATTR{bDeviceSubClass}=="00"
    ATTR{bDeviceProtocol}=="00"
    ATTR{devpath}=="1.3"
    ATTR{idVendor}=="04d8"
    ATTR{speed}=="12"
    ATTR{bNumInterfaces}==" 1"
    ATTR{bConfigurationValue}=="1"
    ATTR{bMaxPacketSize0}=="8"
    ATTR{busnum}=="2"
    ATTR{devnum}=="29"
    ATTR{configuration}==""
    ATTR{bMaxPower}=="100mA"
    ATTR{authorized}=="1"
    ATTR{bmAttributes}=="80"
    ATTR{bNumConfigurations}=="1"
    ATTR{maxchild}=="0"
    ATTR{bcdDevice}=="0000"
    ATTR{avoid_reset_quirk}=="0"
    ATTR{quirks}=="0x8"
    ATTR{version}==" 2.00"
    ATTR{urbnum}=="18"
    ATTR{ltm_capable}=="no"
    ATTR{manufacturer}=="Microchip Technology Inc."
    ATTR{removable}=="removable"
    ATTR{idProduct}=="000c"
    ATTR{bDeviceClass}=="00"
    ATTR{product}=="PICDEM FS USB Demo Board (C) 2004"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
    KERNELS=="2-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{devpath}=="1"
    ATTRS{idVendor}=="8087"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="2"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="8"
    ATTRS{bcdDevice}=="0000"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="660"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0020"
    ATTRS{bDeviceClass}=="09"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2':
    KERNELS=="usb2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="3"
    ATTRS{bcdDevice}=="0313"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="0000:00:1d.0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="26"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 3.13.0-29-generic ehci_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0002"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="EHCI Host Controller"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0':
    KERNELS=="0000:00:1d.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci-pci"
    ATTRS{irq}=="17"
    ATTRS{subsystem_vendor}=="0x1028"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0320"
    ATTRS{companion}==""
    ATTRS{enabled}=="1"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f"
    ATTRS{device}=="0x3b34"
    ATTRS{uframe_periodic_max}=="100"
    ATTRS{msi_bus}==""
    ATTRS{local_cpulist}=="0-3"
    ATTRS{vendor}=="0x8086"
    ATTRS{subsystem_device}=="0x040a"
    ATTRS{numa_node}=="-1"
    ATTRS{d3cold_allowed}=="1"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""


$ VBoxManage showvminfo DevelXP --details  
Name:            DevelXP
Groups:          /
Guest OS:        Windows XP (32 bit)
UUID:            79b38fbb-d0d5-4b78-9ee4-944050e4b4b8
Config file:     /home/dargaud/.VirtualBox/Machines/DevelXP/DevelXP.vbox
Snapshot folder: /home/dargaud/.VirtualBox/Machines/DevelXP/Snapshots
Log folder:      /home/dargaud/.VirtualBox/Machines/DevelXP/Logs
Hardware UUID:   79b38fbb-d0d5-4b78-9ee4-944050e4b4b8
Memory size:     2048MB
Page Fusion:     off
VRAM size:       64MB
CPU exec cap:    100%
HPET:            off
Chipset:         piix3
Firmware:        BIOS
Number of CPUs:  2
PAE:             off
Long Mode:       on
Synthetic CPU:   off
CPUID overrides: None
Boot menu mode:  message and menu
Boot Device (1): DVD
Boot Device (2): HardDisk
Boot Device (3): Not Assigned
Boot Device (4): Not Assigned
ACPI:            on
IOAPIC:          on
Time offset:     0ms
RTC:             local time
Hardw. virt.ext: on
Nested Paging:   on
Large Pages:     off
VT-x VPID:       on
VT-x unr. exec.: on
State:           running (since 2014-06-17T12:43:14.761000000)
Monitor count:   1
3D Acceleration: off
2D Video Acceleration: on
Teleporter Enabled: off
Teleporter Port: 0
Teleporter Address: 
Teleporter Password: 
Tracing Enabled: off
Allow Tracing to Access VM: off
Tracing Configuration: 
Autostart Enabled: off
Autostart Delay: 0
Default Frontend: 
Storage Controller Name (0):            IDE Controller
Storage Controller Type (0):            PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  2
Storage Controller Port Count (0):      2
Storage Controller Bootable (0):        on
IDE Controller (0, 0): /home/dargaud/.VirtualBox/HardDisks/XP.vdi (UUID: 93969496-17bb-46c2-9e56-a7c24b6e05f4)
IDE Controller (1, 0): Empty
NIC 1:           MAC: 080027A62FA1, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 1 Settings:  MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
NIC 2:           disabled
NIC 3:           disabled
NIC 4:           disabled
NIC 5:           disabled
NIC 6:           disabled
NIC 7:           disabled
NIC 8:           disabled
Pointing Device: PS/2 Mouse
Keyboard Device: PS/2 Keyboard
UART 1:          disabled
UART 2:          disabled
LPT 1:           disabled
LPT 2:           disabled
Audio:           enabled (Driver: ALSA, Controller: AC97)
Clipboard Mode:  Bidirectional
Drag'n'drop Mode: disabled
Session type:    GUI/Qt
Video mode:      1680x1050x32 at 0,0
VRDE:            disabled
USB:             enabled
EHCI:            enabled

USB Device Filters:

Index:            0
Active:           no
Name:             JMicron USB to ATA/ATAPI bridge [0100]
VendorId:         152d
ProductId:        2338
Revision:         0100
Manufacturer:     JMicron
Product:          USB to ATA/ATAPI bridge
Remote:           0
Serial Number:    43527262060A

Index:            1
Active:           yes
Name:             Cypress
VendorId:         04b4
ProductId:        8613
Revision:         
Manufacturer:     
Product:          
Remote:           0
Serial Number:    

Index:            2
Active:           no
Name:             Broadcom Corp 5880 [0101]
VendorId:         0a5c
ProductId:        5800
Revision:         0101
Manufacturer:     Broadcom Corp
Product:          5880
Remote:           0
Serial Number:    0123456789ABCD

Index:            3
Active:           yes
Name:             Microchip Technology Inc. PICDEM FS USB Demo Board (C) 2004
VendorId:         04d8
ProductId:        000c
Revision:         0000
Manufacturer:     Microchip Technology Inc.
Product:          PICDEM FS USB Demo Board (C) 2004
Remote:           
Serial Number:    

Available remote USB devices:

<none>

Currently Attached USB Devices:

<none>

Bandwidth groups:  <none>

Shared folders:  

Name: 'dargaud', Host path: '/home/dargaud' (machine mapping), writable
Name: 'lpscdata', Host path: '/informatique/dargaud' (machine mapping), writable
Name: 'D620', Host path: '/D620' (machine mapping), writable
Name: 'tmp', Host path: '/tmp' (machine mapping), writable

VRDE Connection:    not active
Clients so far:     0

Video capturing:    not active
Capture screens:    0
Capture file:       /home/dargaud/.VirtualBox/Machines/DevelXP/DevelXP.webm
Capture dimensions: 1024x768
Capture rate:       512 kbps
Capture FPS:        25

Guest:

Configured memory balloon size:      0 MB
OS type:                             WindowsXP
Additions run level:                 3
Additions version:                   4.2.18 r88780


Guest Facilities:

Facility "VirtualBox Base Driver": active/running (last update: 2014/06/17 12:43:25 UTC)
Facility "VirtualBox System Service": active/running (last update: 2014/06/17 12:44:01 UTC)
Facility "VirtualBox Desktop Integration": active/running (last update: 2014/06/17 12:44:23 UTC)
Facility "Seamless Mode": active/running (last update: 2014/06/17 12:43:25 UTC)
Facility "Graphics Mode": active/running (last update: 2014/06/17 12:43:25 UTC)

答え1

別の USB デバイス、Garmin スポーツウォッチでも同様の問題が発生します。

これが私の設定です:

  • ホスト: Ubuntu 14.04 上の VirtualBox 5.0.0 r101573、Oracle VM VirtualBox Extension Pack がインストール済み
  • ゲスト: Windows 7、VirtualBox Guest Additions がインストールされている

VM 設定でどの USB コントローラーを選択しても、VM を起動するたびに次のエラーが発生します。

USB デバイスのプロキシ デバイスの作成に失敗しました。(エラー: VERR_READ_ERROR)。

結果コード: NS_ERROR_FAILURE (0x80004005) コンポーネント: ConsoleWrap インターフェース: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

調査の結果、私はこう結論付けましたこれは、まだ未解決の状態にある悪名高いVirtualBoxのバグである可能性が高い。(正確には、欠陥が再発した)。VirtualBox チケット #5175詳細については、こちらをご覧ください。これは、何らかの形でそのHeld状態にあるデバイスの現在の状態に関係しています (これも、コマンドを実行して確認できますVBoxManage list usbhost)。

関連情報