← index #7130Issue #7054
Off-topic · high · value 2.973
QUERY · ISSUE

ESP32 Bluetooth: Error code "OSError: -18" when advertising with a too long payload

openby YueyanGuo1218opened 2021-04-19updated 2023-02-28
port-esp32

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.

CANDIDATE · ISSUE

Bluetooth: two exampleImportErrors: no module named 'ble_advertising' or 'bletooth_advertising'

closedby Ce345opened 2021-03-19updated 2021-03-20

This error must be earlier reported. Extensive search did not give any results. Therefor this try.
Have tried out two examples in Thonny with the ESP32 as interpreter. (ESP32 micro python tested with a py blink).

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied