Using 2M and LE Coded PHY


Bluetooth 5.0 introduces three new PHYs in addition to the default 1M symbol rate:

The LE Coded PHY uses 1Mbit PHY but payload is coded at 125kbps or 500kbps. It also adds Forward Error Correction and Pattern Mapper.

Note: 2M and LE Coded PHY are only supported on specific devices.

Changing PHY

Changing to 2M or LE Coded PHY can be requested from either slave or master device using the command sl_bt_connection_set_preferred_phy(uint8_t connection, uint8_t preferred_phy, uint8_t accepted_phy), where the preferred_phy value maps as follows:

The accepted_phy signifies the accepted PHYs in remotely-initiated PHY update requests and its value maps as follows:

Multiple PHYs can be selected both as preferred PHY and as accepted PHY. The connected devices will negotiate which PHY to use based on this information.

For compatibility reasons, the default PHY is always 1Mbit on a connection - unless it was opened from a Coded PHY advertisement. After the connection is formed, either side (master or slave) can request a new PHY to be used. After the PHY changes, it is reported in a sl_bt_evt_connection_phy_status event.

To learn more about how to open a (long range) connection from a Coded PHY advertisement, see the following code example: Advertising and Scanning with LE Coded PHY.

Note: When a new PHY is requested, the device will take a minimum of six connection intervals to switch to the new PHY.

The event sl_bt_evt_connection_phy_status will be raised on both devices in the following situations (if the new PHY request is accepted by the receiving device):

The event sl_bt_evt_connection_phy_status will only be raised on the requesting device in the following use cases:

Additionally, default coding for LE Coded PHY is S=8 (125kbit), which means that when an EFR32BG13 accepts a PHY change request to LE Coded PHY it will default to S=8. The application should change the coding if desired and the new coding will then be used if the PHY is again changed to 1Mbit/2Mbit and then back to LE Coded PHY.


These are examples that show how to change between the PHYs using 2 EFR32xG13 devices in NCP mode and controlled with Bluetooth NCP Commander.

Changing to LE Coded PHY (S=8, 125kbit)

Changing the Coding While in LE Coded PHY

As explained earlier, changing the coding is not negotiated over-the-air between the devices and for that reason the event sl_bt_evt_connection_phy_status is only raised on the requesting side and very shortly after the command is sent. The receiving device will continue using the same coding.

Attempted Change to LE Coded PHY

In the example below, a new PHY request is attempted but the other device is an EFR32BG1, which only supports 1Mbit PHY. As a result, the event sl_bt_evt_connection_phy_status is immediately raised on the requesting device to notify that the PHY has not been changed and no event is raised on the receiving device.

Impact on Energy Consumption

Using 2M PHY leads to smaller current consumption because of the shorter RX/TX periods. On the other hand, using LE Coded PHY leads to higher current consumption because of the longer RX/TX periods. The subsequent images show the current profile of a notification packet with 20 bytes of data payload on all PHYs. The red blocks are highlighting the duration of the entire wake-up period and the average current consumption for said period.

These measurements were made from the peripheral device (RX precedes TX) with TX Power of 0dBm. The images are sorted from shortest to longest RX/TX periods: 2Mbit, 1Mbit, LE Coded S=2 (500kpbs) and LE Coded S=8 (125kpbs).

Note: When using LE Coded PHY, the packet header is always coded with S=8 but the payload can be S=2 or S=8 coded and that is indicated by a bit in the header. This means that empty packets will not have a significant difference between S=8 and S=2 coding in terms of TX duration.

2Mbit PHY

1Mbit PHY

LE Coded PHY (S=2, 500kbps)

LE Coded PHY (S=8, 125kbps)