Skip to content
Free shipping on orders over $2,000.

Hardware and firmware contract

What ships on every QuickComm device: the fixed audio contract, the capabilities on the board, what the firmware does and deliberately does not do, and what you can change without a reflash.

10 min read

You are buying a piece of hardware that is deliberately, aggressively stupid. The device is a microphone, a speaker, a button and a MAC address. It holds no menu, no order, no task list, no user list and no conversation state. It does not know what business it is in.

That is the whole reason this integration is possible. Because the device holds no business logic, the same flashed firmware serves a restaurant, a guard force, a hotel, a warehouse or a clinic. What changes is the server it talks to and the logic that server runs.

One firmware, three modes

There is one hardware family and one firmware image. A device's behaviour is selected by a single field, communication_mode, set at provisioning time and stored server-side on the device record.

Modecommunication_modeTransportConversation shapeTypical unit
A — Push-to-talk streamingudpCustom UDP udp-v1, 16 kHz PCM, uplink onlyHuman to human, machine listensEarpiece, Bridge Node
B — Request/response walkieaiHTTPS POST /voice, framed PCM, plus a downlink pollSpeak, get an answer backEarpiece, Bridge Node
C — Full-duplex agentwebsocketWebSocket over TLS, PCM both waysTwo-way conversation with an AI agentTable Top
  • The mode is not baked into the flash. It is a value on the server, handed to the device at provisioning and changeable afterwards, including remotely by a CHANGE_MODE command. A unit shipped as a warehouse walkie can become a counter terminal without a reflash.
  • The modes are not exclusive per fleet. One site can run udp badges for staff and a websocket terminal for customers at the same time, against the same backend and the same data model.
  • A device with a table_id defaults to websocket; every other device defaults to ai. That is enforced in the provisioning schema, not in the firmware.

What is genuinely fixed

These are identical in all three modes and across all three form factors. Treat them as the hardware contract — everything else is configuration or server-side logic.

FixedValue
Audio encodingSigned 16-bit little-endian PCM (s16le)
Sample rate16 000 Hz, mono
IdentityThe unit's MAC address, uppercase colon-separated
Provisioning channelSoftAP captive portal at 192.168.4.1, seeded by QR
Fleet planeHeartbeat, telemetry, incidents, commands, OTA over HTTPS
InterruptionThe physical button. There is no acoustic barge-in

What is on every unit

The three form factors differ in power, mounting and audio interface. The compute, radio and audio platform underneath is the same, which is why one firmware image and one integration cover all of them.

SubsystemWhat you get
Wi-Fi802.11 b/g/n, 2.4 GHz, integrated antenna
BluetoothBluetooth 5.2 (BLE)
MicrophoneDigital MEMS
Audio codec24-bit ADC/DAC
Capture format16 kHz PCM, mono, push-to-talk framed
Pre-roll bufferYes — the first syllable of a transmission is never clipped
Edge processingOn-device voice activity detection and wake handling
Flash8 MB, with an A/B partition layout for rollback-safe updates
Firmware updatesOver-the-air, staged, with per-device rollout control
Remote managementRemote commands, health telemetry, offline detection
StatusRGB LED indicator; Table Top and Bridge Node also carry a status display

Which product speaks which mode

ProductDefault modeAlso supportsWhy
EarpieceA — udpB — aiWorn through a shift, keyed by hand. Push-to-talk streaming is the cheapest mode to run and the kindest to a shared access point. Switch it to ai when the wearer needs an answer spoken back.
Bridge NodeA — udpB — aiSits inline on an existing radio's audio path, so it inherits that fleet's push-to-talk discipline. The host device's own audio stays live.
Table TopC — websocketA — udp, B — aiMains-capable and room-facing, so it can hold a full-duplex conversation and drive the print bridge. Placed on a table, it defaults to websocket automatically.

What the firmware holds

Provisioning is the only moment a device learns who it is. Everything it retains across a power cycle is in this table — there is nothing else in non-volatile storage that affects how it behaves.

KeyExampleNotes
mac_addressAA:BB:CC:DD:EE:FFThe burned-in MAC, or a server-assigned one
property_id4No default. No guess. The device refuses to run without it
organization_id2Carried for convenience
team_id or table_id7Whichever the property type requires
user_id19Optional — who is carrying it
comm_modeudpSelects the transport
server host and portapi.yourcompany.com:443Or a private address when you run the backend
ssid / passwordWi-Fi credentials

What the firmware does

  1. 1Boots. If provisioning is absent or incomplete, it refuses to run and shows a fault. It never guesses a tenant.
  2. 2Joins Wi-Fi, then starts an independent 30-second heartbeat that runs for the life of the session, in every mode, including while audio is flowing.
  3. 3Opens the transport its comm_mode selects and speaks the wire protocol for that mode.
  4. 4Captures 16 kHz mono PCM while the button is held, with a pre-roll buffer so the leading syllable survives.
  5. 5Mutes the microphone whenever its own speaker is producing sound, plus a short tail afterwards.
  6. 6Polls for remote commands when the heartbeat response says there are any, acknowledges them, executes, and reports the result.
  7. 7Checks for firmware updates on boot and hourly, verifies the SHA-256 checksum before flashing, and reports progress and rollbacks honestly.
  8. 8Files an incident when it faults, stamped by the server with the firmware version at the moment of the fault.

What the firmware deliberately does not do

  • It does not decide what a sentence means. Intent, routing and severity are server-side.
  • It does not hold a menu, a task list, a user directory or any conversation state.
  • It does not render receipts. It receives rendered ESC/POS bytes and a LAN address, which is why a receipt layout change never needs a reflash.
  • It does not authenticate a person. Attribution to a staff member is a user_id set at provisioning or per request.
  • It does not resample audio. If your deployment needs a rate correction, that happens server-side where it can be done properly.

What you can change without touching firmware

ChangeHow
Which backend the device talks toProvisioning payload: mode=local with your host and port
Which transport it speakscommunication_mode on the device record, or a CHANGE_MODE command in the field
Recognition languagelanguage on the device record: en, ur, ar or multi
What a spoken sentence meansServer-side intent taxonomy and prompt
What gets created and who it routes toServer-side task and order logic
What the device says back or printsThe mode B notification queue, the mode C agent, the print bridge
Mic-mute tail lengthtail_ms, delivered in the mode C handshake
Firmware versionStaged OTA from your server, with rollback

Something wrong or missing on this page? Tell us.