RF Wireless World

Browse articles, tutorials, tools, and vendors.

Bluetooth Flow Control: Understanding GO & STOP Bits

By RF Wireless Expert Team

Introduction : Imagine pouring water from a firehose into a teacup. If you don’t pause to let the teacup empty, water will spill everywhere. This same problem exists in Bluetooth networking. A powerful desktop computer transmitting a large file can easily overwhelm the tiny, limited memory buffers of a smart ring, fitness tracker or wireless earbud. If the receiver’s memory fills up and the sender keeps transmitting, data packets will be dropped, causing corruption and forcing massive re-transmissions.

To prevent this situation, Bluetooth uses a highly efficient Flow Control mechanism. By utilizing a simple 1-bit “traffic light” in the data stream, devices can seamlessly tell each other to GO or STOP. Let us explore how Bluetooth Baseband handles flow control to prevent buffer overflows.

The 1-Bit Traffic Light (“FLOW”)

In Bluetooth Classic (BR/EDR), flow control is primarily managed by a single bit called the FLOW bit, located in the packet header.

  • FLOW = 1 (GO): This is the default state. It means, “My receive buffers are open and ready. Keep sending data.”
  • FLOW = 0 (STOP): This is the emergency brake. It means, “My receive buffer is currently full. Pause your data transmission temporarily.”

Because Bluetooth communication is full duplex (i.e. data flows in both directions), flow control is independent for each direction. A smartwatch might send a STOP signal to a smartphone to halt incoming file transfers, but the smartwatch can still continue sending heart rate data to the phone.

How the STOP and GO Cycle Works

Flow control at the hardware level (managed by the Link Controller) happens incredibly fast on a packet by packet basis. Here is the lifecycle of a buffer overflow event.

  1. The Buffer Fills: A Peripheral device is receiving Asynchronous Connection Oriented (ACL) data packets. Its internal RX (receive) buffer hits maximum capacity because the Baseband Resource Manager hasn’t processed the data fast enough.
  2. The STOP Signal: In the very next packet the Peripheral sends back to the Central, the hardware automatically flips the header’s FLOW bit to 0 (STOP).
  3. The Sender Pauses: The Central receives the STOP signal. It immediately halts the transmission of new ACL data payloads. However, to keep the connection alive and maintain synchronization, the Central will start sending empty NULL packets or POLL packets.
  4. The Buffer Empties: The Peripheral’s processor finally catches up, moves the data out of the RX buffer and frees up memory.
  5. The GO Signal: The Peripheral sends its next packet to the Central, this time with the FLOW bit flipped back to 1 (GO).
  6. Transmission Resumes: The Central sees the green light and resumes sending the ACL data exactly where it left off.

The Two Levels of Flow Control

To make things slightly more complex, Bluetooth actually utilizes STOP and GO signals at two different layers of the network stack.

1. Packet Header Flow Control

This is the FLOW bit located in the main 54-bit packet header. It is handled instantly by the Link Controller hardware. It prevents the literal silicon radio buffers from overflowing. It is often called “hardware brake”.

2. Payload Header Flow Control

There is a second FLOW bit located deeper inside the packet, specifically within the Payload Header. This controls flow at the software level, specifically for L2CAP (Logical Link Control and Adaptation Protocol) traffic. It is often called “software brake”.

When software flow control is used, developers have to account for Flow Control Lag. Because it takes time for a software level STOP signal to be processed, generated or transmitted over the air and acted upon by the sender, a few packets might already be “in flight.” The bluetooth specification mentions that a receiver must have enough extra buffer space to absorb up to 1792 bytes of “lag data” that might arrive just after a STOP signal is issued.

What Ignores the STOP Sign?

The STOP signal is strictly for asynchronous data (ACL traffic such as file transfers, keystrokes and text). It acts as a pause button.

However, some Bluetooth traffic cannot be paused without breaking the user experience. Synchronous links (SCO and eSCO), which carry real time, live voice calls, completely ignore the FLOW bit.

If you are on a live phone call using a Bluetooth headset, you cannot “pause” the incoming audio stream without causing a massive, disruptive delay in the conversation. Therefore, voice packets bypass flow control entirely. If the buffer is full when a voice packet arrives, the old data is simply overwritten or the packet is dropped, resulting in a brief crackle or pop in the audio, which is heavily preferable to delaying a live conversation.

Similarly, vital Link Manager Protocol (LMP) control packets (the messages that keep the network encrypted and synchronized) are allowed to bypass standard flow control restrictions to ensure the connection does not drop while waiting for a green light.

References & Further Reading

  1. Bluetooth SIG : Bluetooth Core Specification Version 6.3, May 5, 2026.
  2. Bluetooth SIG : Bluetooth Core Specification change history
  3. Bluetooth SIG : Bluetooth Technology Overview

Continue Learning Bluetooth Basic Concepts

Continue Learning Bluetooth Technology

Compare Bluetooth With Other Technologies

Explore Deep Insight Bluetooth Technology

Keep Reading