Skip to content

Technical transmission concept and binary data packet

6 bytes. One decoder. The same payload over BLE Coded PHY and WiFi UDP.

One Binary Packet for Every Transport

SteadiTally uses one compact binary data packet for all supported transmission paths. The packet is generated once by the transmitter and is then sent unchanged over:

  • Bluetooth 5.x Long Range / Coded PHY

  • WiFi UDP

  • Bluetooth and WiFi UDP in parallel

The transport does not change the meaning or byte order of the data. A receiver therefore passes BLE and UDP payloads to the same decoder and the same tally-state logic. This keeps the behaviour identical on both paths and allows a receiver to use whichever valid packet arrives first.

This is the same architectural principle used by CameraTally. The packet itself is different: CameraTally carries 16 tally channels and additional control data in 9 bytes, while SteadiTally carries 8 channels, a camera label and the program duration in only 6 bytes.

Packet Overview

The normal SteadiTally packet is exactly 6 bytes long. Multi-byte values use big-endian byte order: the most significant byte is transmitted first.

Byte Field Meaning
0 Marker 0xA1, identifies a SteadiTally packet.
1 Camera code Optional camera number or letter shown by compatible displays.
2..3 Tally matrix Eight tally channels with two bits per channel.
4..5 Duration Unsigned 16-bit program duration in seconds.

A packet is accepted only when its length is exactly 6 bytes and Byte 0 contains 0xA1. There is no fallback to the former readable L1 text format.

16-Bit Tally Matrix

The lower 16 bits of the 24-bit internal matrix contain eight independent SteadiTally channels. Each channel occupies two bits.

Channel Bits 0 1 2 3
STDI-A 0..1 OFF Preview Program Reserved
STDI-B 2..3 OFF Preview Program Reserved
STDI-C 4..5 OFF Preview Program Reserved
STDI-D 6..7 OFF Preview Program Reserved
STDI-E 8..9 OFF Preview Program Reserved
STDI-F 10..11 OFF Preview Program Reserved
STDI-G 12..13 OFF Preview Program Reserved
STDI-H 14..15 OFF Preview Program Reserved

Program is the red tally state. Preview is the optional green tally state. Receivers on which Green Tally is disabled ignore Preview and remain in the OFF display state.

The selected SteadiTally channel and the camera label are independent. The channel determines which wireless tally group a receiver listens to. The camera label is only display information. For example, STDI-C may carry the camera label 7, A or no label at all.

Camera Code

Byte 1 contains the optional camera label:

Value Displayed label
0 No camera label
1..99 Camera number 1..99
100..120 Allowed camera letters

Letter values are assigned in this order:

A B C D E F G H K M N P R S T U V W X Y Z

The easily confused letters I, J, L and O are deliberately not used. Letter A is encoded as 100 (0x64), B as 101, and so on through the allowed-letter list.

Program Duration

Bytes 4 and 5 contain the program duration in seconds as an unsigned 16-bit value:

duration = (byte4 \<\< 8) | byte5

The field can represent values from 0 to 65,535 seconds. During Program, the receiver runs its own local display timer so that the screen does not depend on every individual radio packet. When Program ends, the transmitter sends the final duration again. The receiver then applies this final value, correcting any small difference between the independent clocks.

This provides two benefits:

  • the displayed time runs smoothly even if an individual packet is delayed or lost;

  • the final displayed cut duration is synchronised with the transmitter.

Fully Decoded Example

The following packet means:

  • channel STDI-A is in Program;

  • camera label is A;

  • program duration is 37 seconds (00:37).

A1 64 00 02 00 25

Byte(s) Hex Decoded value
0 A1 Valid SteadiTally marker
1 64 Decimal 100 = camera label A
2..3 00 02 STDI-A state 2 = Program
4..5 00 25 Decimal 37 seconds

Bluetooth Long Range / Coded PHY

On BLE, the 6-byte packet is placed in Service Data using service UUID 0xFD6F. Current Long Range builds use non-connectable extended advertising with Coded PHY for both the primary and secondary PHY.

The configured advertising interval is 20 to 30 ms. The receiver uses passive Coded-PHY scanning and does not establish a Bluetooth connection. This connectionless design allows one transmitter to serve multiple receivers without pairing or maintaining separate links.

The BLE transmit power is configurable in the Advanced Setup menu on supported TX hardware. Actual range still depends strongly on the antenna, installation position, surrounding metal and local RF conditions.

WiFi UDP

WiFi UDP carries exactly the same 6 bytes. The default UDP port is 49334 and can be changed in Advanced Setup. All devices belonging to the same SteadiTally group must use the same production WiFi network and UDP port.

Available transport modes are:

Mode Behaviour
BLE only Send or receive only over Coded PHY.
BLE + WiFi UDP Use both paths in parallel. This is the normal redundant mode.
WiFi UDP only Send or receive only through the configured WiFi network.

In parallel mode, BLE remains available if the production WiFi connection is temporarily unavailable. The receiver treats BLE and UDP as two paths to the same state rather than as two different protocols.

Timing and Link Supervision

State changes are published immediately. In addition, the transmitter republishes the current state approximately once per second as a heartbeat. This lets newly powered receivers acquire the current tally state and allows active receivers to supervise the link.

The current receiver timeout is approximately 2.5 seconds. If no valid packet arrives within this period, the path is shown as lost. In BLE + WiFi UDP mode, BLE and WiFi are evaluated separately, so the display can show, for example, BLE in green and WiFi in red.

Signal-level display and screen drawing are deliberately kept outside the BLE receive callback. RSSI is smoothed, checked at a low display rate and shown using four coloured bars. This prevents the user interface from delaying packet reception.

Validation and Error Handling

The application decoder checks:

  • exact packet length of 6 bytes;

  • marker byte 0xA1;

  • selected channel before applying the tally state.

The packet contains no additional application CRC. BLE already protects the radio frame, and UDP uses the checks available in the IP/UDP transport. A malformed payload or a packet with the wrong marker is rejected.

System Capacity

Up to eight independent SteadiTally channel groups can operate at the same location: STDI-A through STDI-H. Multiple receivers may listen to the same channel, for example a main operator display, a front tally and an additional indicator for the focus puller.

Unlike CameraTally, SteadiTally currently has no separate System ID in the packet. Separation is provided by the eight channel assignments. The optional camera code does not provide system separation and must not be confused with the selected channel.