dolphin
dolphin copied to clipboard
WiimoteWindows: Avoid Log spam from IsWiimote status requests
In WiimoteWindows::IsWiimote(), only send requests for a status report if the device either has a valid device name or a valid vendor_id/product_id combination.
This prevents Log spam of "Error on Writefile: Incorrect Function" or "Error on Writefile: The parameter is incorrect" from other types of devices, which is particularly annoying when Continuous Scanning is enabled.
I'm on Windows 10 1903 with an official RVL-CNT-01 and verified the new test passes for both the name and VendorID/ProductID. This has been/needs to be tested with:
- [x] RVL-CNT-01
- [x] RVL-CNT-01-TR
- [ ] Third party remotes
- [x] DolphinBar
- [x] Balance Board
- [x] Windows 10
- [x] Windows 11
- [ ] hidapi (I added a utility function IsValidVendorIDAndProductID and call it from hidapi too)
I can check soon(ish) on Windows 11 and with the Dolphin Bar. By the way, although my Wiimotes are official, they aren't -TR...
There was a time that the Microsoft Bluetooth stack wasn't always a given. The Toshiba or BlueSoleil stacks were sometimes in use since Microsoft's stack often left much to be desired. Possibly one of those stacks didn't properly expose the name, but I think it's safe to not worry about them anymore these days.
I have some TR´s, but not sure what to check, didnt notice any difference (win11)
What I did notice, is that launching dolphin still kills my permanent paired wiimotes (with touchmote). Even disabling continuous scan.
It should be enough to make sure they still connect (and that it doesn't try to connect to something that's not a Wii Remote), but starting up a game and making sure the buttons and pointer still work seems like a good thing to check.
The touchmote thing is a preexisting issue, right? That's worth fixing but a job for a different PR.
Hi. I didnt knew if could be related. Since it seems something dolphin does at launch. And yes, it´s preexistent.
About the PR related here, tried both TR and non TR, they work fine. Every button, IR, sound, motion, etc.
@Dentomologist just tested this PR and the Dolphin Bar doesn't work with it. It simply does nothing, it doesn't react neither to manually clicking on refresh button, nor to enabling continuous scanning.
I checked the Dolphin logs and there's nothing relevant (other than SDL itself finding and enumerating the 4 device nodes from the Dolphin Bar as Wiimotes). The only sign of life I could get was by unplugging the Dolphin Bar while Dolphin is running a Wii title, which results in a quick "Wii Remote 1 connected" followed by a "Wii Remote 1 disconnected" OSD message and the following entries in the log:
24:30:850 Core\HW\WiimoteReal\IOWin.cpp:739 W[Wiimote]: GetOverlappedResult error 1167 on Wiimote 1.
24:30:850 Core\HW\WiimoteReal\IOWin.cpp:305 W[Wiimote]: IOWrite[WWM_WRITE_FILE]: Error on WriteFile: A non-existent device was specified.
24:30:850 Core\HW\WiimoteReal\WiimoteReal.cpp:369 E[Wiimote]: IsBalanceBoard(): Failed to initialise extension.
24:30:851 Core\HW\WiimoteReal\IOWin.cpp:305 W[Wiimote]: IOWrite[WWM_WRITE_FILE]: Error on WriteFile: A non-existent device was specified.
24:30:851 Core\HW\WiimoteReal\WiimoteReal.cpp:369 E[Wiimote]: IsBalanceBoard(): Failed to initialise extension.
24:30:851 Core\HW\WiimoteReal\IOWin.cpp:305 W[Wiimote]: IOWrite[WWM_WRITE_FILE]: Error on WriteFile: A non-existent device was specified.
24:30:851 Core\HW\WiimoteReal\WiimoteReal.cpp:369 E[Wiimote]: IsBalanceBoard(): Failed to initialise extension.
24:30:852 Core\HW\WiimoteReal\IOWin.cpp:305 W[Wiimote]: IOWrite[WWM_WRITE_FILE]: Error on WriteFile: The device is not connected.
24:30:852 Core\HW\WiimoteReal\WiimoteReal.cpp:832 E[Wiimote]: Wiimote::PrepareOnThread failed. Disconnecting Wiimote 1.
24:30:853 Core\HW\WiimoteReal\WiimoteReal.cpp:953 N[Wiimote]: Connected real wiimote to slot 1.
24:30:855 Core\HW\WiimoteReal\IOWin.cpp:305 W[Wiimote]: IOWrite[WWM_WRITE_FILE]: Error on WriteFile: The device is not connected.
24:30:855 Core\HW\WiimoteReal\WiimoteReal.cpp:832 E[Wiimote]: Wiimote::PrepareOnThread failed. Disconnecting Wiimote 100.
24:30:856 Core\HW\WiimoteReal\IOWin.cpp:305 W[Wiimote]: IOWrite[WWM_WRITE_FILE]: Error on WriteFile: The device is not connected.
24:30:856 Core\HW\WiimoteReal\WiimoteReal.cpp:832 E[Wiimote]: Wiimote::PrepareOnThread failed. Disconnecting Wiimote 100.
Things I tried:
- Launching Dolphin after the Dolphin Bar was plugged and the Wiimote already connected to it.
- Launching Dolphin after the Dolphin Bar was plugged but connecting the Wiimote to it after Dolphin launched.
- Plugging in the Dolphin Bar after launching Dolphin
Well, I've been thinking of picking up a Dolphin Bar for a while just so I can test with it. Guess it's time to get going on that!
@mbc07 in the meantime, could you try the build I just pushed and 1) see if it's still broken, 2) enable the Wiimote log on Notice verbosity and post any Dolphin Bar related output when you do a scan?
@Dentomologist it works now, but it has a few quirks. After the initial connection, it doesn't notice anymore that a Wiimote was disconnected, you have to manually click twice on Tools => Connect Wii Remote => Wii Remote X if the Wiimote gets disconnected for any reason (e.g. low battery, manually turned off, etc). Either that or unplugging/replugging the Dolphin Bar while Dolphin is running. Also, here's the log you asked, that's what I get after clicking "Refresh":
48:01:665 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 057e product_id: 0306 name: Mayflash Wiimote PC Adapter
48:01:666 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 046d product_id: b025 name: 쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌찁쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쿠⬟
48:01:666 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:666 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:667 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:667 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:667 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: deed product_id: feed name: UMDF Virtual hidmini device Product string
48:01:667 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:667 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:668 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 057e product_id: 0306 name: Mayflash Wiimote PC Adapter
48:01:669 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:669 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:670 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 057e product_id: 0306 name: Mayflash Wiimote PC Adapter
48:01:676 Core\HW\WiimoteReal\IOWin.cpp:527 W[Wiimote]: IsWiimote(): Received unexpected report 30
48:01:728 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:728 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:728 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:729 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:729 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:729 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 093a product_id: 0255 name: HIDI2C Device
48:01:729 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:730 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 057e product_id: 0306 name: Mayflash Wiimote PC Adapter
48:01:731 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 045e product_id: 0000 name: NO_NAME
48:01:731 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:731 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 045e product_id: 0000 name: NO_NAME
48:01:731 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:732 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 093a product_id: 0255 name: HIDI2C Device
48:01:732 Core\HW\WiimoteReal\IOWin.cpp:507 N[Wiimote]: IsWiimote() vendor_id: 8087 product_id: 0a1e name: NO_NAME
48:01:732 Core\HW\WiimoteReal\WiimoteReal.cpp:953 N[Wiimote]: Connected real wiimote to slot 1.
(the device from the second log line, which reported garbage, seems to correspond to my Logitech mouse -- MX Anywhere 3 -- which is connected via BT LE)
Other thing that might be useful, when the Dolphin Bar is in mode 4 (the specific mode for Dolphin usage), it'll always present 4 child devices with the official Wiimote PID/VID (057e:0306), regardless if a real Wiimote is actually connected to the Dolphin Bar or not. I'm bringing this up because AFAICT this behavior needed some sort of special handling back in Dolphin 4.0 days:
(the actual strings in on an english Windows install for the 2nd and 3rd level nodes would be USB Input Device and HID-compliant Game Controller)
Here's also the output of UsbTreeView for the Dolphin Bar (a bit verbose, but might be useful too):
=========================== USB Port4 ===========================
Connection Status : 0x01 (Device is connected)
Port Chain : 1-4
Properties : 0x01
IsUserConnectable : yes
PortIsDebugCapable : no
PortHasMultiCompanions : no
PortConnectorIsTypeC : no
ConnectionIndex : 0x04 (Port 4)
CompanionIndex : 0
CompanionHubSymLnk : USB#ROOT_HUB30#4&2e92abe3&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
CompanionPortNumber : 0x14 (Port 20)
-> CompanionPortChain : 1-20
========================== Summary =========================
Vendor ID : 0x057E (Nintendo Co., Ltd.)
Product ID : 0x0306
USB Version : 2.0 -> but Device is Full-Speed only
Port maximum Speed : High-Speed (Companion Port 1-20 supports SuperSpeed)
Device maximum Speed : Full-Speed
Device Connection Speed : Full-Speed
Self powered : no
Demanded Current : 500 mA
Used Endpoints : 5
======================== USB Device ========================
+++++++++++++++++ Device Information ++++++++++++++++++
Device Description : USB Composite Device
Device Path : \\?\USB#VID_057E&PID_0306#5&19108546&0&4#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Kernel Name : \Device\USBPDO-5
Device ID : USB\VID_057E&PID_0306\5&19108546&0&4
Hardware IDs : USB\VID_057E&PID_0306&REV_0100 USB\VID_057E&PID_0306
Driver KeyName : {36fc9e60-c465-11cf-8056-444553540000}\0009 (GUID_DEVCLASS_USB)
Driver : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.25936.1000 Date: 2023-08-19)
Driver Inf : C:\WINDOWS\inf\usb.inf
Legacy BusType : PNPBus
Class : USB
Class GUID : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
Service : usbccgp
Enumerator : USB
Location Info : Port_#0004.Hub_#0002
Location IDs : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(4), ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS04)
Container ID : {0089e24d-4644-11ee-a24f-010101010000}
Manufacturer Info : (Standard USB Host Controller)
Capabilities : 0x84 (Removable, SurpriseRemovalOK)
Status : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code : 0
Address : 4
HcDisableSelectiveSuspend: 0
EnableSelectiveSuspend : 0
SelectiveSuspendEnabled : 0
EnhancedPowerMgmtEnabled : 0
IdleInWorkingState : 0
WakeFromSleepState : 0
Power State : D0 (supported: D0, D3, wake from D0)
Child Device 1 : USB Input Device
Device Path : \\?\USB#VID_057E&PID_0306&MI_00#6&686b16b&0&0000#{0c320ff7-bd9b-42b6-bdaf-49feb9c91649}
Kernel Name : \Device\000000ef
Device ID : USB\VID_057E&PID_0306&MI_00\6&686B16B&0&0000
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0082 (GUID_DEVCLASS_HIDCLASS)
Service : HidUsb
Location : 0000.0014.0000.004.000.000.000.000.000
LocationPaths : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(4)#USBMI(0) PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(4)#USB(4) ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS04)#USBMI(0) ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS04)#USB(4)
Child Device 1 : HID-compliant game controller
Device Path 1 : \\?\HID#VID_057E&PID_0306&MI_00#7&2fc4a08a&0&0000#{0c320ff7-bd9b-42b6-bdaf-49feb9c91649}
Device Path 2 : \\?\HID#VID_057E&PID_0306&MI_00#7&2fc4a08a&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
Kernel Name : \Device\000000f3
Device ID : HID\VID_057E&PID_0306&MI_00\7&2FC4A08A&0&0000
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0086 (GUID_DEVCLASS_HIDCLASS)
Child Device 2 : USB Input Device
Device Path : \\?\USB#VID_057E&PID_0306&MI_01#6&686b16b&0&0001#{0c320ff7-bd9b-42b6-bdaf-49feb9c91649}
Kernel Name : \Device\000000f0
Device ID : USB\VID_057E&PID_0306&MI_01\6&686B16B&0&0001
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0083 (GUID_DEVCLASS_HIDCLASS)
Service : HidUsb
Location : 0000.0014.0000.004.000.000.000.000.000
LocationPaths : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(4)#USBMI(1) ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS04)#USBMI(1)
Child Device 1 : HID-compliant game controller
Device Path 1 : \\?\HID#VID_057E&PID_0306&MI_01#7&759f2c1&0&0000#{0c320ff7-bd9b-42b6-bdaf-49feb9c91649}
Device Path 2 : \\?\HID#VID_057E&PID_0306&MI_01#7&759f2c1&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
Kernel Name : \Device\000000f4
Device ID : HID\VID_057E&PID_0306&MI_01\7&759F2C1&0&0000
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0087 (GUID_DEVCLASS_HIDCLASS)
Child Device 3 : USB Input Device
Device Path : \\?\USB#VID_057E&PID_0306&MI_02#6&686b16b&0&0002#{0c320ff7-bd9b-42b6-bdaf-49feb9c91649}
Kernel Name : \Device\000000f1
Device ID : USB\VID_057E&PID_0306&MI_02\6&686B16B&0&0002
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0084 (GUID_DEVCLASS_HIDCLASS)
Service : HidUsb
Location : 0000.0014.0000.004.000.000.000.000.000
LocationPaths : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(4)#USBMI(2) ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS04)#USBMI(2)
Child Device 1 : HID-compliant game controller
Device Path 1 : \\?\HID#VID_057E&PID_0306&MI_02#7&1a8a0eff&0&0000#{0c320ff7-bd9b-42b6-bdaf-49feb9c91649}
Device Path 2 : \\?\HID#VID_057E&PID_0306&MI_02#7&1a8a0eff&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
Kernel Name : \Device\000000f5
Device ID : HID\VID_057E&PID_0306&MI_02\7&1A8A0EFF&0&0000
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0088 (GUID_DEVCLASS_HIDCLASS)
Child Device 4 : USB Input Device
Device Path : \\?\USB#VID_057E&PID_0306&MI_03#6&686b16b&0&0003#{0c320ff7-bd9b-42b6-bdaf-49feb9c91649}
Kernel Name : \Device\000000f2
Device ID : USB\VID_057E&PID_0306&MI_03\6&686B16B&0&0003
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0085 (GUID_DEVCLASS_HIDCLASS)
Service : HidUsb
Location : 0000.0014.0000.004.000.000.000.000.000
LocationPaths : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(4)#USBMI(3) ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS04)#USBMI(3)
Child Device 1 : HID-compliant game controller
Device Path 1 : \\?\HID#VID_057E&PID_0306&MI_03#7&2dba2b3d&0&0000#{0c320ff7-bd9b-42b6-bdaf-49feb9c91649}
Device Path 2 : \\?\HID#VID_057E&PID_0306&MI_03#7&2dba2b3d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (GUID_DEVINTERFACE_HID)
Kernel Name : \Device\000000f6
Device ID : HID\VID_057E&PID_0306&MI_03\7&2DBA2B3D&0&0000
Class : HIDClass
Driver KeyName : {745a17a0-74d3-11d0-b6fe-00a0c90f57da}\0089 (GUID_DEVCLASS_HIDCLASS)
+++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\057E03060100
osvc : REG_BINARY 00 00
---------------- Connection Information ---------------
Connection Index : 0x04 (Port 4)
Connection Status : 0x01 (DeviceConnected)
Current Config Value : 0x01 (Configuration 1)
Device Address : 0x06 (6)
Is Hub : 0x00 (no)
Device Bus Speed : 0x01 (Full-Speed)
Number Of Open Pipes : 0x04 (4 pipes to data endpoints)
Pipe[0] : EndpointID=1 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x40 bInterval=1 -> 718 Bits/ms = 89750 Bytes/s
Pipe[1] : EndpointID=2 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x40 bInterval=1 -> 718 Bits/ms = 89750 Bytes/s
Pipe[2] : EndpointID=3 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x40 bInterval=1 -> 718 Bits/ms = 89750 Bytes/s
Pipe[3] : EndpointID=4 Direction=IN ScheduleOffset=0 Type=Interrupt wMaxPacketSize=0x40 bInterval=1 -> 718 Bits/ms = 89750 Bytes/s
Data (HexDump) : 04 00 00 00 12 01 00 02 00 00 00 40 7E 05 06 03 ...........@~...
00 01 01 02 00 01 01 01 00 06 00 04 00 00 00 01 ................
00 00 00 07 05 81 03 40 00 01 00 00 00 00 07 05 .......@........
82 03 40 00 01 00 00 00 00 07 05 83 03 40 00 01 ..@..........@..
00 00 00 00 07 05 84 03 40 00 01 00 00 00 00 ........@......
--------------- Connection Information V2 -------------
Connection Index : 0x04 (4)
Length : 0x10 (16 bytes)
SupportedUsbProtocols : 0x03
Usb110 : 1 (yes, port supports USB 1.1)
Usb200 : 1 (yes, port supports USB 2.0)
Usb300 : 0 (no, port not supports USB 3.0) -> but Companion Port 1-20 does
ReservedMBZ : 0x00
Flags : 0x00
DevIsOpAtSsOrHigher : 0 (Device is not operating at SuperSpeed or higher)
DevIsSsCapOrHigher : 0 (Device is not SuperSpeed capable or higher)
DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
DevIsSsPlusCapOrHigher : 0 (Device is not SuperSpeedPlus capable or higher)
ReservedMBZ : 0x00
Data (HexDump) : 04 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00 ................
---------------------- Device Descriptor ----------------------
bLength : 0x12 (18 bytes)
bDescriptorType : 0x01 (Device Descriptor)
bcdUSB : 0x200 (USB Version 2.0) -> but device is Full-Speed only
bDeviceClass : 0x00 (defined by the interface descriptors)
bDeviceSubClass : 0x00
bDeviceProtocol : 0x00
bMaxPacketSize0 : 0x40 (64 bytes)
idVendor : 0x057E (Nintendo Co., Ltd.)
idProduct : 0x0306
bcdDevice : 0x0100
iManufacturer : 0x01 (String Descriptor 1)
Language 0x0409 : "HJZ"
iProduct : 0x02 (String Descriptor 2)
Language 0x0409 : "Mayflash Wiimote PC Adapter"
iSerialNumber : 0x00 (No String Descriptor)
bNumConfigurations : 0x01 (1 Configuration)
Data (HexDump) : 12 01 00 02 00 00 00 40 7E 05 06 03 00 01 01 02 .......@~.......
00 01 ..
------------------ Configuration Descriptor -------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x02 (Configuration Descriptor)
wTotalLength : 0x006D (109 bytes)
bNumInterfaces : 0x04 (4 Interfaces)
bConfigurationValue : 0x01 (Configuration 1)
iConfiguration : 0x00 (No String Descriptor)
bmAttributes : 0x80
D7: Reserved, set 1 : 0x01
D6: Self Powered : 0x00 (no)
D5: Remote Wakeup : 0x00 (no)
D4..0: Reserved, set 0 : 0x00
MaxPower : 0xFA (500 mA)
Data (HexDump) : 09 02 6D 00 04 01 00 80 FA 09 04 00 00 01 03 00 ..m.............
00 00 09 21 11 01 00 01 22 D9 00 07 05 81 03 40 ...!...."......@
00 01 09 04 01 00 01 03 00 00 00 09 21 11 01 00 ............!...
01 22 D9 00 07 05 82 03 40 00 01 09 04 02 00 01 ."......@.......
03 00 00 00 09 21 11 01 00 01 22 D9 00 07 05 83 .....!....".....
03 40 00 01 09 04 03 00 01 03 00 00 00 09 21 11 .@............!.
01 00 01 22 D9 00 07 05 84 03 40 00 01 ..."......@..
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x00 (Interface 0)
bAlternateSetting : 0x00
bNumEndpoints : 0x01 (1 Endpoint)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x00 (None)
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 00 00 01 03 00 00 00 .........
------------------- HID Descriptor --------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0111 (HID Version 1.11)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Data (HexDump) : 09 21 11 01 00 01 22 D9 00 .!...."..
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x00D9 (217 bytes)
Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x81 (Direction=IN EndpointID=1)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 81 03 40 00 01 ....@..
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x01 (Interface 1)
bAlternateSetting : 0x00
bNumEndpoints : 0x01 (1 Endpoint)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x00 (None)
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 01 00 01 03 00 00 00 .........
------------------- HID Descriptor --------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0111 (HID Version 1.11)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Data (HexDump) : 09 21 11 01 00 01 22 D9 00 .!...."..
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x00D9 (217 bytes)
Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x82 (Direction=IN EndpointID=2)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 82 03 40 00 01 ....@..
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x02 (Interface 2)
bAlternateSetting : 0x00
bNumEndpoints : 0x01 (1 Endpoint)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x00 (None)
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 02 00 01 03 00 00 00 .........
------------------- HID Descriptor --------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0111 (HID Version 1.11)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Data (HexDump) : 09 21 11 01 00 01 22 D9 00 .!...."..
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x00D9 (217 bytes)
Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x83 (Direction=IN EndpointID=3)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 83 03 40 00 01 ....@..
---------------- Interface Descriptor -----------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x04 (Interface Descriptor)
bInterfaceNumber : 0x03 (Interface 3)
bAlternateSetting : 0x00
bNumEndpoints : 0x01 (1 Endpoint)
bInterfaceClass : 0x03 (HID - Human Interface Device)
bInterfaceSubClass : 0x00 (None)
bInterfaceProtocol : 0x00 (None)
iInterface : 0x00 (No String Descriptor)
Data (HexDump) : 09 04 03 00 01 03 00 00 00 .........
------------------- HID Descriptor --------------------
bLength : 0x09 (9 bytes)
bDescriptorType : 0x21 (HID Descriptor)
bcdHID : 0x0111 (HID Version 1.11)
bCountryCode : 0x00 (00 = not localized)
bNumDescriptors : 0x01
Data (HexDump) : 09 21 11 01 00 01 22 D9 00 .!...."..
Descriptor 1:
bDescriptorType : 0x22 (Class=Report)
wDescriptorLength : 0x00D9 (217 bytes)
Error reading descriptor : ERROR_INVALID_PARAMETER (due to a obscure limitation of the Win32 USB API, see UsbTreeView.txt)
----------------- Endpoint Descriptor -----------------
bLength : 0x07 (7 bytes)
bDescriptorType : 0x05 (Endpoint Descriptor)
bEndpointAddress : 0x84 (Direction=IN EndpointID=4)
bmAttributes : 0x03 (TransferType=Interrupt)
wMaxPacketSize : 0x0040 (64 bytes)
bInterval : 0x01 (1 ms)
Data (HexDump) : 07 05 84 03 40 00 01 ....@..
----------------- Device Qualifier Descriptor -----------------
Error : ERROR_GEN_FAILURE (because the device is Full-Speed only)
-------------------- String Descriptors -------------------
------ String Descriptor 0 ------
bLength : 0x04 (4 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language ID[0] : 0x0409 (English - United States)
Data (HexDump) : 04 03 09 04 ....
------ String Descriptor 1 ------
bLength : 0x08 (8 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "HJZ"
Data (HexDump) : 08 03 48 00 4A 00 5A 00 ..H.J.Z.
------ String Descriptor 2 ------
bLength : 0x38 (56 bytes)
bDescriptorType : 0x03 (String Descriptor)
Language 0x0409 : "Mayflash Wiimote PC Adapter"
Data (HexDump) : 38 03 4D 00 61 00 79 00 66 00 6C 00 61 00 73 00 8.M.a.y.f.l.a.s.
68 00 20 00 57 00 69 00 69 00 6D 00 6F 00 74 00 h. .W.i.i.m.o.t.
65 00 20 00 50 00 43 00 20 00 41 00 64 00 61 00 e. .P.C. .A.d.a.
70 00 74 00 65 00 72 00 p.t.e.r.
Thanks for the detailed response.
I'm surprised by the disconnection behavior you're seeing; aside from querying for the name and vid/pid, the PR as it stands is doing the same thing as master for devices that pass the check. I take it that's working normally on master?
You have a good point, it's been a long while since I last tried using the Dolphin Bar on master, as I mostly use BT Passthrough nowadays. I'll check the Dolphin Bar behavior on master soon, and I'll let you know...
@Dentomologist sorry for the wait, the disconnection behavior I previously described is the same on current master, as well as on... 5.0 stable (yes, I did try something that old).
I'll try to investigate a bit further, either I'm crazy and that's always been the behavior (I'm doubtful) or we did break the Dolphin Bar disconnection behavior sometime before 5.0 stable and it went unnoticed all those years (also doubtful of that, but ¯\_(ツ)_/¯ ).
Regardless of that, the Dolphin Bar works with the current version of this PR the same way it works on master. The initial version of this PR (which had more changes) didn't work with the Dolphin Bar...
My own DolphinBar arrived recently and I'm seeing the same behavior you are (including on 5.0).
The original version wasn't working because the DolphinBar apparently doesn't respond to the first request properly. Requesting a status report returns a core button report instead, and it takes two or more requests to actually get the report (at which point the DolphinBar behaves properly (mostly).
Since it's not changed by this PR, I'll look into the disconnection behavior in a different one.
There is a way to avoid dolphin sending request and status support at all?
There is a way to avoid dolphin sending request and status support at all?
Not doing that would disconnect the Wiimote for inactivity, so it doesn't make a whole lot of sense to support this.
There is a way to avoid dolphin sending request and status support at all?
Not doing that would disconnect the Wiimote for inactivity, so it doesn't make a whole lot of sense to support this.
Not if don't want to connect them :D
I mean at dolphin launch. I think that was possible before, disabling continuous scan. But doesn't seem to be effective now.