Nintendo Switch 2 controllers now work as EMDR tappers
High-quality bilateral stimulation at a fraction of the cost. Plus the first game controller support on Apple Watch.
A pair of Nintendo Joy-Con controllers is, mechanically, a pair of EMDR tappers: dual handheld devices that alternate left-right vibrations for bilateral stimulation in EMDR therapy. But where dedicated tappers can cost up to €300, Joy-Cons cost €80. And millions of people, including therapists, already own Joy-Cons.
So we’ve added support for the Joy-Con 2 - and other Switch 2 controllers - to our EMDR app for iPhone, iPad and Apple Watch (additional platforms follow later). Users connect directly in the app, start a session with a tap on the screen (or the press of the A button), and the controllers will alternate HD Rumble vibrations between the left and right hand, at an adjustable speed and intensity. No pairing through Settings, no external tools required. To our knowledge, this is the first app to support Switch 2 controllers on a non-Nintendo platform.
First game controller support on Apple Watch
The EMDR App for Apple Watch is now also the first Apple Watch app to offer any kind of game controller support. Apple's GameController framework has never been available on watchOS, so no app has been able to connect an external controller to the watch — we built our own Bluetooth stack from scratch to make it possible. To show what that enables, we built a small 3D fishing game controlled entirely by Switch 2 controller buttons and gyro, centered around responding to the controller's vibration:
We included the game as an easter egg in the EMDR app on all platforms. Connect your Switch 2 controller, then tap the fish at the bottom of the Devices page.
Why game controllers?
Game controllers are rarely considered for uses beyond gaming. We noticed their therapeutic potential a few years ago, when we realised that split Joy-Con controllers for the original Switch essentially function as EMDR tappers. So we were early in adding support for the original Joy-Cons: a year before Apple officially supported them in their GameController framework. The bilateral vibration was a natural fit, and it turned out to be one of the features that our users cared most about. We consider it a nice example of designing by informed intuition. When the Switch 2 launched with its new controllers, the goal was obvious. The implementation ended up taking roughly one month, from the initial BLE scanning to custom HD Rumble haptics.
Ghosting Joy-Cons
Achieving this was, as expected, not easy. For starters, Switch 2 controllers don’t show up in the iPhone’s Bluetooth settings. They advertise a non-standard BLE service that Apple’s Bluetooth UI simply ignores entirely. So you can’t discover them, let alone connect to them, through normal means. We ended up writing our own Switch 2 controller API. The entire Bluetooth communication layer, from discovery to connection and from input parsing to haptic output, is custom written, built on top of the CoreBluetooth framework.
Getting there was an exercise in brute force. The controllers stream 63-byte input reports at roughly 33 Hz, packed with button state, analog stick positions, accelerometer and gyroscope data, and battery voltage. Getting HD Rumble to work meant figuring out a 24-byte haptic frame format through systematic experimentation, as no documentation existed for it. Even then, the controller would ghost us when we hadn’t completed the full handshake. It would stream input data, but ignore all of our own commands. And the controller would crash when it received buffers under 8 bytes - we learned to pad every command.

Through our research, we’ve had to significantly extend available protocol documentation. Some of our research went well beyond the requirements of the EMDR app, and we believe it represents the most comprehensive understanding of Switch 2 controller communication to date.
For developers and researchers
We’ve extracted our Bluetooth module that takes care of connecting Switch 2 controllers into a standalone Swift package that supports iOS 17+, macOS 14+, tvOS 17+, visionOS 1.0+, and watchOS 10+. It provides a very convenient manager that supports every type of Switch 2 controller, and handles scanning, connection, button/stick reading, GameCube analog trigger reading, calibration reading, battery level and status reading, orientation reading, LED control and HD Rumble vibration control. HD Rumble is fully supported: variable intensity, individual motor control, and a pipeline to turn Apple’s AHAP vibration files into haptic patterns. It comes with nearly 200 Swift Tests and two example apps.
We see the package as an easy way to integrate Switch 2 controller support in any app or game on an Apple platform. We're interested in hearing from developers, researchers, and organisations who want to integrate Switch 2 controller support into their own projects. Get in touch via our team page if this is relevant to your work.
The EMDR app update is out now for iPhone, iPad and Apple Watch, and will come later to Mac, Apple TV and Apple Vision.