> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ditto.live/llms.txt
> Use this file to discover all available pages before exploring further.

# Redundant Bluetooth

> This article explains how Ditto manages redundant Bluetooth Low Energy (LE) connections within the mesh network by default, the tradeoffs with mesh size in mind, and how to deviate from this default behavior so you can ensure continuous sync uptime in your mesh.

<Callout icon="circle-info" color="#3B82F6" iconType="regular">
  This content is for SDK V4. For the latest version, see the [V5 documentation](/sdk/latest).
</Callout>

This article explains how Ditto manages redundant Bluetooth Low Energy (LE) connections within the mesh network by default, the tradeoffs with mesh size in mind, and how to deviate from this default behavior so you can ensure continuous sync uptime in your mesh:

* [Default Ditto Behavior](#default-ditto-behavior)
* [Considerations by Mesh Size](#considerations-by-mesh-size)
* [Enabling Redundant Connections](#enabling-redundant-connections)

# Default Ditto Behavior

By default, if a peer is already connected through a transport other than Bluetooth LE, such as LAN, Apple Wireless Direct Link (AWDL), and so on, Ditto still forms these redundant connections to ensure optimal sync performance in the mesh.

# Considerations by Mesh Size

Maintaining redundant Bluetooth LE connections can impact sync performance, especially in larger meshes with approximately 65 to 100 devices or more, where increased network overhead may cause a slowdown in the data replication process.

However, in some use cases, such as the point-of-sale (PoS) system, where continuous operation is mission-critical, the benefits of having fallback connections outweigh this loss in sync performance.

For example, in a PoS system, maintaining redundant connections may be preferred since any delay in establishing a mesh connection if Wi-Fi becomes unavailable negatively affects business operations.

# Disabling Redundant Connections

To change the default behavior and disable redundant connections, set the system parameter `mesh_chooser_avoid_redundant_bluetooth` to `true`:

```mysql DQL theme={null}
ALTER SYSTEM SET mesh_chooser_avoid_redundant_bluetooth = true
```

# Limiting Active Outgoing Bluetooth LE Connections

To cap the maximum number of active outgoing Bluetooth LE client connections a peer will maintain at once, set the `mesh_chooser_max_active_ble_clients` system parameter using [`ALTER SYSTEM`](/sdk/v4/sync/using-alter-system):

```mysql DQL theme={null}
ALTER SYSTEM SET mesh_chooser_max_active_ble_clients = 4
```

Tuning this value can help reduce radio contention and battery use on devices that frequently encounter many BLE peers. Choose a value appropriate to your mesh size and hardware; lower values reduce overhead but may slow convergence in denser meshes.

<Info>
  As of SDK 4.9.0, `mesh_chooser_max_active_ble_clients` replaces the deprecated `DittoBluetoothLeConfig.maxOutgoing` property on the Java and Kotlin SDKs. Use this system parameter instead of the deprecated config field.
</Info>
