Building a Wii Remote for the Nintendo Switch 2
The Switch 2 can use a mouse now. You flip a Joy-Con on its side, slide it around on the table like a mouse, and in the games that support it, that's exactly what it is. The first time I saw that, my brain went straight to the Wii.
I like the fun little gimmicks Nintendo builds a whole console around. The Wii had you waving a remote at the screen and the Switch 2 has you sliding a Joy-Con around like a mouse. So I wondered how hard it'd be to mash them together. Point at the screen like a Wii remote, but have the Switch 2 think it's just a mouse.
The first prototype
I started with the smallest version I could get away with. An ESP32, a cheap dev board with wifi and Bluetooth built in, wired to a gyroscope. Read the rotation, turn it into cursor movement, send it to my computer as a Bluetooth mouse. Twist the board right, the cursor goes right.
It worked, and it immediately felt like a Wii remote, which was the entire point.
But two problems killed it as a Switch 2 controller. The console doesn't take Bluetooth mice. It wants a mouse plugged in over USB, so this would never talk to it at all. And the board was tethered to my computer the whole time, which is a strange quality in something you're calling a remote.
Going wireless, and onto USB
So I ordered a second ESP32, this time one with built-in USB support, and rebuilt the whole thing as two boards instead of one.
One board is the remote. It's the gyro, two buttons for left and right click, a button to recenter the pointer, and a 9V battery zip-tied to the back so it runs with nothing plugged into it. That's the part you hold and wave around.
The remote, front and back. The 9V battery on the back is what makes it cordless.
The other board is the receiver. It plugs into the Switch 2's USB port and does exactly one job, pretending to be a mouse. The console never knows anything unusual is happening. As far as it's concerned, someone plugged in a normal USB mouse.
The two boards talk to each other over ESP-NOW, a lightweight radio protocol built into these chips. There's no wifi network to join and no pairing dance. You tell one board the other's address and they just start talking. The remote streams its motion across roughly 125 times a second, and the receiver turns each of those into mouse movement on the console.
It works on the Switch 2
Plugged the receiver into the dock, waved the remote, and the pointer moved. The console just saw a mouse.
Point at the screen and the cursor follows, the same way a Wii remote does, except the thing on the other end is a Nintendo Switch 2 running its normal mouse mode.
Where it could go
I'm not sure I'll keep going with this. It already did the thing I set out to prove. But there's a long list if I do.
The obvious stuff is making it less of a science-fair project. Shrink it onto a custom circuit board instead of a breadboard, 3D-print a real grip so it isn't a battery zip-tied to some electronics, add a scroll wheel.
The more interesting direction is getting rid of the receiver entirely. Instead of pretending to be a USB mouse plugged into the dock, the remote itself could pretend to be a Joy-Con and talk to the Switch 2 directly. That's one board instead of two, no dongle hanging off the console, and probably better support across games, since the system would treat it as a real controller. And if I'm already faking a Joy-Con, I might as well go all the way and build it like one. A normal Joy-Con in every respect, except that where a real one gives you mouse mode, this one gives you a Wii-style motion mouse.