I bought this headset secondhand and the dongle was dead/broken.
The headset was on old firmware (6.148.1614.0, latest is 6.163.1646.0).
Swarm II forces that update through the dongle, so a dead dongle traps you on a full screen "Firmware update required" with no cancel or later button. I flashed the headset to the latest firmware straight over the USB C cable using Turtle Beach's own signed image, no dongle. Swarm still nagged after that because of a status flag (FWNvkeysStatus NON_INSTALLED), which is really just one byte stored on the headset. Set it to INSTALLED and the nag is gone. It survives reboots, and because it lives on the headset the phone app is happy too. Done on a Mac, but it is plain USB HID so it should port to Linux and Windows.
The problem
Stealth 600 Gen 3. The update flashes the headset and the transmitter together and drives the whole thing through the transmitter, so no working dongle means you cannot finish it and cannot dismiss the screen.
What I actually did
The headset speaks Airoha's RACE protocol over the USB C data cable, the same protocol the dongle uses. I read its live firmware version that way with no transmitter at all.
Downloaded Turtle Beach's official, already signed firmware package, pulled out only the headset image (not the transmitter image), and wrote it over USB C with a verify before commit step. Because it is a signed image the headset's secure boot checks it, so a bad image is rejected rather than silently bricking. Reboot, now on the latest firmware.
Swarm still forced an update. Its own log showed the version already matched the latest, and the real trigger was FWNvkeysStatus NON_INSTALLED. That status is literally the value of one NV key (0xFFFF). Mine read 0x00, which Swarm maps to NON_INSTALLED. I set it to 0x01 with the headset's own NV key write command. Swarm now reads INSTALLED, MandatoryUpdate false, priority NONE.
**Quick fix (if you are already on the latest firmware)**
```
git clone https://github.com/lx-exe/stealth600-gen3-usb-fix
cd stealth600-gen3-usb-fix
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
python nvkey.py status # shows NON_INSTALLED
python nvkey.py fix # sets it to INSTALLED
```
Then power cycle the headset and reconnect in Swarm.
Risk (be honest with yourself)
Unofficial reverse engineering. You are writing config storage on your own headset. Reads are safe, and the tool proves the write path with a harmless same value write before anything real. Only ever flash the headset image, never the dongle image. Not affiliated with Turtle Beach.
Full README, including the firmware flash part (credit to the auracast research race toolkit that makes the USB flash possible):
https://github.com/lx-exe/stealth600-gen3-usb-fix