Skip to main content

AVR DuoChord

This page covers the common operations and limits of ATmega32U4 + nRF51822 DuoChord (DuoChord for short), used by the DuoChord backend of G60, Kamilia, Command65, Manta 40s (Hotswap/Solderable/Ortho), and Skog Reboot.

DuoChord and Bluefruit use different UART protocols and slot management; their firmwares are not interchangeable. Migrating from Bluefruit for the first time requires a fixed sequence, see Legacy BLE firmware → DuoChord first migration.

How it works

  • The AVR (ATmega32U4) handles matrix scanning and keyboard state.
  • The nRF51822 module handles BLE transport; the AVR drives it over UART with a binary frame protocol.
  • The module supports five host slots (BLE1–BLE5), pairing, status queries, and OTA.

Five slots

DuoChord keeps 5 BLE slots:

KeyFunction
BLE1BLE5Switch to the slot; empty slots stay silent
PAIRClear the current slot's old peer/orphan, then pair
CLRClear all BLE bonds and slot selection
PAREnter pairing (equivalent entry point)
RSTReset the module / restore defaults
TOGToggle between USB and the most recent wireless channel
USBSwitch to USB mode

Pairing

  1. Switch to the target slot (BLE1BLE5).
  2. Press PAIR to enter pairing (the module clears the current slot first).
  3. Search and connect on the host.
  4. After pairing, the slot is bound to that host.

CLR clears all pairing records and slot selection; every slot must be re-paired afterwards.

OTA boundaries

  • DuoChord supports OTA of the nRF application (via DfuTarg mode).
  • OTA updates the application only; it does not touch SoftDevice, bootloader, UICR, or settings.
  • For routine nRF application updates, use the Shift + F twice confirmation entry to enter DfuTarg, then perform OTA.
  • When migrating from Bluefruit for the first time, flash the AVR DuoChord firmware first, then enter DfuTarg; do not skip the migration flow.

Limits and notes

  • Slot and pairing state lives in the module; restoring AVR firmware usually does not lose it, but some devices may need re-pairing after an upgrade.
  • The DuoChord binary protocol does not understand Bluefruit AT commands, and vice versa.
  • If OTA fails in DfuTarg, try another cable and confirm the OTA package matches your PCB.

Troubleshooting