Hi everyone!
I’m currently working on a project during my internship where I’m investigating wireless communication for transmitting sensor data.
The goal is to send relatively small amounts of data (approximately 64 bytes) every 500 milliseconds over a distance of around 100 meters. Since reliability is one of the main requirements, I’ve been experimenting with BLE Coded PHY S=8 using the Seeed Studio XIAO nRF54L15.
So far, I’ve managed to establish BLE connections and successfully transmit data between multiple XIAO boards. However, I’ve run into a few challenges that I’m hoping someone here might be able to help me with.
Verifying Coded PHY S=8
My code reports tx_phy = 4 and rx_phy = 4, which confirms that LE Coded PHY is being used. However, I’m still unsure how to verify whether the actual data transmission uses S=8 rather than S=2. Is there a way to confirm this through software, or would I need additional hardware to measure it?
Low RSSI values
Another issue I’ve noticed is that the RSSI is consistently quite low, usually around -90 to -98 dBm, even when the boards are less than 2 meters apart.
I’m currently using the onboard ceramic antennas, and I suspect this might have something to do with the antenna configuration or RF switch. I’ve looked into the settings for controlling the power to the RF switch and selecting between the onboard and external antenna, but I’m not entirely sure whether everything is configured correctly.
Connection stability
The connection also occasionally drops, sometimes with errors such as 0x08 and 0x28, before reconnecting.
To deal with temporary connection losses, I’ve implemented a buffering system that stores sensor measurements locally and automatically sends them once the connection has been restored. Since the data is intended for offline analysis rather than real-time monitoring, a short delay isn’t a major issue. However, I’d prefer to have a stable connection in the first place and use the buffer mainly as a fallback.
While looking for information, I came across the excellent range tests shared by @msfujino and decided to try his example code. I made a few modifications to run it without the OLED display using nRF Connect SDK v3.4.1. I successfully managed to establish a LE Coded PHY connection, but I’m still experiencing the low RSSI values and occasional disconnections mentioned above.
My main question is: Has anyone here successfully used BLE Coded PHY S=8 on the XIAO nRF54L15 for reliable, periodic sensor data transmission? I’m particularly interested in how you verified S=8 and whether there are specific settings or configurations that could help improve the signal strength, range and overall connection stability.
Any advice, experiences or examples would be greatly appreciated!
Thanks in advance!