Skip to content

Releases

v0.2.1

Choose a tag to compare

@Inriconus Inriconus released this 11 Nov 01:54

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 -Dongle from 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.ps1 instead. Then copy switch2_ll.uf2 onto the NICENANO drive. 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 the NICENANO drive with tools/bootsel.ps1 or by tapping RST to GND twice quickly, copy wipe.uf2 onto it, wait for the drive to come back, then copy switch2_ll.uf2. It starts fresh in dongle mode, with nothing paired.

v0.2.0

Choose a tag to compare

@Inriconus Inriconus released this 09 Nov 00:59

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.uf2 onto the NICENANO drive. 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

Choose a tag to compare

@Inriconus Inriconus released this 20 Sep 20:15

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 the NICENANO drive. 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 with adafruit-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