Controller Support Request for "Hyperkin RetroN 5 Bluetooth Wireless Controller"
I have a Hyperkin RetroN 5 controller that came with a RetroN 5. Here are some pictures of it:
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.
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
~~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.
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.
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
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): 😃
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.
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
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.
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
It connected successfully!
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!
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.
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:
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).
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
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 😃)).