Skip to content

Glossary

One short definition per term used on this site, with how it is known and the page that explains it.

Conventions

Byte strings are lower-case hex in code spans; a params or reply string starts at frame byte 8 (see Transport). Command ids are written category/subcommand, for example 30/1004. Versions are written 3.41.0 (keyboard) and 2.3.3 (module); the keyboard reports them with a leading zero on the wire (see Firmware versions).

Terms

Term Definition Evidence See
Ack The reply to a write. Its status byte says the frame was parsed; it does not prove the write was applied (read back). A REMAP write ack echoes the layer or slot index. MEASURED (owner's board, 3.41.0) Transport
Active profile The NayaFlow profile marked ON_BOARD, the only one "Flash Create" writes (UI: "Active profile (flashes to Naya device)"). STATIC DOC NayaFlow and NayaCore
Batch (vendor term) A shipment wave of the Create. Batch 0 = 100 test units (January 2025, tester firmware without remapping or modules); Batch 1 about 150; Batch 2 two waves of 250; Batch 3 two waves of about 500; Batch 4 about 1300; the vendor called Batches 0-2 production-validation units; all pledges had shipped by 2025-09-11. DOC (Kickstarter updates 18-22 and 25) History
Battery Zero (vendor term) The vendor's name for a rare fault that drains a module "beyond recovery"; it announced firmware and hardware fixes and a recovery mode (see Recovery mode; NayaFlow 1.3.8 notes "module recovery support for battery Zero"). DOC (Kickstarter update 21, 2025-06-16; 1.3.8 notes) Power
Bay (module bay) The dock on each half where a module sits; the left bay and right bay each light a 24-index block of the LED map (88-111, 112-135). MEASURED (owner's board, 2026-09-08) Module dock
Bay record A keymap record at positions 0x4a-0x51 (one per module type and side) whose type byte picks the module-config slot that layer uses; 78 means "inherit from the base layer". MEASURED (owner's board, 3.41.0, 2026-09-03) Keymap
Beta channel NayaFlow-Beta, a separate app published from NayaTech/NayaFlow-beta-releases (16 releases, 2025-09-01 to 2026-07-17); three keyboard firmwares shipped only there (3.39.4, 3.40.0, 3.40.4). DOC STATIC History
Body, wing, dock The three hinged parts of a half: the main body, the wing (outer two key columns, tenting hinge) and the dock (thumb keys and module ring). DOC (Create manual v1.1.x p.9) The keyboard half
Boot pass The 1-1.7 s every half spends in its bootloader at power-on (USB PID 0x006F left, 0x00D3 right) before the application starts; distinct from a half parked in the bootloader, which stays until an SMP reset. MEASURED (owner's boards, 2026-09-22) Bootloader
Buffer cell (internal battery) The small cell in each half that keeps it running while a module is swapped; not meant to power normal use. DOC (manual p.4; FCC exhibits) Power
Byte 3 (chunk countdown) Frame byte 3 counts the frames still to come: in a chunked write (02 01 00) and in a multi-part read reply (03 02 01 00 for a four-chunk layer); 00 on a single frame, on write acks and on every read request. MEASURED (our captures of 2026-09-01, 09-03 and 09-17) Transport
Category Frame byte 4, the command family: 30 REMAP, be Bluetooth, ca charger, de module, ed LED, ee reset, f1 firmware, fa SPI flash, fe system, ff host-side meta. STATIC MEASURED (nayactl; NayaCore) Command map
Central / peripheral The left half is the central: it owns every REMAP store, drives both halves' LEDs and reaches the right half as dst 0x51 for the reads it relays (see Relay); the right half is the peripheral. MEASURED INFERRED (owner's board, 3.41.0) Split link
Continue flag The request flags byte 01, asking for the next chunk of a chunked read; 00 starts (or restarts) the read. MEASURED (owner's board, 3.41.0) Python recipes
CRL / CRR / DG The FCC IDs 2BQ4V0825CRL (left half), 2BQ4V0825CRR (right half), 2BQ4V0825DG (dongle); grantee code 2BQ4V. DOC (FCC filings) Regulatory records
Crown, Gesturepad (vendor terms) The Tune's outer rotating ring and its inner touch surface. DOC (Tune manual v1.1.x p.6) Tune
Danger Zone NayaFlow's section with destructive buttons: force module update, Test and Format SPI-Flash (ZMQ event repair_flash), Clear all keymap data (clear_data), Clear BLE Devices (clear_ble_devices). NayaCore dispatches clear_data to its ClearAllData operation, which sends 30/10ca; clear_all_data is that operation's process name, not an event. STATIC DOC NayaFlow and NayaCore
Destination (dst) Frame byte 2 of a request: 0x50 the left half, 0x51 the right half (on the right half's own port, or through the left half's port for the reads the left relays; see Relay). MEASURED (owner's board; create-legacy-firmware1) Transport
Dock-bus address The byte a docked module answers with (de/1001, de/1007): bit 0 is the side, the high nibble the type (0x10 Touch, 0x20 Track, 0x40 Tune; 0xF0/0xF1 not booted). MEASURED (owner's board; nayactl pull request #2) Modules
ED The LED command category (0xed), for live effects and three persistent settings (ed/1012 scan mode, ed/1013 maximum brightness, ed/1014 LED action override). STATIC MEASURED (owner's board, 2026-09-13/16) LEDs
EOT The 04 byte that ends every frame. STATIC Transport
Flags byte / status byte Frame byte 8, and the first byte of every params or reply string on this site. In a request 00 (or 01 = continue); in a reply the status: 00 last, 01 more, 11 not implemented, 16 nothing stored, 18 nothing stored (continuation), ea value refused. MEASURED (owner's boards, 3.41.0 and 3.28.7) Transport
Flash generation A / B Two keyboard hardware variants (flash parts) that need different images; B images carry _64 in their names (kb_fwl_64.bin); NayaCore tells them apart by USB PID bit 0x1000. STATIC Firmware images
Flavor (interrupt flavor) The hold-tap decision rule stored in every hold-tap record (ZMK's balanced, tap-preferred, hold-preferred, tap-unless-interrupted); valid values 0-3 (4 stops every key). 00 behaves as hold-preferred, 01 as balanced and 02 as tap-preferred (ZMK's order), so NayaFlow's default "Balanced", written as 00, types as hold-preferred; 03 is not measured. MEASURED STATIC (owner's board, 3.41.0, 2026-09-03/17 and 2026-09-253) Settings and timing
flow-bg-server NayaFlow's Go background server (HTTP API, database, ZMQ bridge). STATIC NayaFlow and NayaCore
Force update (module) NayaFlow's forced module-firmware update for a module that does not answer. DOC Module firmware
Frame One message on the USB serial link: aa, three header bytes, category, size, subcommand (2 bytes), flags, payload, XOR checksum, 04. STATIC MEASURED Transport
Hold-tap A key record with a tap action and a hold action (record types 03 and 10); its body carries the hold kind, tap kind, flavor and tapping term. MEASURED (owner's board, 3.41.0) Keymap
Hollow port A half whose own USB port opens, completes the handshake and then answers every command with an empty payload while the half still types; seen on the right half while the halves ran different firmware (left 3.41.0, right 3.35.4), and it ends when they match. MEASURED (create-legacy-firmware1) Transport
HWID NayaCore's id for a half, equal to the half's USB serial string and to the fe/1004 reply. STATIC MEASURED NayaFlow and NayaCore
KEYHASH The SHA-256 of the public signing key stored in each MCUboot image; one value across every stock keyboard image of the 25 stable releases and of the 16 beta releases. STATIC (create-legacy-firmware manifests) Firmware images
KK A key position byte (0x00-0x49 for the 74 keys); it equals the record's position. MEASURED Layout and positions
Layer list The keyboard's table of layers, one 20-byte entry each [index][id][animation][10][16-byte UUID]; names are host-only. Read with 30/1001, written with 30/1002; rewriting it byte for byte restores stored lighting on both halves. MEASURED (owner's board, 3.41.0, 2026-09-03/10) Layers
LED map 136 entries per layer [position][hue u16 LE][saturation] covering keys, side bars and both module bays; saturation 150 means "no color set". MEASURED (owner's board, 3.41.0) LEDs
LEN / size In a record, LEN is the parameter length (record = LEN + 3 bytes); in a frame, the size byte counts subcommand, flags and payload (payload + 3). MEASURED Transport
M_Firmware / FlashMemory.bin The left half's store for module firmware and the 1 MiB LittleFS bundle NayaFlow uploads into it (SMP image id 4). STATIC Module firmware
MCUboot The bootloader on each half (serial recovery over USB CDC, SMP protocol); it only accepts images signed with Naya's key. STATIC MEASURED Bootloader
Module-config slot An entry of the keyboard's module-config store (30/1009 list, 30/100b/30/100c data); slot 0 is a blank template; layers pick slots through bay records. MEASURED (owner's board, 3.41.0, 2026-09-02/03) Modules
Motion category The first u32 of a two-word 0f record in a module field: 0 pointer X, 1 pointer Y, 3 buttons, 4 vertical scroll, 6 horizontal scroll, 8 zoom. MEASURED STATIC Module fields
NayaCore NayaFlow's C++/Qt service that does all device I/O. STATIC NayaFlow and NayaCore
NayaFlow Naya's desktop configurator (Electron). DOC NayaFlow and NayaCore
OneKey OpenFlow's name for up to four behaviors on one key (tap, hold, double tap, tap + hold). DOC (OpenFlow) Tools
Params / reply string This site's way of writing a frame's contents: every byte after the two subcommand bytes up to the checksum, starting with frame byte 8 (the flags byte in a request, the status byte in a reply). fe/1002 reply 00 00 03 29 00 = status 00, then the version bytes. DOC (this site's convention) Transport
Parked A half sitting in its bootloader (no lights, no typing) until an SMP os reset sent to the port that answers SMP, or a power cycle; recoverable. MEASURED (owner's board, 2026-09-08 to 09-20) Recovery
Position The index of a record in a layer: 0x00-0x49 keys, 0x4a-0x51 bays, 0x52 and up the second bank. MEASURED Keymap
ProtocolCDC / SystemCDC NayaCore's names for the binary protocol channel (the one this site documents) and the retired text channel (answered only by firmware older than 3.31.1). STATIC DOC (1.17.2 notes) History
Record One entry of a layer, [position][type][len][param...]. MEASURED Keymap
Recovery mode (module) The MODULE_FORCE_CHARGING key (record type 06, id 401), which force-charges a critically drained module in that half's bay; the module is unusable meanwhile and the mode ends by itself or on restart. MEASURED DOC Disassembly
Relay (dst 0x51 on the left port) A request sent to the left half's port with dst 0x51. The left half relays only some reads: the firmware-version read reaches the right half (on 2026-09-20 the left port read the right half's 3.35.4 while the right half's own port was hollow), but Bluetooth identity reads come back for the left half, and the right half's port cannot reach the left half. Which sender byte a relayed reply carries is OPEN (details). MEASURED (create-legacy-firmware1) Transport
REMAP Category 0x30: layer list, layer data, LED maps, module configs, clear-all (30/10ca). STATIC MEASURED Command map
Resource A stock firmware file as shipped: the whole 663 552-byte slot (header, encrypted image, TLVs, padding and a pre-written swap trailer). STATIC Firmware images
Second bank Positions KK + 0x52, where double tap and tap + hold live for key KK. When a key has either, NayaCore puts both banks inside a type-10 wrapper ([term u16][inner type][inner param]): a 27-byte record around a two-behavior pair, a 10-byte record around a single key press; NayaCore's logs print the same forms. MEASURED STATIC (USB capture, 2026-09-03; NayaCore 6.11.0; keys written in these forms typed as set on 3.41.0, 2026-09-26) Keymap
SMP The mcumgr management protocol the bootloader speaks (CBOR over framed serial), used to upload images (image upload, slot id 2 for the keyboard, 4 for the module bundle) and to reset (os reset). STATIC MEASURED Bootloader
.sfb An encrypted module firmware file (Touch_UserApp.sfb, Track_, Tune_, Float_, Query_, each with a HASH file) inside FlashMemory.bin, staged in the left half's flash for the module to update from. STATIC Module firmware
Speedlink (vendor term) The vendor's name for the wireless dongle (model NAYA-100-1, FCC ID 2BQ4V0825DG). DOC (manual) Speedlink dongle
SPIFLASH_TEST (fa/1001) The read-only SPI-flash self-test; per partition a state and five return codes. STATIC MEASURED (2026-09-10) Python recipes
Split link The Bluetooth connection between the two halves (7.5 ms interval, 4 s supervision timeout on 3.41.0). MEASURED (owner's board, 3.41.0, be/100c) Split link
Status 16 The reply status meaning "nothing stored for this read" (a header-only frame; 18 on a continuation). MEASURED (donor board, 3.28.7, 2026-09-19) Transport
Subcommand Frame bytes 6-7, big-endian (10 04 for 0x1004). STATIC Transport
Tapping term The hold-tap time in ms, stored inside every hold-tap record (both banks); NayaFlow writes its global value into each record; there is no device-wide term. MEASURED (owner's board, 3.41.0, 2026-09-17) Settings and timing
Trailer (swap trailer) The last bytes of a stock resource (image_ok = 01 and the MCUboot magic), which make the bootloader swap the new image in permanently as soon as the upload ends. STATIC MEASURED (flashes of 2026-09-20) Firmware images
Two-word record A record whose parameter is two u32 values, command first (for example Bluetooth, LED keys, mouse buttons, module motion). MEASURED STATIC Disassembly
Version gate A minimum keyboard firmware NayaCore requires for an operation or a command (for example 3.30.0 for REMAP commands, 3.36.0 for the activity timeouts). STATIC Disassembly
Wedged A half whose command handler has stopped: it answers nothing and may stop typing until it is unplugged or power-cycled. Any configuration write of three frames wedges 3.28.7; oversized single 30/100e frames are reported to wedge 3.41.0. A half parked in its bootloader is not wedged: an SMP os reset brings it back. MEASURED (donor board, 3.28.7, 2026-09-19) REPORTED (the 30/100e case2) Differences by firmware
XOR checksum The XOR of subcommand high through the last payload byte (not the size byte). STATIC (NayaCore's broker frames) Python recipes

Open questions

  • OPEN Whether flavor 03 is tap-unless-interrupted, as ZMK's order predicts (details).
  • OPEN The sender byte of a relayed reply (details).

Sources


  1. create-legacy-firmware, FLASHING-PROCEDURE.md, "Measured on hardware, both halves (2026-09-20)". ↩↩↩

  2. nayactl, pull request #6. ↩

  3. OpenFlow, commit 036d04c: a home-row typing test on the owner's board (3.41.0, 2026-09-25) with hold-tap records at flavor 00 and 01. ↩