ESP32-C3 BLE Long Range (Coded PHY) support
Hello, I would like to use BLE Long Range in communication between the other device and my micropython application. I'm using ESP32-C3, which supports this BLE feature. As far as I know this is not supported by micropython, as well as the extended advertising, am I right? Are you planning to add Coded PHY support to micropython? I saw that micropython port to esp32 uses esp-idf, which itself supports both extended advertising and coded PHY. I've started changing the micropython (port) source code by myself, but so far without success. Could you give me some tips on how to achieve extended advertising & coded phy support in BLE in micropython? In fact I need to scan and connect with other device (which advertsises in extended advertising mode and coded PHY (125kbps)).
ESP32 Bluetooth: Error code "OSError: -18" when advertising with a too long payload
MicroPython v1.15 on 2021-04-18; ESP32 module with ESP32
When trying to advertising with a long payload(longer than 31 bytes) using bluetooth lib on esp32, Micropython would give an unclear error code " OSError: -18 ".
import bluetooth
esp32_ble = bluetooth.BLE()
esp32_ble.active(True)
payload = b'\x02\x01\x06\n\taLongName\x11\x07\x9e\xca\xdc$\x0e\xe5\xa9\xe0\x93\xf3\xa3\xb5\x01\x00@n'
esp32_ble.gap_advertise(interval_us=200000, adv_data=payload)
# Traceback (most recent call last):
# File "<stdin>", line 6, in <module>
# OSError: -18
A payload longer than 31 bytes might be generated with a 128bit Service UUID and a long name(len>8).
from ble_advertising import advertising_payload #example in /micropython/example/bluetooth
ServiceUUID = bluetooth.UUID("6E400001-B5A3-F393-E0A9-E50E24DCCA9E")
payload = advertising_payload(name="muchTooLong", services=[ServiceUUID])
A short name would work just fine.
The error code is not helpful for debugging, but I'm not sure how to improve this.
I opened this issue to notify who have met the same problem.