If an application that uses the Bluetooth Framework runs on Windows 11 or a newer OS, it can read the current Bluetooth LE connection PHY. This article explains what a BLE connection PHY is and how it affects the GATT communication. The Bluetooth Framework includes sample applications that show how to get information about currently used connection PHY. If your application acts as a GATT client (central), refer to the GattClient sample application. If your application acts as a GATT server (peripheral), take a look at the GattServer sample application.
What Is PHY
PHY is short for physical, as in the physical layer. This is the bottom layer of the BLE stack and is responsible for actually transmitting and receiving information over the air via radio waves. BLE transmits on the 2.4GHz band, and this band is a license-free band that is essentially free to use for short-range applications. It is also the only license-free band that is the same in every country.
1M PHY
1 Megabit PHY, commonly referred to as 1M PHY, has been the de facto Bluetooth PHY up to this point. The name refers to the bit rate that this PHY is capable of. This is the PHY that was discussed in detail in the previous section. Support for this PHY is mandatory to maintain backward compatibility with all non-5.0 devices.
Coded PHY
Coded PHY is a new PHY configuration introduced in Bluetooth 5.0. The purpose of this configuration is to increase the maximum range without increasing transmit power. This sounds contradictory at first glance, but it makes more sense when framed in terms of the BER. Namely, increased range can be thought of as a side effect of reduced error rate. Coded PHY provides enhanced bit error detection and correction, allowing further range while staying within the maximum BER. This is achieved at a cost to data rate, as it increases the number of symbols per bit (with possible values of either 2 or 8).
2M PHY
2 Megabit PHY (2M PHY) is also a new PHY configuration introduced in Bluetooth 5.0. The purpose of this configuration is to increase the symbol rate at the PHY layer. Specifically, it achieves a symbol rate of 2 Megasymbols per second, where each symbol corresponds to a single bit. This allows a user to double the number of bits sent over the air during a given period, or conversely reduce energy consumption for a given amount of data by halving the necessary transmit time.
Technically speaking, this is still almost identical to 1M PHY, with the main difference being an increased frequency deviation to counter the increased intersymbol interference caused by the double symbol rate. A frequency deviation of at least 370 kHz is required as opposed to 185 kHz. The tradeoff here is that the higher symbol rate means a potentially higher bit error rate, which means a reduced range (about 80% of 1MB PHY). Support for Coded and 2M PHY only exists within 5.0, and even then support is optional.