XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    USB passthrough test reports in 7.5RC1

    Scheduled Pinned Locked Moved Development
    58 Posts 21 Posters 37.0k Views 10 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • F Offline
      fjen @olivierlambert
      last edited by

      @olivierlambert

      Actually, re-doing the procedure on a fresh VM, I actually got the same error... This doesn't happen with XCP-ng Center though.

      I can resolve it though by specifying the platform:device-model parameter.

      xe vm-param-set uuid=<uuid> platform:device-model=qemu-upstream-compat

      1 Reply Last reply Reply Quote 0
      • olivierlambertO Offline
        olivierlambert Vates 🪐 Co-Founder CEO
        last edited by

        @fjen

        So I tried USB passthrough with a simple USB stick, and it worked perfectly. The stick is passed to my Windows VM without any issue, from both XCP-ng 7.5 RC1 and XenServer 7.5

        You can see the "Vates (E:)" USB key dislayed here:

        0_1533241328309_usbpass.png

        VM is a Windows 2012 R2 64 Bits. Followed the xe CLI instruction with success.

        F D 2 Replies Last reply Reply Quote 0
        • F Offline
          fjen @olivierlambert
          last edited by

          @olivierlambert Ah thanks for the test! Guess the feature just doesn't play well with my Bluetooth dongle and mouse. 😞

          1 Reply Last reply Reply Quote 0
          • olivierlambertO Offline
            olivierlambert Vates 🪐 Co-Founder CEO
            last edited by olivierlambert

            I'll try tomorrow with a wireless dongle for keyboard/mouse.

            F 1 Reply Last reply Reply Quote 0
            • F Offline
              fjen @olivierlambert
              last edited by

              @olivierlambert Thank you! 😄

              1 Reply Last reply Reply Quote 0
              • A Offline
                Aimdev @Aimdev
                last edited by Aimdev

                @aimdev

                Update

                I removed all the rules except the allow all in /etc/xensource/usb-policy.conf
                The U-blox device was present when running /opt/xensource/libexec/usb_scan.py -d 🙂
                The device is present when running xe pusb-list 🙂
                The device is present using xcp-ng centre 🙂
                The configuration file clearly has an issue for me to resolve. 😞
                Followed instructions from @fjen , thanks for your efforts.
                got this on vm startup
                The value given is invalid
                field: platform:device-model when vm has VUSBs
                value: qemu-trad

                issued command
                xe vm-param-set uuid=<uuid> platform:device-model=qemu-upstream-compat
                Started vm
                cat /dev/ttyACM0 present and seeing gps messages. 🙂

                It appears the only way to get this to work is via the cli.

                Doing a reboot test next, fingers crossed, yes ok 🙂

                Thanks

                Aimee

                A 1 Reply Last reply Reply Quote 0
                • A Offline
                  Aimdev @Aimdev
                  last edited by

                  @aimdev said in USB passthrough test reports in 7.5RC1:

                  @aimdev

                  Update

                  I removed all the rules except the allow all in /etc/xensource/usb-policy.conf
                  The U-blox device was present when running /opt/xensource/libexec/usb_scan.py -d 🙂
                  The device is present when running xe pusb-list 🙂
                  The device is present using xcp-ng centre 🙂
                  The configuration file clearly has an issue for me to resolve. 😞
                  Followed instructions from @fjen , thanks for your efforts.
                  got this on vm startup
                  The value given is invalid
                  field: platform:device-model when vm has VUSBs
                  value: qemu-trad

                  issued command
                  xe vm-param-set uuid=<uuid> platform:device-model=qemu-upstream-compat
                  Started vm
                  cat /dev/ttyACM0 present and seeing gps messages. 🙂

                  It appears the only way to get this to work is via the cli.

                  Doing a reboot test next, fingers crossed, yes ok 🙂

                  Thanks

                  Aimee

                  Hi

                  Didn't survive the 7.5 RC1 to 7.5 upgrade, had to re configure it.
                  All working ok.

                  Aimee

                  1 Reply Last reply Reply Quote 0
                  • olivierlambertO Offline
                    olivierlambert Vates 🪐 Co-Founder CEO
                    last edited by

                    Yes that's normal config file are changed 🙂

                    1 Reply Last reply Reply Quote 0
                    • JianghuawJ Offline
                      Jianghuaw
                      last edited by

                      I met the same issue after upgrading my host to 7.5. The information at here is helpful. Thanks.

                      BTW I guess xcp-ng doesn't support vUSB hotplug. Is there anyone know if there is any plan to support hot plug/unplug? Maybe depend on Citrix's plan on XenServer? Is there any workaround to support that with qemu?

                      1 Reply Last reply Reply Quote 0
                      • D Offline
                        DustinB @olivierlambert
                        last edited by

                        @olivierlambert said in USB passthrough test reports in 7.5RC1:

                        @fjen

                        So I tried USB passthrough with a simple USB stick, and it worked perfectly. The stick is passed to my Windows VM without any issue, from both XCP-ng 7.5 RC1 and XenServer 7.5

                        You can see the "Vates (E:)" USB key dislayed here:

                        0_1533241328309_usbpass.png

                        VM is a Windows 2012 R2 64 Bits. Followed the xe CLI instruction with success.

                        Just an odd question. . .

                        Is that USB device available to just this one VM or to every VM?

                        1 Reply Last reply Reply Quote 0
                        • olivierlambertO Offline
                          olivierlambert Vates 🪐 Co-Founder CEO
                          last edited by olivierlambert

                          Not an odd question 🙂 You assign the USB device to one VM only. IDK if it's possible to assign it to multiple VMs, but it sounds unlikely!

                          D 1 Reply Last reply Reply Quote 0
                          • D Offline
                            DustinB @olivierlambert
                            last edited by

                            @olivierlambert the reason I ask is I recall considering this option back on XS6.5 and simply opt'd to not use USB devices any longer.

                            It was just more of a headache using USB than it was using network attached storage.

                            Now for USB license fobs etc it could be an issue, but I would get a USB to network adapter in that scenario.

                            1 Reply Last reply Reply Quote 0
                            • olivierlambertO Offline
                              olivierlambert Vates 🪐 Co-Founder CEO
                              last edited by

                              Back in 6.5, it was probably passing through the whole USB controller, which is different with USB passthrough on 7.5 (just release since this version), where you can pass one specific device without taking the whole USB controller 🙂

                              1 Reply Last reply Reply Quote 0
                              • C Offline
                                cowboy
                                last edited by

                                First off, thanks to @Aimdev and @fjen for providing a good write up of the steps taken to get USB passthrough to work.

                                I followed them all pretty much with out any difficulty and with no errors on anything for a Broadcom Bluetooth USB card (Broadcom Corp._BCM2045B) that's built into my laptop I'd like to pass through to a Linux VM.

                                And I get all the way up to where the USB device is correctly presented in the XCP-ng Centre application, but the device doesn't [seem to] appear at the OS level in dmesg | grep usbcore or lusb outputs in my guest OS VM.

                                However, since I didn't any failure to start the vm or other errors, I had not executed the final command: xe vm-param-set uuid=<VM UUID> platform:device-model=qemu-upstream-compat

                                But since the Broadcom chip still didn't appear in the guest Linux VM, I shutdown the VM and then executed the above command with the VM UUID.

                                But after a restart, the VM still doesn't see the Broadcom USB device.

                                Any idea what could be up or suggestions where I need to dig?

                                1 Reply Last reply Reply Quote 0
                                • X Offline
                                  xiaolou86 @fjen
                                  last edited by xiaolou86

                                  @fjen I also got the same error...

                                  INTERNAL_ERROR(xenopsd internal error: Call to usb reset failed: Forkhelpers.Spawn_internal_error("usage: usb_reset.py attach [-h] -d DOMID -p PID [-r RESET_ONLY] device\nusb_reset.py attach: error: argument -r: expected one argument\n", "", _))

                                  A 1 Reply Last reply Reply Quote 0
                                  • A Offline
                                    Adrian Fretwell @xiaolou86
                                    last edited by

                                    @xiaolou86 Did you find a resolution for this issue?

                                    1 Reply Last reply Reply Quote 0
                                    • stormiS Offline
                                      stormi Vates 🪐 XCP-ng Team
                                      last edited by

                                      For future reference, github issue related to USB passthrough: https://github.com/xcp-ng/xcp/issues/108

                                      AdrianFretwell created this issue in xcp-ng/xcp

                                      closed Starting a VM with USB passthrough results in Internal Server Error #108

                                      1 Reply Last reply Reply Quote 0
                                      • P Offline
                                        panixx
                                        last edited by

                                        No luck with passing through a zwave usb dongle. Have tried two different types:
                                        Aeon Labs Z-Stick Gen 5 (https://aeotec.com/z-wave-usb-stick)
                                        Nortek GoControl HUSBZ-1 (http://www.gocontrol.com/detail.php?productId=5)

                                        Tried both adding through XCP-NG Center and following the procedure above. I can see it added to the vm, but nothing shows in the guest (CentOS7 and Ubuntu Server 1604 and 1804).

                                        This stick contains both an 02 device type and 0a, both CDC device types it appears.

                                        R 1 Reply Last reply Reply Quote 0
                                        • R Offline
                                          redalert11
                                          last edited by

                                          working! i was able to pass through my AEOTEC zwave usb device.

                                          @fjen had a good write up i had to change it a little bit for me. follow step 1-4

                                          @fjen said in USB passthrough test reports in 7.5RC1:

                                          @olivierlambert Sure thing!

                                          Because I was passing through a USB Bluetooth dongle, I had to specifically create an "allow" entry in /etc/xensource/usb-policy.conf.

                                          1. Run lsusb and identify the device to be passed through.
                                          Bus 001 Device 002: ID 1b70:100f
                                          Bus 001 Device 003: ID 0764:0501 Cyber Power System, Inc. CP1500 AVR UPS
                                          Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
                                          Bus 001 Device 005: ID 0557:7000 ATEN International Co., Ltd Hub
                                          Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
                                          Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
                                          Bus 001 Device 006: ID 0557:2419 ATEN International Co., Ltd
                                          

                                          ......

                                          what i did different

                                          [root@xcp-ng ~]# nano /etc/xensource/usb-policy.conf

                                          change DENY: class=02 # Communications and CDC-Control to ALLOW: class=02 # Communications and CDC-Control
                                          also don't add the class to to your new line ALLOW:vid=0658 pid=0200

                                          my usb-policy.conf

                                          # When you change this file, run 'xe pusb-scan' to confirm
                                          # the file can be parsed correctly.
                                          #
                                          # Syntax is an ordered list of case insensitive rules where # is line comment
                                          #  and each rule is (ALLOW | DENY) : ( match )*
                                          #  and each match is (class|subclass|prot|vid|pid|rel) = hex-number
                                          # Maximum hex value for class/subclass/prot is FF, and for vid/pid/rel is FFFF
                                          #
                                          # USB Hubs (class 09) are always denied, independently of the rules in this file
                                          DENY: vid=17e9 # All DisplayLink USB displays
                                          ALLOW:vid=0658 pid=0200
                                          ALLOW: class=02 # Communications and CDC-Control
                                          ALLOW:vid=056a pid=0315 class=03 # Wacom Intuos tablet
                                          ALLOW:vid=056a pid=0314 class=03 # Wacom Intuos tablet
                                          ALLOW:vid=056a pid=00fb class=03 # Wacom DTU tablet
                                          DENY: class=03 subclass=01 prot=01 # HID Boot keyboards
                                          DENY: class=03 subclass=01 prot=02 # HID Boot mice
                                          DENY: class=0a # CDC-Data
                                          DENY: class=0b # Smartcard
                                          DENY: class=e0 # Wireless controller
                                          DENY: class=ef subclass=04 # Miscellaneous network devices
                                          ALLOW: # Otherwise allow everything else
                                          
                                          

                                          now run /opt/xensource/libexec/usb_scan.py -d

                                          [root@xcp-ng ~]# /opt/xensource/libexec/usb_scan.py -d
                                          [{"product-desc": "", "product-id": "0200", "description": "Sigma Designs, Inc.", "vendor-desc": "Sigma Designs, Inc.", "version": "2.00", "vendor-id": "0658", "path": "5-1", "serial": ""}]
                                          [root@xcp-ng ~]#
                                          
                                          

                                          reboot the server and you can now passthrough the usb using xcp-ng center

                                          P F 2 Replies Last reply Reply Quote 1
                                          • R Offline
                                            redalert11 @panixx
                                            last edited by

                                            This post is deleted!
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post