nefarius / HidHide

Gaming Input Peripherals Device Firewall for Windows.
https://docs.nefarius.at/projects/HidHide/
MIT License
939 stars 80 forks source link

Xbox/XInput blocking through UI Client broken #39

Closed nefarius closed 5 days ago

nefarius commented 3 years ago

Reminder to do a test run and pinpoint why apparently Xbox controller (and similar variants) blocking is either not working at all or not reliably.

ShiveringLampshade commented 3 years ago

Hi, I'm currently running into this issue with an Xbox 360 controller on Windows 10. The controller is currently selected with device hiding enabled but the game I have tested (Rocket League) is still recognizing it. Happy to provide any further info to aid with the investigation

xb360

nefarius commented 3 years ago

I know, still broken, haven't had time to look into it ❤️

ShiveringLampshade commented 3 years ago

No problem 🙂 In my testing its only the 360 controller having the issue, 1st generation Xbox One controller works perfectly fine with HidHide

Serfrost commented 3 years ago

I can also confirm this is happening with my Dualsense (PS5) controller.

Edit: Seems this was caused by Windows update / upgrading to Windows 11. Uninstalling HidHide using the installation MSI, rebooting, and then reinstalling the HidHide using the MSI seems to have resolved this problem.

nefarius commented 3 years ago

It works reliably using the CLI instead as a workaround and not using Beta products like Windows 11 😜💙

Serfrost commented 3 years ago

It works reliably using the CLI instead as a workaround and not using Beta products like Windows 11 😜💙

Maybe you missed my edit. All's good. lol

Kanuan commented 3 years ago

IIRC, some Windows update break HidGuardian / HidHide. There were many similar reports from users with Windows 7/8/10 in the past (me included). Luckily it just seems to clear the registry entry and the solution is just to reinstall the driver.

nefarius commented 3 years ago

@Serfrost I didn't miss it, just like the chance to bash Windows 11 😁

Serfrost commented 3 years ago

@Serfrost I didn't miss it, just like the chance to bash Windows 11 😁

Oh. lmao I should have caught that since it was only a part of the edit. I have my own grievances with 11, but it's mainly that they took away my ability to move the taskbar to the left / right of the screen. Broke a lot of my automated tasks with Autohotkey. Assholes. Other than that I've had a decent time since June.

nefarius commented 3 years ago

There is so much wrong with Windows 11. The absolutely avoidable planned obsolescence with their ridiculous hardware requirements (I don't care if workarounds exist, it's about the mentality), forcing TPM which improves literally nothing in regards to exploitability, having changes introduced that break core functionalities without having the documentation updated so nobody has any clue why software breaks that worked flawlessly for every Windows 10 revision etc. and so on and so forth.... It's a dumpster fire for me as a developer.

Rant over 😛

Serfrost commented 3 years ago

Yeah, I come from strictly on the user side. As for ya'll on the dev side of the fence, I can see how it's just getting increasingly worse so long as everything keeps getting thrown under the bus. Hopefully that changes for the better.

imperialmarch55 commented 2 years ago

Careful! Hiding the USB instance only works for XInput devices! For your general purpose joystick, pad, wheel etc. you need to block the HID-Instance, e.g. HID\VID_054C&PID_0268...

EDIT: I wrote something up originally but didn't realize you could hide the base container device instance path! A very happy day for me as I've been having this issue for a while. So just thought I'd put this here for anyone who didn't know that if you want to hide an XInput device, you need to hide the base container device instance path that starts with USB instead of HID. And apparently this can only be done through the CLI.

nefarius commented 2 years ago

Careful! Hiding the USB instance only works for XInput devices! For your general purpose joystick, pad, wheel etc. you need to block the HID-Instance, e.g. HID\VID_054C&PID_0268...

EDIT: I wrote something up originally but didn't realize you could hide the base container device instance path! A very happy day for me as I've been having this issue for a while. So just thought I'd put this here for anyone who didn't know that if you want to hide an XInput device, you need to hide the base container device instance path that starts with USB instead of HID. And apparently this can only be done through the CLI.

That observation is a 100% true and how XInput blocking works. DInput will access the HID device portion you need to block and XInput will skip past that and directly open a handle to the USB device, so in regards to x360/xbone devices you need to block both the HID and the USB instance.

Cheers

Dr4goonD3mon commented 2 years ago

Hi, I have 2 Xinput controllers, 1 Xbox One S controller and 1 Xbox 360 Controller, my issue is that when I hide the controllers 3 apps don't work as intendes, the 1st app is RetroArch, when Hiding the Xbox one controller and enabling the virtual Controller, RetroArch see the virtual controller (notification, is shown), but won't get any Input from this Virtual Controller, and the other 2 app are Dolphin And PCSX2 where these 2 show the virtual controller as xinput1 instead of 0, I tried configuring HidHide from The CLI but the Gui version already hide the USB and HID instances, if I unhide the HID the controller is Visible Again so I keep the two instances hiden, I'm on windows 11 21H2 compitation 22000.556

Zebrazilla commented 2 years ago

Trying to hide a virtual xbox 360 controller by also hiding the USB instance path, so far no luck. Tried numerous variations. Am I going about hiding the USB instance in a wrong way? Any ideas? image

Kuiriel commented 2 years ago

I'm having a similar issue on Windows 10, before and after reinstalling HidHide.

Battlefield 2042 can see 'through' HidHide to my VKB joystick. It is reading it as a controller, and thus ignoring the Vjoy stick - (and also ignoring my other VKB stick that I'm trying to combine with Gremlin into that one vjoy stick)

With the CLI and dev-list I can see that I've hidden

HID\VID_231D&PID_0200\6&1bce44cb&0&0000 HID\VID_231D&PID_3201\6&244c6a3b&0&0000 USB\VID_231D&PID_0200\5&3AC4F59B&0&8 USB\VID_231D&PID_3201\5&3AC4F59B&0&7

I have then also hidden: USB\VID_231D&PID_0200 USB\VID_231D&PID_3201 HID\VID_231D&PID_0200 HID\VID_231D&PID_3201

Forgive me if I typo. So that's both the HID and the USB container, isn't it?

Kanuan commented 2 years ago
  1. Open HidHide's CLI
    • It's usually located in C:\Program Files\Nefarius Software Solutions\HidHide\x64
    • The CLI tool will fail to open if the HidHide Configuration Client is open
  2. Open Windows' Device Manager
  3. Change the View at the top to "Devices by Container"
  4. Locate your Xbox controller in the list
  5. Select it so it remains highlighted
  6. On the top of Device Manager, switch the "View" to "Devices by CONNECTION"
  7. When the view changes your Xbox controller should still be selected, then expand its sub-items
  8. Follow the instructions in the image below then
    • Your Xbox controller will probably be in a different connection "parent" item than the one shown in the image
  9. After the changes are saved on HidHide CLI, reconnect the controller
    • REMEMBER to save the changes by pressing Ctrl + Z on the CLI screen (^Z should appear when doing so) then pressing Enter
    • You MUST reconnect the controller for the changes to be effective
  10. Test if the controller is correctly hidden by opening the Gamepad Tester Website, pressing some buttons in the controller and then checking if it's detected

image

Kuiriel commented 2 years ago

Thank you. No luck it seems.

Gamepad Tester can't see either of the VKB joysticks to begin with, because they appear to be correctly hidden. If I use joystick gremlin to activate a profile, Gamepad Tester can see the Virtual Joystick appropriately.

Everything already appears as appropriate on HidHide CLI already.

Only thing is I'm not using an xbox controller, I'm using VKB joysticks. Somehow the game can still see through them to ignore the left stick, ignore vjoy, and use just the right stick as a controller. It shouldn't be able to see that at all.

HidHide

Edit: Wait! I might be having some luck finally... I just unplugged and plugged them back in... was sure I had done that before but did it again... it's the daft game.

It insists on interpreting the vjoy device as an xbox controller and stops counting at a short number of axis and buttons, ignoring everything beyond that.

ffs. So somehow... Battlefield 2042 thinks vjoy is just an xbox controller. And thus the limitations. Yet on an old joystick it didn't do this! On the upside, HidHide remains a beauty.

AAide commented 2 years ago

I can also confirm this is happening with my Dualsense (PS5) controller.

Edit: Seems this was caused by Windows update / upgrading to Windows 11. Uninstalling HidHide using the installation MSI, rebooting, and then reinstalling the HidHide using the MSI seems to have resolved this problem.

This is help me thanks.

eqagunn commented 1 year ago

I can also confirm this is happening with my Dualsense (PS5) controller. Edit: Seems this was caused by Windows update / upgrading to Windows 11. Uninstalling HidHide using the installation MSI, rebooting, and then reinstalling the HidHide using the MSI seems to have resolved this problem.

This is help me thanks.

This sorted my issue with Switch Pro Controller too. HidHide wasn't hiding neither wireless nor wired connection. Reinstalling HidHide made it functional again. Thank you @Serfrost.