WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud Foundation
  • VKS
  • Homelab
    • Resources
    • Nested Virtualization
  • VMware Nostalgia
  • Apple
You are here: Home / ESXi / How to passthrough USB Keyboard/Mouse HID and CCID devices to VM in ESXi?

How to passthrough USB Keyboard/Mouse HID and CCID devices to VM in ESXi?

05.13.2020 by William Lam // 66 Comments

About a month back I had received an interesting tidbit from Darius Davis (VMware Engineer) after helping a customer solve an interesting problem and Darius thought this could be a useful blog post to share. Funny enough, a couple of weeks after that conversation, a simliar issue was being faced by another customer and luckily I was able to share with them the solution and also validate the specific configuration that was needed.

The customer that Darius was helping out had two VMs running on ESXi which they wanted to configure several passthrough devices. In addition to a PCI passthrough of a GPU, they also wanted to passthrough independent USB keyboard and mouse to each individual VM. PCI passthrough to a VM is nothing new but passing through a USB keyboard/mouse also known as Human Interface Devices (HID) to a VM is generally not expected. The physical ESXi host just assumes these type of USB devices are meant for it to consume.

In addition to HID USB devices, there are also Chip Card Interface Devices (CCID) USB devices like a smart card reader which customers may also want to passthrough to a VM. The latter use case was what I ended up helping the customer out with. To passthrough HID/CCID USB devices, the following steps are required which will include changes to the ESXi host.

Step 1 - Add the following two VM Advanced Settings for all USB CCID/HID devices that you wish to enable passthrough:

HID USB Devices:

usb.generic.allowHID = "TRUE"
usb.quirks.device0 = "0xXXXX:0xYYYY allow"

CCID USB Devices:

usb.generic.allowCCID = "TRUE"
usb.quirks.device0 = "0xXXXX:0xYYYY allow"

where 0xXXXX = vendorId and 0xYYYY = deviceId (e.g 0x03f0:0x0024) which was retrieved from the previous step

To list all USB devices and get their vendor and device ID, you can use the lsusb command found within the ESXi Shell and below is an example listing out both my USB Mouse and Keyboard.

lsusb -v | grep -E '(^Bus|HID)'
Bus 001 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
Bus 002 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
Bus 001 Device 003: ID 8087:0026 Intel Corp.
Bus 001 Device 004: ID 0781:5591 SanDisk Corp. Ultra Flair
Bus 001 Device 002: ID 05fe:0011 Chic Technology Corp. Browser Mouse
    iConfiguration          4 HID Mouse
        HID Device Descriptor:
          bcdHID               1.00
Bus 001 Device 005: ID 046d:c31d Logitech, Inc. Media Keyboard K200
        HID Device Descriptor:
          bcdHID               1.10
        HID Device Descriptor:
          bcdHID               1.10

Step 2 - We need to make the USB arbitrator service aware of these USB device quirks by adding the usb.quirks.deviceN string to /etc/vmware/config file. In my example above, I want to enable passthrough for both my Mouse and Keyboard device, so the following entries would be appended:

usb.quirks.device0 = "0x05fe:0x0011 allow"
usb.quirks.device1 = "0x046d:0xc31d allow"

Step 3 - Lastly, we need to append the following string to the ESXi boot option to disable the VMkernel from claiming HID USB devices.

CONFIG./USB/quirks=0xXXXX:0xYYYY::0xffff:UQ_KBD_IGNORE

where 0xXXXX = vendorId and 0xYYYY = deviceId (e.g 0x03f0:0x0024)

The easiest way to append this to the boot option is by editing /bootbank/boot.cfg rather than manually typing this during the initial boot up (SHIFT+O)

Note1: This is not required for CCID devices or mouse devices as they are not claimed by ESXi

Note2: The USB quirks are given in sets of five parameters - vendorID:deviceID:minRevision:maxRevision:quirkName If you wish to specify multiple devices, you will need to ensure all five parameters are included. Here's an example for specifying two USB devices: CONFIG./USB/quirks=0x05fe:0x0011::0xffff:UQ_KBD_IGNORE:0x046d:0xc31d::0xffff:UQ_KBD_IGNORE

Step 4 - A system reboot of your ESXi host will be required for the changes to go into effect. Once your ESXi host is available, you can use the vSphere H5 Client or Embedded ESXi Host Client to attach the USB devices. For vCenter Server, click on "Add New Device" and select "Host USB Device" and for ESXi, click on "Add other device" and select "USB Device".

More from my site

  • Quick Tip - Automating cpuUniformityHardCheckPanic configuration for ESXi Kickstart with USB
  • Quick Tip - Audit vSphere VMs configured with USB Controllers
  • Google Coral USB Edge TPU Accelerator on ESXi
  • USB Network Native Driver Fling for ESXi 8.0 Update 1
  • How to recover ESXi installed on USB device after disabling vmkusb module?

Categories // ESXi Tags // CCID, HID, usb

Comments

  1. *protectedGreg W says

    05/13/2020 at 7:04 am

    Thanks for sharing. So for additional devices you would increase deviceX number, like this:?

    usb.quirks.device0 = "X:Y allow"
    usb.quirks.device1 = "X:Y allow"

    Reply
    • William Lam says

      05/13/2020 at 9:01 am

      That's correct

      Reply
  2. *protectedJeff says

    05/13/2020 at 7:41 am

    Is this method also conpatible with esxi 6.0 ?

    Reply
    • William Lam says

      05/13/2020 at 9:02 am

      Jeff,

      I'm not sure, probably easiest to give it a try. I'm sure you know, 6.0 is already EOL and you or the customer should think about upgrading to a supported version 🙂

      Reply
  3. *protectedJeff says

    05/13/2020 at 8:26 am

    lsusb do not show any usb hid device in esxi 6.

    Reply
    • *protectedYeahman says

      05/14/2020 at 1:37 am

      Same here 🙁 ..cannot see hid devices with lsusb

      Reply
      • William Lam says

        05/22/2020 at 7:32 am

        Apologies for the delay, I was waiting to hear back from Engr. It looks like a few additional steps were required which I've manually confirmed myself. I've also included an example of using `lsusb` to help list out the HID/CCID devices. Please see the updated article

        Reply
  4. *protectedRen says

    05/14/2020 at 12:56 pm

    How do i identify which usb port in esxi is which port i use in linux ? I passed thru all usb ports to a vm for home automation donhle but the dongle only uses 1 port. Can't figure out whats what.

    Reply
    • William Lam says

      05/22/2020 at 7:32 am

      I've updated the article with an example `lsusb` command, see if that helps

      Reply
  5. *protectedRen says

    05/22/2020 at 9:18 am

    lsusv -v returns nothing on mine...?

    Reply
  6. *protecteddas1996 says

    06/04/2020 at 12:51 pm

    Where exactly in boot.cfg does the string in step 3 go?

    Reply
    • *protecteddas1996 says

      06/04/2020 at 1:05 pm

      Also, which vendorID & deviceID go in there? That of the keyboard, mouse, both? If both, then multiple lines are used (since 2 different xxxx:yyyy values)?

      Maybe post an example using your keyboard/mouse from earlier?

      Reply
      • William Lam says

        06/04/2020 at 1:39 pm

        Which step are you referring to? The instructions are detailed in each step which includes where boot.cfg is located 🙂

        Reply
        • *protecteddas1996 says

          06/04/2020 at 1:49 pm

          Thanks for the quick reply.

          STEP 3

          I know where boot.cfg is located, but _WHERE_ in boot.cfg does that string go?

          Also, it's unclear what vendor/device id's are used?

          Where is 0x03f0:0x0024 coming from? You reference a previous step but I don't see it.

          Reply
          • William Lam says

            06/04/2020 at 2:39 pm

            Re: boot.cfg - This is the kernelopt line just like any other kernel setting. Assuming readers have basic understanding of ESXi

            Re: Vendor/Device ID - Its immediately below the section where it says how to retrieve these IDs via lsusb

  7. *protecteddas1996 says

    06/04/2020 at 2:47 pm

    My current kernelopt looks like this:

    kernelopt=installerDiskDumpSlotSize=2560 no-auto-partition

    So with your addition it should look like

    kernelopt=installerDiskDumpSlotSize=2560 no-auto-partition CONFIG./USB/quirks=0xXXXX:0xYYYY::0xffff:UQ_KBD_IGNORE

    In case your software word wraps, the above is all on a single line, with a space between the n (in partition) and C (in CONFIG).

    Reply
    • William Lam says

      06/04/2020 at 2:56 pm

      correct

      Reply
      • *protectedHas says

        06/12/2020 at 12:49 pm

        Hi

        I have tried this and had no luck - did anyone else have any luck getting this to work?

        I am using ESXI 6.7 update 3

        Reply
      • *protectedMark Kundinger says

        11/15/2023 at 2:36 pm

        hello from two years later. I bumped into the problem where I didn't know I needed to add the CONFIG./USB string to the end of the existing kernelopt line (I thought it was an entirely new line in the file). It might be worth slighly appending the writeup to mention this so other doofuses like me don't make the mistake.

        Reply
  8. *protectedOliver Lis (@Oliverf0x) says

    06/18/2020 at 8:53 am

    Just tried that on my 7.0 Host, because if you Passtrough an USB PCIe Card to a VM which has USB Devices/Cables attached, the corresponding VM doesn't boot (stuck before BIOS/UEFI).

    If you remove the USB Devices/Cables before the VM starts, and connect it after the VM is powered On everything works..

    Sooo 🙂

    The lsusb -v | grep -E '(^Bus|HID)' command gave me the following interesting Devices:

    Bus 001 Device 010: ID 1e7d:2e22 ROCCAT
    HID Device Descriptor:
    bcdHID 1.00
    HID Device Descriptor:
    bcdHID 1.11
    can't get device qualifier: Resource temporarily unavailable
    Bus 001 Device 011: ID 046d:c223 Logitech, Inc. G11/G15 Keyboard / USB Hub
    Bus 001 Device 012: ID 046d:c226 Logitech, Inc. G15 Refresh Keyboard
    HID Device Descriptor:
    bcdHID 1.10
    HID Device Descriptor:
    bcdHID 1.10
    can't get device qualifier: Resource temporarily unavailable
    Bus 001 Device 013: ID 046d:c227 Logitech, Inc. G15 Refresh Keyboard
    HID Device Descriptor:
    bcdHID 1.11
    can't get device qualifier: Resource temporarily unavailable
    Bus 001 Device 014: ID 046d:0a5b Logitech, Inc. G933 Wireless Headset Dongle
    HID Device Descriptor:
    bcdHID 1.11

    My Mouse is the entry called ROCCAT with the ID 1e7d:2e22 - easy.

    And my Keyboard is 046d:c226 (the other entries are the integrated USB Hub and LCD Display on this Keyboard).

    Making the change to the boot.cfg was easy:
    kernelopt=autoPartition=FALSE CONFIG./USB/quirks=0x046d:0xc226::0xffff:UQ_KBD_IGNORE

    And voila!
    The Keyboard entry is listed and works within the VM!.

    But the mouse isn't available from the list of USB Host Devices...

    I tried adding another CONFIG./USB/quirks entry with the IDs from my mouse after the Keyboard-Entry removes the Keyboard from the USB Host List but the mouse is available 🙁

    Trying something like this also didn't worked:
    CONFIG./USB/quirks=0x046d:0xc226:0x1e7d:0x2e22::0xffff:UQ_KBD_IGNORE

    It seems like only the last CONFIG./ entry is used. Is there a way to add two devices? Or did something with the behavior for a mouse changed within 7.0?

    Another simple Dell Mouse also doesn't get recognized

    Reply
    • *protectedNeil says

      06/22/2020 at 9:14 am

      I believe Quirks can be chained in the boot.cfg file like so: CONFIG./USB/quirks=0x2047:0x0318::0xffff:UQ_KBD_IGNORE:0x0557:0x2419::0xffff:UQ_KBD_IGNORE:0x2588:0x0001::0xffff:UQ_KBD_IGNORE

      Use a single : as the separator. Everything has to be on the same line.

      Reply
      • *protectedOliver Lis (@Oliverf0x) says

        06/23/2020 at 2:25 am

        Thank you for this hint!

        Now the Mouse and Keyboard are given to the VM 🙂
        https://imgur.com/a/lk6p4EH

        When i'm at home after work i can try this out, but i expect that it will work.

        And with that i can update my ESXi with the VR-VM to 7.0 🙂

        (Downgraded to 6.7 because of the USB PCIe Passtrough).

        Reply
        • *protectedOliver Lis (@Oliverf0x) says

          08/03/2020 at 6:57 am

          Just wanted to give an update.

          Passing my Devices (Keyboard, G930 Headset and Mouse, 3d printer) worked.

          But after some minutes the USB reconnecting party started and the VM got pretty laggy and no inputs where recognized by the Keyboard or mouse.

          After the vm was responsive again the headset was "lost" so i went back to the passtroughed USB PCIe "solution" (even tough i need to detach and re-attach the devices, but maybe we get a solution to that 😉 ).

          Reply
          • *protectedshroomhead says

            04/21/2021 at 8:35 am

            hi,

            have you found a solution for this? i have the same problem but i can't passtrough the usb controllers so im stuck with this.. 🙁

          • *protectedJeff says

            04/21/2021 at 12:26 pm

            Hi,

            I gave up on trying to get ESXi to leave a keyboard for the Windows VM, and bought one of these cards:

            High Point 4-Port USB 3.0 PCI-Express 2.0 x 4 HBA RocketU 1144D $109
            https://www.amazon.com/gp/product/B015CQ8DCS/ref=ox_sc_act_title_1?smid=ATVPDKIKX0DER&psc=1

            It lets me PCI pass through some or all of the USB ports to the VM, and has been working flawlessly with the keyboard, mouse, and headset for weeks now.

  9. *protectedAl says

    06/26/2020 at 10:28 am

    I can get the mouse to show up, but never the keyboard, I changed the keyboard and made the changes accordingly. does this method work on 6.7 U3?

    I dont think the boot.cfg is taking the input to ignore the keyboard input (CONFIG./USB/quirks=0x033a:0x0318::0xffff:UQ_KBD_IGNORE) i put it right after no-auto-partition

    Reply
    • *protectedAsaf says

      01/26/2022 at 5:18 am

      Keyboard ignore didn't work for me too, because appended "kernelopt" parameter "CONFIG./USB/quirks=..." needs to be in the same line after previous parameter

      Not in two lines ("Return" char), as shown in original post and all over this discussion

      Once fixed an reboot, keyboard appears under host USB devices to add as well

      Reply
  10. *protectedjbperrin88jbperrin says

    07/02/2020 at 4:44 am

    Hi there !

    I'm using ESXI 6.7 on intel NUC6I7KYK.

    I'm successfully passthrough iGPU but still no luck with keyboard and mouse.

    I've try your way .... still failed !

    Bus 001 Device 005: ID 1f75:0917 Innostor Technology Corporation (esxi host installed THERE)
    Bus 001 Device 004: ID 8087:0a2b Intel Corp.
    Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver (logitech wireless keyboard)
    Bus 001 Device 002: ID c0f4:01b0 (other wired keyboard)
    Bus 001 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub

    Can't passthrough complete PCI USB (maybe cause the esxi host is in a usb key ..)

    cat /etc/vmware/config
    libdir = "/usr/lib/vmware"
    authd.proxy.nfc = "vmware-hostd:ha-nfc"
    authd.proxy.nfcssl = "vmware-hostd:ha-nfcssl"
    authd.proxy.vpxa-nfcssl = "vmware-vpxa:vpxa-nfcssl"
    authd.proxy.vpxa-nfc = "vmware-vpxa:vpxa-nfc"
    authd.fullpath = "/sbin/authd"
    usb.quirks.device0 = "0x046d:0xc52b allow"
    usb.quirks.device1 = "0xc0f4:0x01b0 allow"

    cat /bootbank/boot.cfg
    bootstate=0
    title=Loading VMware ESXi
    ++++

    CONFIG./USB/quirks=0x046d:0xc52b::0xffff:UQ_KBD_IGNORE
    CONFIG./USB/quirks=0xc0f4:0x01b0::0xffff:UQ_KBD_IGNORE

    and also add to VMX file :

    usb.generic.allowHID = "TRUE"
    usb.generic.allowLastHID = "TRUE"
    usb.quirks.device0 = "0x046d:0xc52b allow"
    usb.quirks.device1 = "0xc0f4:0x01b0 allow"

    Can you please , help me ?

    Reply
    • William Lam says

      07/02/2020 at 6:15 am

      It doesn't matter if ESXi is using on a USB device. Can you debug by first attempting the keyboard before proceeding the mouse? Also, you don't need to specify mouse entry in Step 3 as mentioned.

      Reply
      • *protectedAlex says

        07/20/2020 at 12:41 am

        esxi 6.5U3 on Asus Z370-A. I did it with the mouse, but it didn’t work with the keyboard. how can debug ? what logs to check ? Can you please , help me ?

        Reply
  11. *protectedPatrick says

    10/11/2020 at 2:12 pm

    I am loocking for a way to connect an usb webcam to a virtual server. I tired it with the mentioned settings, but I still get only a black screen from the webcam. Do you have any idea how that can be done?

    Thanks and regards

    Reply
  12. *protecteddas1996 says

    10/12/2020 at 10:16 pm

    Has anyone been successful passing through a logitech unifying receiver?

    Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver

    Seems no matter what, I can't get it to show up as a passthrough device.

    Tried kernel option "UQ_HID_IGNORE" instead of KBD still with no success. The dongle identifies itself as both, a keyboard, mouse and some unidentified device.

    Thoughts?

    Reply
  13. *protecteddas1996 says

    10/13/2020 at 1:36 pm

    My current esxi box has an additional asmedia usb controller, so for quite some time i've been passing it through to windows to allow for the wireless keyboard/mouse connectivity.

    I had hoped the steps in this blog would work to passthrough the logitech receiver but no go.

    At some point i'll upgrade the server to a board without the additional usb controller. One option is to buy a pcie card, but seems thats a bit of a crapshoot too in terms of stability.

    I was reading elsewhere about USB over IP. https://blog.rylander.io/2016/12/01/passthrough-usb-keyboard-and-mouse-to-vm-on-esxi/

    While his case use isn't identical to mine, it was worth exploring virtualhere (https://www.virtualhere.com/home) .

    In essence it's a client/server relationship where the usb device runs on some other device. The client/server interact over ip. The free version allows for a single usb device per server. Perfect in my case as its just the dongle.

    The server turned out to be an access point running asusmerlin firmware in the same room as the esxi box. The AP already does a few other things so entware was already installed. Just a matter of installing the generic arm version of the server, pointing the config file to the vid/pid of the dongle and setting up the daemon to auto start when the ap is rebooted.

    On the windows side the client installs a virtual usb driver. There's options to allow it to autoconnect when the program starts (just place in the windows startup folder).

    Keyboard response seems fairly real time (AP is wired to rest of network) without any issues. We'll see how it works over the next week. Hopefully it proves stable.

    Reply
  14. *protecteddas1996 says

    10/25/2020 at 7:04 pm

    Decided to give this another shot on a test machine (esxi 7 update 1). Followed all the steps. It works! I'm not sure what was differently before. It boiled down to several steps

    1) /bootbank/boot.cfg kernel option edit -
    CONFIG./USB/quirks=0x046d:0xc52b::0xffff:UQ_KBD_IGNORE

    2) /etc/vmware/config edits
    usb.quirks.device0 = "0x046d:0xc52b allow"

    3) .vmx edits (2)
    usb.quirks.device0 = "0x046d:0xc52b allow"
    usb.generic.allowHID = "TRUE"

    4) Add logitech receiver as a usb device in vm editor.

    Thanks again!

    Reply
    • *protectedcolinhd8colin says

      10/28/2020 at 1:10 am

      Hi das1996:
      About the kernel option, is it like this:
      kernelopt=autoPartition=FALSE
      modules=jumpstrt.gz --- useropts.gz --- features.gz --- k.b00 --- uc_intel.b00 --- uc_amd.b00 --- uc_hygon.b00 --- procfs.b00 --- vmx.v00 --- vim.v00 --- tpm.v00 --- sb.v00 --- s.v00 --- mellanox.v00 --- mft
      build=7.0.1-0.0.16850804
      updated=4
      CONFIG./USB/quirks=0x1d57:0xfa21::0xffff:UQ_KBD_IGNORE

      or:
      kernelopt=autoPartition=FALSE CONFIG./USB/quirks=0x1d57:0xfa21::0xffff:UQ_KBD_IGNORE

      Thanks.

      Reply
      • *protecteddas1996 says

        10/28/2020 at 8:58 am

        Second option. It's a parameter of the kernelopt key.

        Reply
        • *protectedcolin says

          10/28/2020 at 9:38 pm

          Finally i successfully passthrough the usb device to vm. Thanks everyone for their help.
          And this is my step:
          1) for mouse:
          a) /etc/vmware/config edit –
          usb.quirks.device0 = "0x045e:0x0782 allow"

          2) for logitech unifying receiver
          a) /etc/vmware/config edit –
          usb.quirks.device1 = "0x046d:0xc52b allow"
          b) append CONFIG./USB/quirks=0x046d:0xc52b::0xffff:UQ_KBD_IGNORE to kernelopt in the file of /bootbank/boot.cfg

          P.S. both of them no need to edit the .vmx file. Test it for esxi 6.7 u3.

          Thanks and regards

          Reply
          • *protectedMartin says

            08/21/2022 at 2:25 am

            This one works for ESXi 7.0.3 installed on NUC11TNHv70L, and I can add both my wired mouse and wired keyboard to the guest VM.

            This work for both windows10 VM and Ubuntu22.04 VM.

            Thanks colin.

            PS: Though I installed ESXi 7.0U3f, the screenshot shows 7.0U2.
            https://imgur.com/CFXmWvc

  15. *protectedMark says

    11/24/2020 at 7:23 am

    Hi! I´m trying to add an EATON UPS Elipse Eco to a Ubuntu 20 VM which runs a NUT server.
    Hardware is SuperMicro X11SCH-LN4F board with Xeon E-2236, ESXi 6.7.0 Update 3 (Build 17167734) Nov 2020 Update

    Here´s my lsusb output:

    Bus 001 Device 003: ID 0463:ffff MGE UPS Systems UPS
    Bus 001 Device 006: ID 0781:5581 SanDisk Corp. Ultra
    Bus 001 Device 005: ID 0557:2419 ATEN International Co., Ltd
    Bus 001 Device 004: ID 0557:7000 ATEN International Co., Ltd Hub
    Bus 001 Device 002: ID 0451:16a8 Texas Instruments, Inc. CC2531 ZigBee
    Bus 001 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub

    Somehow it does not seem to work. The vm says "can't add hid device: -71

    Reply
    • *protectedMark says

      11/24/2020 at 7:27 am

      Here are the lines I added in the config files:

      /etc/vmware/config
      usb.quirks.device0 = "0x0463:0xffff allow"

      /bootbank/boot.cfg
      CONFIG./USB/quirks=0x0463:0xffff::0xffff:UQ_KBD_IGNORE

      also tried
      CONFIG./USB/quirks=0x0463:0xffff::0xffff:UQ_HID_IGNORE

      Reply
    • *protecteddas1996 says

      11/24/2020 at 2:48 pm

      I didn't have to do anything special to pass a cyber powersystems ups to its monitoring software. Is the device showing up in the usb device list when you edit the vm?

      Reply
      • *protectedMark says

        11/24/2020 at 11:10 pm

        Yes, it is listed in the USB devices, even without the edits from this thread. But It is listed as a HID device...

        Reply
      • *protecteddas1996 says

        11/25/2020 at 9:07 am

        What about the vmx file edits?

        Reply
        • *protectedMark says

          11/25/2020 at 11:36 pm

          Yes, I added them and also tried without.

          Reply
    • *protectedPeter says

      12/12/2020 at 12:47 am

      Exactly the same Problem :/ I bought a PCI-e USB Card an will try it passthrough

      Reply
      • *protectedMark says

        12/12/2020 at 7:19 am

        Same here, but I want to get rid of this usb card and use the built-in USB ports, so I don’t block the PCIe Slot.

        Reply
    • *protectedTino says

      04/24/2025 at 10:29 am

      I have the same problem here - Eaton Ellipse Eco on an Intel Nuc with ESXi 8. I have already invested a whole day, but I can't get nut to run under a guest Debian. A PCIe card is of course out of the question in the Nuc. Does anyone else have an idea?

      Reply
  16. *protectedsurfaraz says

    12/17/2020 at 5:41 pm

    I have followed the instructions and got the mouse working, but cannot passthrough keyboard on esxi 6.5u2. Am i doing something wrong, please see below;

    edit /etc/vmware/config
    =======================
    usb.quirks.device0 = "0x145f:0x01e5 allow"
    usb.quirks.device1 = "0x0461:0x4d51 allow"

    edit bootbank/boot.cfg
    ======================
    kernelopt=autoPartition=FALSE CONFIG./USB/quirks=0x0461:0x4d51::0xffff:UQ_KBD_IGNORE
    kernelopt=autoPartition=FALSE CONFIG./USB/quirks=0x145f:0x01e5::0xffff:UQ_KBD_IGNORE

    edit vm.vmx
    ===========
    usb.generic.allowHID = "TRUE"
    usb.quirks.device0 = "0x145f:0x01e5 allow"
    usb.quirks.device1 = "0x0461:0x4d51 allow"

    Reply
  17. *protectedBruce Bowman says

    01/10/2021 at 4:03 pm

    I have tried the steps as well. ReRunning vi /etc/vmware/config and vi bootbank/boot.cfg shows everything is correct. I am only tryng to pass a Logitech unifying device from main motherboard to a VM.

    After esxi reboot(multiple) there is no unifying device as an additional usb option to add in vm settings. Are the above steps only for pci?

    Reply
  18. *protectedJeff says

    03/03/2021 at 8:25 pm

    On ESXi 6.7.0U3 I've had luck with USB Device pass-through with my optical mouse, it was easy given the excellent instructions above.

    But I've had no luck at all with USB Device pass-through of the keyboard. I've got two connected, and have tried passing through each of them individually. The problem seems to be that I cannot get the kernel to ignore the device. Once the host is up, both keyboards control the ESXi host. I set the /bootbank/boot.cfg of course, but it has no effect. I've tried appending each the following:

    CONFIG./USB/quirks=0x0461:0x4e67::0xffff:UQ_KBD_IGNORE
    CONFIG./USB/quirks=0x0461:0x4e67:0:0xffff:UQ_KBD_IGNORE
    CONFIG./USB/quirks=0x0461:0x4e67::0xffff:UQ_HID_IGNORE

    I even tried leaving the keyboard disconnected until I was about to assign it to the VM.

    Am I correct in assuming that the specified keyboard should not work with the ESXi host UI if the ignore is working?

    I know that the 'kernelopt' is registering as it shows up on the ESXi host advanced parm 'USB.quirks'.

    Any ideas? I'm just about to give up on this and buy a USB PCIe card and pass the whole thing through to the VM with PCI Pass-through.

    Thanks!

    Reply
  19. *protectedOliver says

    03/09/2021 at 7:01 am

    Thanks for the solution,
    works fine for me.

    I have a additional solution for getting keyboard and mouse working on the vms....
    Just use BluetoothDongles and add per vm..... pair mouse and keyboard.... done...

    Greetings
    Oliver

    Reply
  20. *protectedHr says

    05/03/2021 at 5:35 am

    Hi,great post.

    Exi 6.7

    /etc/vmware/config

    usb.quirks.device0 = "0x045e:0x0752 allow"
    usb.quirks.device1 = "0x04d9:0xa0d6 allow"
    usb.quirks.device2 = "0x046d:0xc31c allow"
    usb.quirks.device3 = "0x04d9:0xfc02 allow"

    /bootbank/boot.cfg

    kernelopt=autoPartition=FALSE CONFIG./USB/quirks=0x045e:0x0752::0xffff:UQ_KBD_IGNORE :0x046d:0x0aba::0xffff:UQ_KBD_IGNORE:0x04d9:0xa0d6::0xffff:UQ_KBD_IGNORE:0x046d:0xc31c::0xffff:UQ_KBD_IGNORE:0x04d9:0xfc02::0xffff:UQ_KBD_IGNORE:0x047f:0xd956::0xffff:UQ_KBD_IGNORE

    Win10.vmx

    usb.generic.allowHID TRUE
    usb.quirks.device0 = "0x045e:0x0752 allow"
    usb.quirks.device1 = "0x04d9:0xa0d6 allow"
    usb.quirks.device2 = "0x046d:0xc31c allow"
    usb.quirks.device3 = "0x04d9:0xfc02 allow"

    This working Great.

    But:

    lsusb

    Bus 003 Device 003: ID 046d:0a45 Logitech, Inc. 960 Headset

    it does not work.

    https://kb.vmware.com/s/article/2147650

    esxcli system module set -m=vmkusb -e=TRUE

    https://tinkertry.com/superserver-xeon-d-workstation-revisited-with-esxi-65-with-fix-for-usb-sound

    audio over USB work, but USB HID don`t work.

    Any idea ?

    Reply
  21. *protectedMax says

    08/14/2021 at 7:07 am

    I am using Hypervisor 6.7 Free with a few VMs and I am trying to pass a USB barcode reader (HID) to a certain VM.
    Unfortunately I cannot enter the advanced setting "usb.generic.allowHID" anywhere.
    The web UI does not allow for adding of advanced settings, not even in maintenance mode.
    The PowerCLI snap-in for Powershell does not recognize the setting's name. What am I doing wrong?

    Reply
  22. *protectedVincent Brengman says

    03/18/2022 at 5:43 pm

    William, I just want to say thank you. Some of these details were not in the official documentation. You help dummies like me feed my family! 🙂

    Reply
  23. *protectedRushikesh says

    03/24/2022 at 4:57 am

    I am created the HID device for communication with application which is in VMware ESXi 5.5.
    I am following these steps but VMware does not allow me to open the .vmx file.

    Is there any solution to open that file so that i can change that file?

    Reply
  24. *protectedBrian Murphy says

    05/10/2022 at 10:01 am

    William, I'm trying this with ESXI 6.7U3 on a Dell Optiplex 5070 and it appears to work but when I attach my mouse and keyboard to the VM they both have "(Disconnected)" after them and they are not detected in the VM. They also randomly disappear and the USB Devices are empty and they are greyed out so it's like all USB Devices disappeared. Any idea what might be happening? Something to do with the arbitrator maybe? Thanks

    Reply
  25. *protectedanimeofwallpapersacer says

    12/31/2022 at 12:16 am

    Hi
    my usb logitech mouse is work, the vm usb can show it and select it.
    but my logitech usb keyboard not show.
    CONFIG./USB/quirks=0x046d:0xc077::0xffff:UQ_KBD_IGNORE:0x046d:0xc31c::0xffff:UQ_KBD_IGNORE
    this is my config,
    does anyone know how to fix this problem?

    Reply
  26. *protectedXRSec says

    01/13/2023 at 11:10 am

    Hi William Lam , I'm currently trying to build a small workstation
    , currently I am using OpenWrt bindings INTER AX210 ,
    This is some of my personal experience, I hope it can help everyone, but there are still some problems!

    ```conf
    scp ~/.ssh/authorized_keys esxi:/etc/ssh/keys-root/authorized_keys
    ssh esxi "echo 'ChallengeResponseAuthentication no' >> /etc/ssh/sshd_config"
    ssh esxi "echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config"

    ### GPU
    ssh esxi "lspci -v | grep -iA 1 Display"
    ssh esxi "echo '1002 731f bridge false' >> /etc/vmware/passthru.map"
    ssh esxi "echo '1002 731f link false' >> /etc/vmware/passthru.map"
    ssh esxi "echo '1002 731f d3d0 false' >> /etc/vmware/passthru.map"
    ssh esxi "echo '/device/0000:05:00.0/owner = \"passthru\"' >> /etc/vmware/esx.conf"
    ### GPU END

    ### USB
    ssh esxi "lsusb"
    ssh esxi "echo 'usb.generic.allowHID = \"TRUE\"' >> /etc/vmware/config"
    ssh esxi "echo 'usb.quirks.device0 = \"0x046d:0xc52b allow\"' >> /etc/vmware/config"
    echo '"kernelopt=autoPartition=FALSE CONFIG./USB/quirks=0x046d:0xc52b::0xffff:UQ_KBD_IGNORE" : /bootbank/boot.cfg'
    ### USB END

    # WIFI
    echo 'General Wi-Fi w/Bluetooth Note pass-thru USB Bluetooth'
    ssh esxi "lspci | grep Network"
    ssh esxi "echo '8086 2725 bridge false' >> /etc/vmware/passthru.map"
    ssh esxi "echo '8086 2725 link false' >> /etc/vmware/passthru.map"
    ssh esxi "echo '8086 2725 d3d0 false' >> /etc/vmware/passthru.map"
    ssh esxi "echo '/device/0000:0c:00.0/owner = \"passthru\"' >> /etc/vmware/esx.conf"

    ssh esxi "lsusb -v | grep -i Bluetooth | grep Bus"
    ssh esxi "echo 'usb.quirks.device1 = \"0x8087:0x0032 allow\"' >> /etc/vmware/config"
    echo '"kernelopt=autoPartition=FALSE CONFIG./USB/quirks=0x046d:0xc52b::0xffff:UQ_KBD_IGNORE:0x8087:0x0032::0xffff:UQ_KBD_IGNORE" : /bootbank/boot.cfg'
    ### WIFI END

    ### Update
    echo 'esxcli software vib install -d $PWD/nvme-community-driver_1.0.1.0-3vmw.700.1.0.15843807-component-18902434.zip'
    echo 'esxcli software vib install -v $PWD/nvme.vib'
    echo 'esxcli software sources profile list -d /vmfs/volumes/Data/VMware-ESXi-8.0a-20842819-depot.zip'
    echo 'esxcli software profile update -d /vmfs/volumes/Data/VMware-ESXi-8.0a-20842819-depot.zip -p ESXi-8.0a-20842819-standard'
    echo 'vmkfstools -i OpenWrt1.vmdk -d thin OpenWrt.vmdk'
    echo 'vmkfstools -K OpenWrt.vmd'
    ### Update END

    ### Windows
    echo 'hypervisor.cpuid.v0:FALSE'
    echo 'pciPassthru0.msiEnabled : FALSE'
    echo 'pciPassthru1.msiEnabled : FALSE'
    echo 'pciPassthru.64bitMMIOSizeGB : 16'
    echo 'pciPassthru.use64bitMMIO : TRUE'
    ### Windows END

    ### macOS
    echo 'pciPassthru0.msiEnabled : FALSE'
    echo 'pciPassthru1.msiEnabled : FALSE'
    echo 'pciPassthru.64bitMMIOSizeGB : 16'
    echo 'pciPassthru.use64bitMMIO : TRUE'
    echo 'smbios.reflectHost : FALSE'
    echo 'hw.model.reflectHost : FALSE'
    echo 'board-id.reflectHost : FALSE'
    echo 'serialNumber.reflectHost : FALSE'
    echo 'smbios.use12CharSerialNumber : TRUE'
    echo 'hw.model : MacPro7,1'
    echo 'serialNumber : F5KZR05YP7QM'
    echo 'board-id : Mac-27AD2F918AE68F61'
    ### macOS END

    ### OpenWrt
    echo 'hypervisor.cpuid.v0:FALSE'
    echo 'pciPassthru0.msiEnabled : FALSE'
    echo 'pciPassthru.64bitMMIOSizeGB : 16'
    echo 'pciPassthru.use64bitMMIO : TRUE'
    echo 'vmkernel.boot.disableACScheck : TRUE'
    ### OpenWrt END

    rm -rf /tmp/*.txt
    rm -f /var/log/*.log
    ```

    Reply
    • *protectedXRSec says

      01/13/2023 at 11:12 am

      But now I can't find the HID using lsusb

      AX210 Bluetooth

      ```conf
      Bus 001 Device 004: ID 8087:0032 Intel Corp. AX210 Bluetooth
      Device Descriptor:
      bLength 18
      bDescriptorType 1
      bcdUSB 2.01
      bDeviceClass 224 Wireless
      bDeviceSubClass 1 Radio Frequency
      bDeviceProtocol 1 Bluetooth
      bMaxPacketSize0 64
      idVendor 0x8087 Intel Corp.
      idProduct 0x0032 AX210 Bluetooth
      bcdDevice 0.00
      iManufacturer 0
      iProduct 0
      iSerial 0
      bNumConfigurations 1
      Configuration Descriptor:
      bLength 9
      bDescriptorType 2
      wTotalLength 0x00c8
      bNumInterfaces 2
      bConfigurationValue 1
      iConfiguration 0
      bmAttributes 0xe0
      Self Powered
      Remote Wakeup
      MaxPower 100mA
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 3
      bInterfaceClass 224 Wireless
      bInterfaceSubClass 1 Radio Frequency
      bInterfaceProtocol 1 Bluetooth
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x81 EP 1 IN
      bmAttributes 3
      Transfer Type Interrupt
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x02 EP 2 OUT
      bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x82 EP 2 IN
      bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0040 1x 64 bytes
      bInterval 1
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 0
      bNumEndpoints 2
      bInterfaceClass 224 Wireless
      bInterfaceSubClass 1 Radio Frequency
      bInterfaceProtocol 1 Bluetooth
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x03 EP 3 OUT
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0000 1x 0 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x83 EP 3 IN
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0000 1x 0 bytes
      bInterval 1
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 1
      bNumEndpoints 2
      bInterfaceClass 224 Wireless
      bInterfaceSubClass 1 Radio Frequency
      bInterfaceProtocol 1 Bluetooth
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x03 EP 3 OUT
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0009 1x 9 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x83 EP 3 IN
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0009 1x 9 bytes
      bInterval 1
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 2
      bNumEndpoints 2
      bInterfaceClass 224 Wireless
      bInterfaceSubClass 1 Radio Frequency
      bInterfaceProtocol 1 Bluetooth
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x03 EP 3 OUT
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0011 1x 17 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x83 EP 3 IN
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0011 1x 17 bytes
      bInterval 1
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 3
      bNumEndpoints 2
      bInterfaceClass 224 Wireless
      bInterfaceSubClass 1 Radio Frequency
      bInterfaceProtocol 1 Bluetooth
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x03 EP 3 OUT
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0019 1x 25 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x83 EP 3 IN
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0019 1x 25 bytes
      bInterval 1
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 4
      bNumEndpoints 2
      bInterfaceClass 224 Wireless
      bInterfaceSubClass 1 Radio Frequency
      bInterfaceProtocol 1 Bluetooth
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x03 EP 3 OUT
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0021 1x 33 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x83 EP 3 IN
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0021 1x 33 bytes
      bInterval 1
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 5
      bNumEndpoints 2
      bInterfaceClass 224 Wireless
      bInterfaceSubClass 1 Radio Frequency
      bInterfaceProtocol 1 Bluetooth
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x03 EP 3 OUT
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0031 1x 49 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x83 EP 3 IN
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0031 1x 49 bytes
      bInterval 1
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 6
      bNumEndpoints 2
      bInterfaceClass 224 Wireless
      bInterfaceSubClass 1 Radio Frequency
      bInterfaceProtocol 1 Bluetooth
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x03 EP 3 OUT
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x003f 1x 63 bytes
      bInterval 1
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x83 EP 3 IN
      bmAttributes 1
      Transfer Type Isochronous
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x003f 1x 63 bytes
      bInterval 1
      Binary Object Store Descriptor:
      bLength 5
      bDescriptorType 15
      wTotalLength 0x000c
      bNumDeviceCaps 1
      USB 2.0 Extension Device Capability:
      bLength 7
      bDescriptorType 16
      bDevCapabilityType 2
      bmAttributes 0x0000040e
      BESL Link Power Management (LPM) Supported
      BESL value 1024 us
      Device Status: 0x0001
      Self Powered

      ```

      Reply
    • *protectedXRSec says

      01/13/2023 at 11:15 am

      this is Logitech usb

      ```conf
      Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
      Device Descriptor:
      bLength 18
      bDescriptorType 1
      bcdUSB 2.00
      bDeviceClass 0 (Defined at Interface level)
      bDeviceSubClass 0
      bDeviceProtocol 0
      bMaxPacketSize0 8
      idVendor 0x046d Logitech, Inc.
      idProduct 0xc52b Unifying Receiver
      bcdDevice 12.11
      iManufacturer 1 Logitech
      iProduct 2 USB Receiver
      iSerial 0
      bNumConfigurations 1
      Configuration Descriptor:
      bLength 9
      bDescriptorType 2
      wTotalLength 0x0054
      bNumInterfaces 3
      bConfigurationValue 1
      iConfiguration 4 RQR12.11_B0032
      bmAttributes 0xa0
      (Bus Powered)
      Remote Wakeup
      MaxPower 98mA
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 1
      bInterfaceClass 3 Human Interface Device
      bInterfaceSubClass 1 Boot Interface Subclass
      bInterfaceProtocol 1 Keyboard
      iInterface 0
      HID Device Descriptor:
      bLength 9
      bDescriptorType 33
      bcdHID 1.11
      bCountryCode 0 Not supported
      bNumDescriptors 1
      bDescriptorType 34 Report
      wDescriptorLength 59
      Report Descriptor: (length is 59)
      Item(Global): Usage Page, data= [ 0x01 ] 1
      Generic Desktop Controls
      Item(Local ): Usage, data= [ 0x06 ] 6
      Keyboard
      Item(Main ): Collection, data= [ 0x01 ] 1
      Application
      Item(Global): Report Count, data= [ 0x08 ] 8
      Item(Global): Report Size, data= [ 0x01 ] 1
      Item(Global): Logical Minimum, data= [ 0x00 ] 0
      Item(Global): Logical Maximum, data= [ 0x01 ] 1
      Item(Global): Usage Page, data= [ 0x07 ] 7
      Keyboard
      Item(Local ): Usage Minimum, data= [ 0xe0 ] 224
      Control Left
      Item(Local ): Usage Maximum, data= [ 0xe7 ] 231
      GUI Right
      Item(Main ): Input, data= [ 0x02 ] 2
      Data Variable Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Main ): Input, data= [ 0x03 ] 3
      Constant Variable Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Global): Report Count, data= [ 0x05 ] 5
      Item(Global): Usage Page, data= [ 0x08 ] 8
      LEDs
      Item(Local ): Usage Minimum, data= [ 0x01 ] 1
      NumLock
      Item(Local ): Usage Maximum, data= [ 0x05 ] 5
      Kana
      Item(Main ): Output, data= [ 0x02 ] 2
      Data Variable Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Global): Report Count, data= [ 0x01 ] 1
      Item(Global): Report Size, data= [ 0x03 ] 3
      Item(Main ): Output, data= [ 0x01 ] 1
      Constant Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Global): Report Count, data= [ 0x06 ] 6
      Item(Global): Report Size, data= [ 0x08 ] 8
      Item(Global): Logical Minimum, data= [ 0x00 ] 0
      Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
      Item(Global): Usage Page, data= [ 0x07 ] 7
      Keyboard
      Item(Local ): Usage Minimum, data= [ 0x00 ] 0
      No Event
      Item(Local ): Usage Maximum, data= [ 0xff 0x00 ] 255
      (null)
      Item(Main ): Input, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Main ): End Collection, data=none
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x81 EP 1 IN
      bmAttributes 3
      Transfer Type Interrupt
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0008 1x 8 bytes
      bInterval 8
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 0
      bNumEndpoints 1
      bInterfaceClass 3 Human Interface Device
      bInterfaceSubClass 1 Boot Interface Subclass
      bInterfaceProtocol 2 Mouse
      iInterface 0
      HID Device Descriptor:
      bLength 9
      bDescriptorType 33
      bcdHID 1.11
      bCountryCode 0 Not supported
      bNumDescriptors 1
      bDescriptorType 34 Report
      wDescriptorLength 148
      Report Descriptor: (length is 148)
      Item(Global): Usage Page, data= [ 0x01 ] 1
      Generic Desktop Controls
      Item(Local ): Usage, data= [ 0x02 ] 2
      Mouse
      Item(Main ): Collection, data= [ 0x01 ] 1
      Application
      Item(Global): Report ID, data= [ 0x02 ] 2
      Item(Local ): Usage, data= [ 0x01 ] 1
      Pointer
      Item(Main ): Collection, data= [ 0x00 ] 0
      Physical
      Item(Global): Report Count, data= [ 0x10 ] 16
      Item(Global): Report Size, data= [ 0x01 ] 1
      Item(Global): Logical Minimum, data= [ 0x00 ] 0
      Item(Global): Logical Maximum, data= [ 0x01 ] 1
      Item(Global): Usage Page, data= [ 0x09 ] 9
      Buttons
      Item(Local ): Usage Minimum, data= [ 0x01 ] 1
      Button 1 (Primary)
      Item(Local ): Usage Maximum, data= [ 0x10 ] 16
      (null)
      Item(Main ): Input, data= [ 0x02 ] 2
      Data Variable Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Global): Report Count, data= [ 0x02 ] 2
      Item(Global): Report Size, data= [ 0x0c ] 12
      Item(Global): Logical Minimum, data= [ 0x01 0xf8 ] 63489
      Item(Global): Logical Maximum, data= [ 0xff 0x07 ] 2047
      Item(Global): Usage Page, data= [ 0x01 ] 1
      Generic Desktop Controls
      Item(Local ): Usage, data= [ 0x30 ] 48
      Direction-X
      Item(Local ): Usage, data= [ 0x31 ] 49
      Direction-Y
      Item(Main ): Input, data= [ 0x06 ] 6
      Data Variable Relative No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Global): Report Count, data= [ 0x01 ] 1
      Item(Global): Report Size, data= [ 0x08 ] 8
      Item(Global): Logical Minimum, data= [ 0x81 ] 129
      Item(Global): Logical Maximum, data= [ 0x7f ] 127
      Item(Local ): Usage, data= [ 0x38 ] 56
      Wheel
      Item(Main ): Input, data= [ 0x06 ] 6
      Data Variable Relative No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Global): Report Count, data= [ 0x01 ] 1
      Item(Global): Usage Page, data= [ 0x0c ] 12
      Consumer
      Item(Local ): Usage, data= [ 0x38 0x02 ] 568
      AC Pan
      Item(Main ): Input, data= [ 0x06 ] 6
      Data Variable Relative No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Main ): End Collection, data=none
      Item(Main ): End Collection, data=none
      Item(Global): Usage Page, data= [ 0x0c ] 12
      Consumer
      Item(Local ): Usage, data= [ 0x01 ] 1
      Consumer Control
      Item(Main ): Collection, data= [ 0x01 ] 1
      Application
      Item(Global): Report ID, data= [ 0x03 ] 3
      Item(Global): Report Count, data= [ 0x02 ] 2
      Item(Global): Report Size, data= [ 0x10 ] 16
      Item(Global): Logical Minimum, data= [ 0x01 ] 1
      Item(Global): Logical Maximum, data= [ 0xff 0x02 ] 767
      Item(Local ): Usage Minimum, data= [ 0x01 ] 1
      Consumer Control
      Item(Local ): Usage Maximum, data= [ 0xff 0x02 ] 767
      (null)
      Item(Main ): Input, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Main ): End Collection, data=none
      Item(Global): Usage Page, data= [ 0x01 ] 1
      Generic Desktop Controls
      Item(Local ): Usage, data= [ 0x80 ] 128
      System Control
      Item(Main ): Collection, data= [ 0x01 ] 1
      Application
      Item(Global): Report ID, data= [ 0x04 ] 4
      Item(Global): Report Count, data= [ 0x01 ] 1
      Item(Global): Report Size, data= [ 0x02 ] 2
      Item(Global): Logical Minimum, data= [ 0x01 ] 1
      Item(Global): Logical Maximum, data= [ 0x03 ] 3
      Item(Local ): Usage, data= [ 0x82 ] 130
      System Sleep
      Item(Local ): Usage, data= [ 0x81 ] 129
      System Power Down
      Item(Local ): Usage, data= [ 0x83 ] 131
      System Wake Up
      Item(Main ): Input, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Global): Report Size, data= [ 0x06 ] 6
      Item(Main ): Input, data= [ 0x03 ] 3
      Constant Variable Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Main ): End Collection, data=none
      Item(Global): Usage Page, data= [ 0xbc 0xff ] 65468
      (null)
      Item(Local ): Usage, data= [ 0x88 ] 136
      (null)
      Item(Main ): Collection, data= [ 0x01 ] 1
      Application
      Item(Global): Report ID, data= [ 0x08 ] 8
      Item(Global): Report Count, data= [ 0x01 ] 1
      Item(Global): Report Size, data= [ 0x08 ] 8
      Item(Global): Logical Minimum, data= [ 0x01 ] 1
      Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
      Item(Local ): Usage Minimum, data= [ 0x01 ] 1
      (null)
      Item(Local ): Usage Maximum, data= [ 0xff ] 255
      (null)
      Item(Main ): Input, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Main ): End Collection, data=none
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x82 EP 2 IN
      bmAttributes 3
      Transfer Type Interrupt
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0008 1x 8 bytes
      bInterval 2
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 2
      bAlternateSetting 0
      bNumEndpoints 1
      bInterfaceClass 3 Human Interface Device
      bInterfaceSubClass 0 No Subclass
      bInterfaceProtocol 0 None
      iInterface 0
      HID Device Descriptor:
      bLength 9
      bDescriptorType 33
      bcdHID 1.11
      bCountryCode 0 Not supported
      bNumDescriptors 1
      bDescriptorType 34 Report
      wDescriptorLength 93
      Report Descriptor: (length is 93)
      Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
      (null)
      Item(Local ): Usage, data= [ 0x01 ] 1
      (null)
      Item(Main ): Collection, data= [ 0x01 ] 1
      Application
      Item(Global): Report ID, data= [ 0x10 ] 16
      Item(Global): Report Count, data= [ 0x06 ] 6
      Item(Global): Report Size, data= [ 0x08 ] 8
      Item(Global): Logical Minimum, data= [ 0x00 ] 0
      Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
      Item(Local ): Usage, data= [ 0x01 ] 1
      (null)
      Item(Main ): Input, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Local ): Usage, data= [ 0x01 ] 1
      (null)
      Item(Main ): Output, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Main ): End Collection, data=none
      Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
      (null)
      Item(Local ): Usage, data= [ 0x02 ] 2
      (null)
      Item(Main ): Collection, data= [ 0x01 ] 1
      Application
      Item(Global): Report ID, data= [ 0x11 ] 17
      Item(Global): Report Count, data= [ 0x13 ] 19
      Item(Global): Report Size, data= [ 0x08 ] 8
      Item(Global): Logical Minimum, data= [ 0x00 ] 0
      Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
      Item(Local ): Usage, data= [ 0x02 ] 2
      (null)
      Item(Main ): Input, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Local ): Usage, data= [ 0x02 ] 2
      (null)
      Item(Main ): Output, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Main ): End Collection, data=none
      Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
      (null)
      Item(Local ): Usage, data= [ 0x04 ] 4
      (null)
      Item(Main ): Collection, data= [ 0x01 ] 1
      Application
      Item(Global): Report ID, data= [ 0x20 ] 32
      Item(Global): Report Count, data= [ 0x0e ] 14
      Item(Global): Report Size, data= [ 0x08 ] 8
      Item(Global): Logical Minimum, data= [ 0x00 ] 0
      Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
      Item(Local ): Usage, data= [ 0x41 ] 65
      (null)
      Item(Main ): Input, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Local ): Usage, data= [ 0x41 ] 65
      (null)
      Item(Main ): Output, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Global): Report ID, data= [ 0x21 ] 33
      Item(Global): Report Count, data= [ 0x1f ] 31
      Item(Local ): Usage, data= [ 0x42 ] 66
      (null)
      Item(Main ): Input, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Local ): Usage, data= [ 0x42 ] 66
      (null)
      Item(Main ): Output, data= [ 0x00 ] 0
      Data Array Absolute No_Wrap Linear
      Preferred_State No_Null_Position Non_Volatile Bitfield
      Item(Main ): End Collection, data=none
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x83 EP 3 IN
      bmAttributes 3
      Transfer Type Interrupt
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0020 1x 32 bytes
      bInterval 2
      Device Status: 0x0000
      (Bus Powered)

      Bus 002 Device 002: ID 8087:800a Intel Corp. Hub
      Device Descriptor:
      bLength 18
      bDescriptorType 1
      bcdUSB 2.00
      bDeviceClass 9 Hub
      bDeviceSubClass 0 Unused
      bDeviceProtocol 1 Single TT
      bMaxPacketSize0 64
      idVendor 0x8087 Intel Corp.
      idProduct 0x800a Hub
      bcdDevice 0.05
      iManufacturer 0
      iProduct 0
      iSerial 0
      bNumConfigurations 1
      Configuration Descriptor:
      bLength 9
      bDescriptorType 2
      wTotalLength 0x0019
      bNumInterfaces 1
      bConfigurationValue 1
      iConfiguration 0
      bmAttributes 0xe0
      Self Powered
      Remote Wakeup
      MaxPower 0mA
      Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 0
      bAlternateSetting 0
      bNumEndpoints 1
      bInterfaceClass 9 Hub
      bInterfaceSubClass 0 Unused
      bInterfaceProtocol 0 Full speed (or root) hub
      iInterface 0
      Endpoint Descriptor:
      bLength 7
      bDescriptorType 5
      bEndpointAddress 0x81 EP 1 IN
      bmAttributes 3
      Transfer Type Interrupt
      Synch Type None
      Usage Type Data
      wMaxPacketSize 0x0001 1x 1 bytes
      bInterval 12
      Hub Descriptor:
      bLength 9
      bDescriptorType 41
      nNbrPorts 6
      wHubCharacteristic 0x0009
      Per-port power switching
      Per-port overcurrent protection
      TT think time 8 FS bits
      bPwrOn2PwrGood 0 * 2 milli seconds
      bHubContrCurrent 0 milli Ampere
      DeviceRemovable 0x00
      PortPwrCtrlMask 0xff
      Hub Port Status:
      Port 1: 0000.0100 power
      Port 2: 0000.0100 power
      Port 3: 0000.0100 power
      Port 4: 0000.0100 power
      Port 5: 0000.0100 power
      Port 6: 0000.0100 power
      Device Qualifier (for other device speed):
      bLength 10
      bDescriptorType 6
      bcdUSB 2.00
      bDeviceClass 9 Hub
      bDeviceSubClass 0 Unused
      bDeviceProtocol 0 Full speed (or root) hub
      bMaxPacketSize0 64
      bNumConfigurations 1
      Device Status: 0x0001
      Self Powered
      ```

      Reply
      • *protectedXRSec says

        01/13/2023 at 11:21 am

        Excuse me, I want to pass through the USB and Bluetooth attached to the INTER Ax210 to the virtual machine. Is my parameter correct?

        $ lspci | grep Network

        $ cat /etc/vmware/passthru.map
        8086 2725 bridge false
        8086 2725 link false
        8086 2725 d3d0 false

        $ cat /etc/vmware/esx.conf
        /device/0000:0c:00.0/owner = "passthru"

        $ lsusb -v | grep -i Bluetooth | grep Bus

        $ cat /etc/vmware/config
        usb.quirks.device1 = "0x8087:0x0032 allow"

        $ cat /bootbank/boot.cfg
        kernelopt=autoPartition=FALSE CONFIG./USB/quirks=0x046d:0xc52b::0xffff:UQ_KBD_IGNORE:0x8087:0x0032::0xffff:UQ_KBD_IGNORE

        Reply
  27. *protectedMyth says

    07/01/2023 at 1:09 am

    Hi,

    I followed the article for esxi v8.0. Entries added to the VM, The Boot.cfg file. I cant seem to get any of the USB devices to pop up in the VM`s USB list.

    I did notice that when i run :

    [root@localhost:~] lsusb -v | grep -E '(^Bus|HID)'
    Bus 001 Device 001: ID 0e0f:8002 VMware, Inc. Root Hub
    Bus 002 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
    Bus 003 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
    Bus 004 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
    Bus 002 Device 002: ID 2357:011e TP-Link AC600 wireless Realtek RTL8811AU [Archer T2U Nano]
    Bus 003 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
    HID Device Descriptor:
    bcdHID 1.00
    can't get device qualifier: Resource temporarily unavailable
    Bus 003 Device 003: ID 1b1c:0c04 Corsair Link Cooling Node
    HID Device Descriptor:
    bcdHID 1.11
    can't get device qualifier: Resource temporarily unavailable
    Bus 004 Device 002: ID 046d:c332 Logitech, Inc. G502 Proteus Spectrum Optical Mouse
    HID Device Descriptor:
    bcdHID 1.11
    HID Device Descriptor:
    bcdHID 1.11
    can't get device qualifier: Resource temporarily unavailable
    Bus 004 Device 003: ID 1b1c:1b15 Corsair
    HID Device Descriptor:
    bcdHID 1.11
    HID Device Descriptor:
    bcdHID 1.11
    HID Device Descriptor:
    bcdHID 1.11
    can't get device qualifier: Resource temporarily unavailable

    Notice how its says Temporarily Unavailable. Could this be why its not showing up in the VM?

    Reply
    • *protectedMichael says

      10/25/2023 at 9:01 am

      I am also having this problem on ESXi 8 update 2.
      I don't think this process works anymore on latest version.

      Reply
    • *protectedDuncan says

      10/29/2024 at 12:21 pm

      Hi Myth,

      Not sure if this is an issue with ESXi, but I can confirm that I am seeing the same message:

      can't get device qualifier: Resource temporarily unavailable

      I'm running VMware ESXi, 8.0.3, 24280767.

      Reply
  28. *protectedDuncan says

    10/29/2024 at 12:18 pm

    Hi all,
    My host is an Intel NUC Extreme (NUC12DCMi7) running VMware ESXi, 8.0.3, 24280767.

    Trying to pass through a Logitech MK270 Wireless Keyboard and Mouse Combo via a single USB receiver:

    lsusb -v | grep -E '(^Bus|HID)'

    Bus 001 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
    Bus 002 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
    Bus 001 Device 002: ID 0bda:5424 Realtek Semiconductor Corp.
    Bus 001 Device 003: ID 0bda:1100 Realtek Semiconductor Corp.
    iProduct 2 USB2.0 HID
    HID Device Descriptor:
    bcdHID 1.11
    Bus 001 Device 005: ID 067b:2323 Prolific Technology, Inc.
    can't get device qualifier: Resource temporarily unavailable
    Bus 001 Device 006: ID 8087:0033 Intel Corp.
    Bus 001 Device 007: ID 0bda:0424 Realtek Semiconductor Corp.
    Bus 001 Device 008: ID 0bda:0329 Realtek Semiconductor Corp.
    Bus 001 Device 009: ID 0bda:8156 Realtek Semiconductor Corp.
    Bus 001 Device 004: ID 046d:c534 Logitech, Inc. Unifying Receiver
    HID Device Descriptor:
    bcdHID 1.11
    HID Device Descriptor:
    bcdHID 1.11
    can't get device qualifier: Resource temporarily unavailable

    Looks like Bus 001 Device 004: ID 046d:c534 Logitech, Inc. Unifying Receiver would be the device I need to configure, but when I attempt the next step, this is what I'm getting:

    usb.generic.allowHID = "TRUE"
    -sh: usb.generic.allowHID: not found

    Attempting to skip to the next step:

    usb.quirks.device0 = "0x046d:0xc534 allow"
    -sh: usb.quirks.device0: not found

    What am I doing wrong? Can I just not pass through this device?

    Reply
  29. *protectedDuncan says

    11/08/2024 at 1:50 pm

    I'm baffled. I've made progress, but whatever I try I can't add the keyboard. I'm halfway there, got my optical mouse to work, but no dice with anything else. Can anyone spot my mistake?

    STEP1 (putty into host)
    lsusb -v | grep -E '(^Bus|HID)'

    Bus 001 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
    Bus 002 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
    Bus 001 Device 002: ID 0bda:5424 Realtek Semiconductor Corp.
    Bus 001 Device 003: ID 0bda:1100 Realtek Semiconductor Corp.
    iProduct 2 USB2.0 HID
    HID Device Descriptor:
    bcdHID 1.11
    Bus 001 Device 006: ID 067b:2323 Prolific Technology, Inc.
    can't get device qualifier: Resource temporarily unavailable
    Bus 001 Device 007: ID 8087:0033 Intel Corp.
    Bus 001 Device 008: ID 0bda:0424 Realtek Semiconductor Corp.
    Bus 001 Device 009: ID 0bda:0329 Realtek Semiconductor Corp.
    Bus 001 Device 010: ID 0bda:8156 Realtek Semiconductor Corp.
    Bus 001 Device 005: ID 03f0:134a HP, Inc Optical Mouse
    HID Device Descriptor:
    bcdHID 1.11
    can't get device qualifier: Resource temporarily unavailable
    Bus 001 Device 004: ID 0d62:910e Darfon Electronics Corp. HP Business Slim Keyboard
    HID Device Descriptor:
    bcdHID 1.10
    HID Device Descriptor:
    bcdHID 1.10
    can't get device qualifier: Resource temporarily unavailable

    STEP #2 (modify advanced VM properties to add the following:
    usb.generic.allowHID = "TRUE"
    usb.quirks.device0 = "0x0d62:0x910e allow"
    usb.quirks.device1 = "0x03f0:0x134a allow"

    STEP #3 Putty to host
    vi /etc/vmware/config
    usb.quirks.device0 = "0x0d62:0x910e allow"
    usb.quirks.device1 = "0x03f0:0x134a allow"

    STEP #4
    vi /bootbank/boot.cfg
    CONFIG./USB/quirks=0x03f0:0x134a::0xffff:UQ_KBD_IGNORE:0x0d62:0x910e::0xffff

    STEP#5
    Add the devices to the VM. The mouse works fine, but no matter what I do I can't see the keyboard in the list of available devices on the host. I have tried two different keyboards so far. Any suggestions?

    Reply

Leave a Reply to PeterCancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Search

Thank Author

Author

William is Distinguished Platform Engineering Architect in the VMware Cloud Foundation (VCF) Division at Broadcom. His primary focus is helping customers and partners build, run and operate a modern Private Cloud using the VMware Cloud Foundation (VCF) platform.

Connect

  • Bluesky
  • Email
  • GitHub
  • LinkedIn
  • Mastodon
  • Reddit
  • RSS
  • Twitter
  • Vimeo

Recent

  • Programmatically accessing the Broadcom Compatibility Guide (BCG) 05/06/2025
  • Quick Tip - Validating Broadcom Download Token  05/01/2025
  • Supported chipsets for the USB Network Native Driver for ESXi Fling 04/23/2025
  • vCenter Identity Federation with Authelia 04/16/2025
  • vCenter Server Identity Federation with Kanidm 04/10/2025

Advertisment

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy

Copyright WilliamLam.com © 2025

 

Loading Comments...