Table of Contents

Go back –> Main ath9k driver page

ath9k bluetooth coexistence

This page documents how bluetooth coexistence is supported by ath9k.

Supported Coexistence Schemes

Enabling bluetooth coexistence

Bluetooth coexistence has to be manually enabled when loading ath9k by setting the btcoex_enable module parameter.

modprobe ath9k btcoex_enable=1

Cards supporting BTCOEX

2-wire (two-chip cards with separate WLAN and BT)

3-wire (two-chip cards with separate WLAN and BT)

MCI (SoC-type cards with integrated WLAN and BT)

3-wire scheme details

Some Atheros cards in both the AR9002 and AR9003 family use this scheme in which WLAN and Bluetooth time-shares their usage of the 2.4 GHz band. Three pins are used in this scheme.

PIN Driven by Details
BT_ACTIVE BT Signals that Bluetooth device is expecting TX or RX activity. Provides WLAN with information about when the antenna is being used by Bluetooth.
BT_PRIORITY BT At the start of BT_ACTIVE, it is asserted to indicate the priority of the Bluetooth activity. Then, this pin indicates the TX/RX status of the Bluetooth activity.
WLAN_ACTIVE WLAN Indicates when WLAN has taken the antenna.

PTA (Packet Traffic Arbitration ) Algorithm

BT weights and WLAN weights are programmed in the hardware by the driver. Hardware infers the Bluetooth activity by sampling the BT_ACTIVE signal. Whenever there’s Bluetooth activity, hardware compares the assigned weight of Bluetooth traffic and the current WLAN traffic. If Bluetooth traffic has a lower priority, hardware will continue WLAN traffic, thus stomping on the Bluetooth side (and possible interference on WLAN side as well). If Bluetooth traffic has a higher priority, hardware will abort WLAN traffic and treat it as if there’s collision on-air.