The WLAN(802.11b/g/n), Bluetooth and Zigbee transmissions occur in the unlicensed ISM (The industrial, Scientific, and Medical) radio bands of 2.4GHz. Although they are modulated with different modulation schemes (FHSS for BT and DSSS/OFDM for WLAN), interference is bound to occur when the transmitting antennas are collocated. BT could hop into the WLAN band resulting in an exponential backoff before retransmission of packets. This degrades the performance of both BT as well as WLAN. Collaborative coexistence techniques remedies this issue by passing the channel map information from the WLAN module to the BT device.
This blog gives a brief description about the Cypress Proprietary Collaborative coexistence interface known as SECI (Serial Enhanced Coexistence Interface) and enabling it using cypress WLAN and Bluetooth devices
SECI uses the UART core(commonly named as GCI UART) to transmit ECI data. 64-bit coexistence data could be exchanged between WLAN and BT. As a result, a lot more information is passed on between the devices compared to its counterparts i.e. 3-wire and 4-wire coexistence. A refresh routine runs, that resyncronizes the devices upon waking from powersave.
The following is a logical diagram of SECI between two devices.
How to enable SECI in WLAN
Steps involved and their descriptions:
- Modify the LSB(bit) of boardflags parameter in the NVRAM file.
To enable 2-wire(SECI) coexistence, set the last bit(bit) as 1.
Eg: if boardflags=0x10010000 -> boardflags=0x10010001
How to enable SECI in Bluetooth side
Adding the API wiced_bt_coex_enable() in the application, enables the SECI in BT device.
Frequently Asked Questions
Is there a concept of AFH in collaborative coexistence?
The Adaptive Frequency Hop information is not passed back to WLAN, rather WLAN module passes information on current WLAN transmit channels. BT marks them as ‘bad’ and updates the channel map.
What information is exchanged?
Timeout parameters(egACL,SCO timeout limits, Powersave/idle times, Medium Request/Grant times) ,
Priority of WLAN/BT activity bitmap, etc. are the some of the information that are exchanged.
Can the priorities be changed?
The priorities cannot be changed. It is hardcoded.
Generally, the highest priority goes to Audio/Video/BLE/hid transfer. File transfer has the least activity.
Configuring sLNA or dLNA?
Cannot be changed dynamically even though NVRAM parameters exists as it in Hardware.
What happens during WiFi powersave?
During Wifi powersave, all the requests from Bluetooth are given full grant. This is applicable for both sLNA and dLNA. Once WiFi comes out of powersave, it runs a refresh request to notify BT that it is awake. This restarts all the coex polls between WiFi and BT.