NOTE: this page is for archival only, see the note at the end of the page.

Go back –> Atheros Linux wireless drivers

ath9k bluetooth coexistence

ath9k supports Bluetooth coexistence under the 2-wire and 3-wire scheme. This section documents how this is supported and under what chipsets.

GPIO pin setup and configuration

Bluetooth coexistence on ath9k requires configuring the GPIO pins accordingly and setting up the coexistence scheme. The driver does this automatically upon module load as follows:

        if (AR_SREV_9280_10_OR_LATER(ah) &&
            ath9k_hw_btcoex_supported(ah)) {
                btcoex_hw->btactive_gpio = ATH_BTACTIVE_GPIO;
                btcoex_hw->wlanactive_gpio = ATH_WLANACTIVE_GPIO;

                if (AR_SREV_9285(ah)) {
                        btcoex_hw->scheme = ATH_BTCOEX_CFG_3WIRE;
                        btcoex_hw->btpriority_gpio = ATH_BTPRIORITY_GPIO;
                } else {
                        btcoex_hw->scheme = ATH_BTCOEX_CFG_2WIRE;
                }
        } else {
                btcoex_hw->scheme = ATH_BTCOEX_CFG_NONE;
        }

Prior to enabling Bluetooth coexistence ASPM is disabled via for PCI devices via ath_pci_bt_coex_prep().

Bluetooth coexistence code

The code for Bluetooth coexistence is in the file btcoex.c

2-wire Bluetooth coexistence

This is supported and enabled on all devices >= AR9280 except AR9285. This is initialized via ath9k_hw_btcoex_init_2wire().

3-wire Bluetooth coexistence

This is supported and enabled on all AR9285 devices. This is initialized via ath9k_hw_btcoex_init_3wire().

Enabling bluetooth coexistence

Bluetooth coexistence is automatically detected and enabled on recent kernels so you do not have to do anything for it. For older kernels you can can enable bluetooth coexistence on ath9k by using the btcoex_enable module parameter.

modprobe ath9k btcoex_enable=1

This is a static dump of the old wiki, taken after locking it in January 2015. The new wiki is at https://wireless.wiki.kernel.org/.
versions of this page: last, v11, v10, v9, v8, v7, v6, v5, v4, v3, v2, v1