Micro won't show up as a joystick only on one computer, works fine on others

I've finished building my Arduino Micro into an IMU head tracker device, it is supposed to show up as a USB joystick. It works perfectly on my computer, but when I brought it to my friend's house to show him on his laptop, it doesn't show up in the list of game controllers at all. He also has the Arduino IDE installed, just like I do, and we're both running Windows 8.1.

When I first plugged it into his laptop, Windows said something about installing drivers, then the dialog disappeared without errors.

I checked Device Manager, there's no "yellow triangle" devices that are missing drivers. In fact, it appears to show up as a properly installed HID-compliant Device. When I plug it in, there's 2 HID-compliant devices in the HID list, when I unplug it, there's only 1, so that must be it, there's no yellow triangle so the drivers are installed properly, I even tried right clicking on it and hitting update drivers and pointing it to the Arduino drivers folder, but it said it was already using the proper drivers. And it's the same deal on my home PC where it works perfectly - it shows up as an HID-compliant Device in the HID list in the device manager.

But I cannot for the life of me get it to show up in the Game Controllers list, even though it does on my own home PC. I grabbed my old USB logitech joystick and plugged that into the laptop, just to make sure his system can recognize USB HID joysticks at all, but it shows up perfectly fine in the Game Controllers list.

Any suggestions where I should start looking to fix this? I know it's probably more of an issue with Windows than with the Arduino, but I don't know who else to ask.

Windows 8.0 and 8.1 have high driver enforcement settings by default.
That would be my first thought regardless of what you may think it has done with drivers.

Fact that you both have windows 8.1 means very little as the settings between one computer and another even with the same OS can be different per user.

Some hardware items can actually HIDE and not show any of the usual warning signs.

Device Manager, View, Show Hidden Items. Possibly listed in "Non-Plug and Play Drivers" and do what you did before and plug in the Arduino to see if it changes anything and then unplug. Depending on the sketch and how it was set up you may have to disconnect it, UNINSTALL the driver for it, restart the computer fully, and then plug the Arduino back in.

But back to basics.

Same working cable ?
NOT using USB 3.0 ports !!!! If you must then use a POWERED USB 2.0 hub between the Arduino and the USB 3.0 port
Nothing connected to the TX & RX pins before the sketch was loaded only afterwards when upload is verified.
Is there anything else you can add to your issue ?

Welp I've tried everything. I found out by showing hidden devices it also shows up as a USB Input Device, and as an Arduino Micro under com ports. I tried uninstalling all 3 devices, rebooting, plugging the device in, Arduino Micro then shows up as a yellow triangle device. I install Micro drivers. Still doesn't work. I unplug/replug. Still doesn't work. I reboot, still doesn't work. Still no Arduino Micro joystick listed in Game Controllers.

I have no idea what the difference is, because Device Manager on the working PC is showing the exact same 3 devices as it is on the non-working PC. I'm using the same USB cable, and it's going straight into a USB 2 port, the laptop doesn't have USB 3.

I did manage to find these guys having a somewhat related problem with a Teensy:


Although they were getting it to show up in Game Controllers, just with no actual joystick axes or buttons. I tried their suggestions by deleting all the registry keys with the vendor ID associated with the Micro. Then rebooted. Still doesn't work.

I have no idea if there's something very special about my PC that makes it work, or if there's something very wrong with his laptop that makes it not work, but this is a very strange problem. It's got to have something to do with the Joystick library I'm using:

It's a unique library in that it supports 16 bit joystick axes, instead of the usual 8-bit, and I need all that extra precision for this IMU. It may be that the HID device type I've selected is an obscure one and I need to pick a different one, or it may be that I'm trying to send too much data over USB at once and only my PC's USB controller is fast enough to keep it in sync. I'll have to play around with the settings in there and see if I can get it working a bit more universally.