Repository navigation
Releases
v0.2.1
v0.2.1
Snappier sticks on the Switch 2, and two ways back to dongle mode for a puck whose controller can no longer send the chord.
Lower latency
- Reports go out as input arrives. As a Switch 2 Pro Controller or the Joy-Con pair, the puck sends a report as soon as the Steam Controller's input reaches it, with a 4 ms fallback, the timing of a real Pro Controller 2. It was a fixed 8 ms.
Getting back to dongle mode
Pairing the Steam Controller to another puck in the same slot takes it away from this one, and then nothing can hold the chord that reaches dongle mode. Now there are two ways back without one (#3):
- Replug three times. Plug the puck in and pull it out twice, a second or two each time, then plug it in a third time and leave it. That power-up is the Steam dongle.
tools/bootsel.ps1 -Donglefrom a Windows PC, with the puck plugged in as a Switch 2 Pro Controller or the Joy-Con pair.
Either way it lasts one power-up, as the chord does. Pair the controller again from there, on its second slot if it is also paired to a Valve puck (see "Pair the Steam Controller" in the README).
Updating from v0.2.0
- In dongle mode, open the config page and press Update firmware. As a Switch 2 Pro Controller, run
powershell -ExecutionPolicy Bypass -File tools/bootsel.ps1instead. Then copyswitch2_ll.uf2onto theNICENANOdrive. Pairings and settings are kept. - The two ways back only exist once a puck runs v0.2.1. A puck already stuck on v0.2.0 can be reset to a bare board with
wipe.uf2, attached here: get theNICENANOdrive withtools/bootsel.ps1or by tapping RST to GND twice quickly, copywipe.uf2onto it, wait for the drive to come back, then copyswitch2_ll.uf2. It starts fresh in dongle mode, with nothing paired.
v0.2.0
v0.2.0
The puck can now be a Switch 2 Pro Controller or a Joy-Con pair, alongside the Switch 1 Pro Controller.
New controller types
Hold the four back paddles plus a button for two seconds to switch:
-
B: Pro Controller
-
B + R1: Pro Controller, with the right trackpad as a USB mouse
-
A: Switch 2 Pro Controller, the default
-
X: Joy-Con pair
-
Y: the Steam dongle, for one power-up
-
Switch 2 Pro Controller. Copied from a real one: buttons, sticks, motion with calibration, and rumble. The upper back paddles are GL and GR. Plugging it into the console registers the puck for waking, with nothing else to do.
-
Joy-Con pair. A right Joy-Con over USB and a left one over BLE from one puck, with motion and rumble on both. The right trackpad becomes the Joy-Con mouse, as games such as Star Fox use. The left Joy-Con registers once from Change Grip/Order.
-
Switching to or from the Joy-Con pair leaves USB for a few seconds, as an unplug does, so a game in progress asks for the new controller by itself.
Also new
- Nintendo face-button layout. Face buttons can follow position rather than label, so the Steam Controller's A presses B, B presses A, X presses Y and Y presses X. On by default for new pucks, set under Controls > Face buttons. Only what the console sees changes; Steam on a PC keeps its layout.
- Gyro strength per axis, on the config page. Left and right defaults to 4.
- Trackpads as sticks, an option for the Switch 2 Pro Controller.
- Update firmware on the config page, so reflashing needs no reset contacts.
- Richer chimes, one per controller type, edited on a pitch-by-time graph with slides, buzz and MIDI import.
- Colors for the new types, shown on the console.
- Controller update offers. Accepting one raises the reported firmware version and restarts, so the offer does not come back. The versions can also be set on the config page.
- RF channel setting, for a controller that drops out near busy Wi-Fi.
- Off is off. With the Steam Controller off, the puck leaves USB so the console frees the player slot.
- A redesigned config page with tabs, a shortcut grid for the controller types, and clearer descriptions.
Fixes
- A controller that Steam paired into another slot is moved to slot 0.
- Faster wake and boot.
Updating from v0.1.0
- In dongle mode, open the config page and press Update firmware, then copy
switch2_ll.uf2onto theNICENANOdrive. Pairings and settings are kept. - Settings carried over keep their values, so the new defaults above only apply to a fresh puck or after Restore defaults. In particular, pick Face buttons > By position for the Nintendo layout.
- Building it yourself: the 5 ms link layer patch grew. An SDK patched for v0.1.0 needs both patches applied again; see "Building" in the README.
Thanks to Arianne Orpilla for the faster wake and boot, the default paddles and the Update firmware action, and the west build fallback.
v0.1.0
Firmware for an nRF52840 puck: a Steam Controller in over Valve's own RF
protocol, a Pro Controller out over USB to a Switch 2, and a BLE wake for a
sleeping console.
Flashing
Check the SoftDevice first. Open INFO_UF2.TXT on the board's bootloader
drive and confirm it reads SoftDevice: S140 version 6.1.1. The README explains
what happens if it does not, and how to restore it.
switch2_ll.uf2: copy onto theNICENANOdrive. Double-tap reset to get
there. The drive disappears and the board reboots as the puck.switch2_ll.zip: the same firmware as a serial-DFU package, for a board
sitting in serial DFU withadafruit-nrfutil.
In this release
- Steam Controller over RF, presented to the console as a Pro Controller:
buttons, both sticks, motion, rumble, and the right trackpad as a mouse. - Hold QAM to wake a sleeping Switch 2 over BLE, then straight back to RF.
- Chimes on the controller's haptics before a wake, and before a USB-mode
switch. Notes, lengths, per-note haptic and volume are all editable. - A config page served by the puck itself in dongle mode, over WebSerial in
Chrome or Edge.
Building it yourself
Built against nRF Connect SDK v3.4.0, with the link-layer patch in patches/
applied to the SDK's Zephyr tree. Firmware built without that patch never
completes a connection to the console.
A rebuild of this tag reproduces switch2_ll.uf2 byte for byte. The .zip
will differ: adafruit-nrfutil writes a fresh manifest and archive timestamps
on every run, around the same firmware image.
SHA-256
cd293f2dbca77e69c755a5bd80cd4ae1bc5640a84f7001f238e02d3c187ccf5c switch2_ll.uf2
03531dbf997bd8e8841a942549dcc37b80721d81afd7c00c78409fa64ab34ec0 switch2_ll.zip