MissionControl icon indicating copy to clipboard operation
MissionControl copied to clipboard

Controller Support Request for "Hyperkin RetroN 5 Bluetooth Wireless Controller"

Open JacobKotrla opened this issue 5 years ago • 13 comments

I have a Hyperkin RetroN 5 controller that came with a RetroN 5. Here are some pictures of it: IMG_4177 IMG_4180 I am not able to get the controller to show up in the Bluetooth database. I am able to connect the controller to my PC, but I am not able to get any input from it, as it's only meant to be used with the RetroN 5. Could MissionControl support this controller? Since I can connect the controller to my PC, I can see some info about it. Properties > Bluetooth > Troubleshooting Information >Unique Identifier: 10:3c:10:80:3b:25 Properties > Hardware > Device Function Summary > Properties > Details > HardwareIds:

HID\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002057e_PID&0306
HID\{00001124-0000-1000-8000-00805f9b34fb}_LOCALMFG&000f
HID\VID_057E&UP:0001_U:0005
HID_DEVICE_SYSTEM_GAME
HID_DEVICE_UP:0001_U:0005
HID_DEVICE

Properties > Hardware > Device Function Summary > Properties > Details > Matching device Id: HID_DEVICE_SYSTEM_GAME There are other properties too, so if other info is needed please let me know. My Switch version is 10.1.0|AMS 0.14.3|E and although I did most of my testing on MissionControl 0.2.0, I updated to 0.2.1 and confrimed that the controller is still not connected. I am able to connect a Wiimote, so the sysmodule is functioning.

JacobKotrla avatar Sep 17 '20 02:09 JacobKotrla

Thanks for the detailed report. Are you certain those details came from the Hyperkin controller? I ask because the hardware ID you posted matches that of a Wiimote, which you also connected.

Try this 0.2.1 build with debug logging enabled. It will create bluetooth-mitm.log on the root of your SD card. Try to pair the controller and then grab the log and post it here MissionControl-0.2.1-debug-logging.zip

ndeadly avatar Sep 17 '20 08:09 ndeadly

~~Here's the log: bluetooth-mitm.log~~ (I accidentally overwrote it with a new log or something after viewing it with NX-Shell.) Here's an actual log: bluetooth-mitm.log The Switch does seem to see the the RetroN5 Controller, so that's a good sign. I can't tell if that file includes hardware IDs but I don't see any overlap between this file and what I can see on my PC.

I haven't connected a Wii Remote to my PC in several months, and it doesn't show up in my list of devices (although "Pro Controller" does, even though I've never owned a Pro Controller for Switch or Wii U). I removed all 3 devices I thought were Bluetooth (2 Joycons and "Pro Controller"), and I then tried reconnecting the RetroN5 Controller and looking at properties again. Here is the new HardwareIds field:

BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002057e_PID&0306
BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_LOCALMFG&000f

So I think that section shows the hardware IDs of all of the enabled controllers, and I guess I can't disable the Wiimote for some reason. Properties > Hardware > Device Function Summary > Properties > Details > Matching device Id now says "BTHENUM{00001124-0000-1000-8000-00805f9b34fb}" which is different too.

If I right click on the controller and click "Game Controller Settings", I see a screen with a name I recognize as a Wii controller, under "Installed game controllers": "Nintendo RVL-CNT-01". I wonder if it has something to do with my Bluetooth adapter? The adapter I'm using came with a PC Mii Maker that I think Datel(?) released, so I wonder if it has built-in drivers or something weird that makes it look like a Wiimote is always connected.

JacobKotrla avatar Sep 17 '20 20:09 JacobKotrla

Ah yeah sorry, that's my bad. I've typed out how to use this so many times I just forgot to add the bit about the log overwriting itself. It's not usually a problem for people unless their console crashes.

From the log it looks like the controller is trying to pair using Bluetooth legacy pairing, which requires a pin. My code defaults to sending 0000, but it seems this is being rejected. Do you need to enter anything when you connect it to a pc?

It's possible this controller is advertising itself as a Wii controller, in that case I can try treating it as one and sending the pin it would expect.

ndeadly avatar Sep 17 '20 20:09 ndeadly

See if any of these builds where I try some different pins allow it to pair. Note it shouldn't show up as a controller to the console just yet, but will enter the database if it pairs successfully.

MissionControl-0.2.1-retron5-1234.zip MissionControl-0.2.1-retron5-blank.zip MissionControl-0.2.1-retron5-wii-pin.zip

ndeadly avatar Sep 17 '20 21:09 ndeadly

When connecting to a PC, I leave the PIN field blank, and it connects fine, so I tried a blank PIN first. Instead of the controller lasting for 7 seconds like it usually does, it lasted for 25, so I thought it might have paired, but the database was still missing the RetroN5 Controller.

I tried the Wii PIN next, and the controller continued blinking for over a minute (until the Switch automatically went to sleep, as far as I can tell), and it does show up in the database (the Wii controller was connected previously): 😃 2020091717240800-B2AA81D02C39303EBD04D8D7F246F34A I then installed the 1234 PIN sysmodule, cleared the pairing database, and tried to connect the controller again, and this time the blinking light on the controller only lasted for 7 seconds, which is the same as 0.2.0, 0.2.1, and 0.2.1 with logs. Maybe if you enter a blank PIN first the controller does something that allows a PC to get the PIN, and that's why it's 25 seconds instead of 7 seconds with a blank PIN.

In any case, it's very odd to me that this controller would act anything like a Wii Remote. It's a controller designed for a retro console that only plays cartridge-based games, with no relation to the Wii other than playing cartridges from some of its predecessors.

JacobKotrla avatar Sep 17 '20 23:09 JacobKotrla

Ok, we're making some progress! By the sounds of things it really is imitating a Wii controller. It's not really uncommon to see cheap 3rd party Bluetooth controllers designed to appear as some other known controller. If not purely for the fact that they can rely on existing drivers to make them work.

Try this version where I've whitelisted it as a Wii controller and see if it shows up as a controller to the Switch. If it doesn't, then it's possible that it was actually the blank pin that did it, and you misinterpreted the flashing led as not actually having paired (don't know how to explain the missing database entry though) MissionControl-0.2.1-retron5-experimental.zip

ndeadly avatar Sep 17 '20 23:09 ndeadly

The new version you just uploaded does not seem to detect the RetroN Controller, or even add it to the database. I went back to the Wii PIN option and the controller was added to the database. I then went back to the experimental option (most recent zip), and the controller still would not show up in the native controller menu. Both times I tried to use the controller with the most recent zip, it blinked for 7 seconds only and did not connect.

JacobKotrla avatar Sep 18 '20 00:09 JacobKotrla

Oh yeah whoops I just noticed I forgot to apply the change to the pin. Try this one. MissionControl-0.2.1-retron5-experimental.zip

ndeadly avatar Sep 18 '20 00:09 ndeadly

It connected successfully! 2020091719540600-1E95E5926F1CB99A87326D927F27B47E IMG_4194 Here's what the button mapping is: Left shoulder button: nothing Right shoulder button: left on D-pad Top left dot button: nothing Top right dot putton: right on D-pad "SELECT": + / start "HOME": nothing "START": nothing Left on directional stick (pretty sure it's not analogue): Home button Up on directional stick: - / select Right on directional stick: nothing Down on directional stick: nothing Diagonal directions on this controller work as expected, with up-left pressing minus/select and home at the same time. "+": L "-": B Left on directional buttons: R Up on directional buttons: up on d-pad Right on directional buttons: down on d-pad Down on directional buttons: A

I'm not really sure what the best default mapping is, since this controller isn't remotely retropad-like, but the controller connecting and giving outputs is a good sign!

JacobKotrla avatar Sep 18 '20 01:09 JacobKotrla

Nice, that's a good start! It looks like it's using a different button mapping to a normal Wii controller. Can you run this tool with the controller connected and take note of the changes for each button press and pushing the stick in extreme positions in X and Y? Note the tool lags a second or two behind your button presses since I haven't taken any time to optimise it. hid_report_tool.zip

Another interesting thing to check would be to connect the controller as player 2 or higher and see if the player LEDs are set correctly using the code for Wii controllers.

ndeadly avatar Sep 18 '20 09:09 ndeadly

Here's a link to a spreadsheet with each individual button press and some combo presses (also attached as xlsx): https://docs.google.com/spreadsheets/d/1yDBleMhjGt9cQYam_eOyuzkFa9ImOaXEXWydcaJW6oQ/edit?usp=sharing

I notice some buttons don't appear to have an effect on the right, but when combined with another button that does affect the right, it's different. See the "Combinations" tab for some examples. I also notice some values flicker when changing buttons, even if they aren't the numbers that are supposed to be changing, but I'm not sure if that's a problem or just normal behavior of the report tool. Regarding the control stick, I think it's digital and not analogue, because I can't get more than a 2 different values out of each direction and I hear a clicking noise when moving the control stick indicating exactly when the value changes. Also, none of the systems it was designed for used analogue controls.

The player 2 light works as expected: IMG_4212

Also, it seems that the controller won't reconnect after the console goes to sleep unless I re-pair it. That might be a limitation of the hardware though, I'm not sure (maybe you had to re-pair on the RetroN too but the RetroN was always trying to pair so it wasn't that inconvenient?, idk).

JacobKotrla avatar Sep 18 '20 21:09 JacobKotrla

Hey, sorry this has taken so long. Had a bunch of other things to do and this controller acting like a Wii controller was creating some annoyances.

Anyway, see if this build maps the controls more sanely MissionControl-0.2.1-retron5-experimental.zip

ndeadly avatar Sep 28 '20 22:09 ndeadly

Uh, the mapping appears to be completely the same as it was before. I can open exefs.nsp in a hex editor and see that it's very different, but I don't notice any functional difference at all (left on the control stick is still home, "SELECT" is still +, etc.).

No worries about the wait! A wait of several days is tiny compared to the amount of time this could be useful for (which is to say, until people stop using Switches (at least decades away probably 😃)).

JacobKotrla avatar Sep 30 '20 05:09 JacobKotrla