micropython / micropython-lib

Core Python libraries ported to MicroPython

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

aioble 'BLE' object has no attribute 'l2cap_connect' on Pico-W

mcarlson opened this issue · comments

I'm trying to run the l2cap_file_client.py and l2cap_file_server.py examples from https://github.com/micropython/micropython-lib/tree/master/micropython/bluetooth/aioble on my Pico-W. I'm currently running MicroPython v1.22.0-preview.236.ge1a7aa23f on 2023-12-09; Raspberry Pi Pico W with RP2040

It sounds like the BLE support for the Pico-W is missing l2cap functionality, I get stack traces like:

...
Connecting to Device(ADDR_PUBLIC, d8:3a:dd:94:88:0e)
Discovering...
Connecting channel
Task exception wasn't retrieved
future: <Task> coro= <generator object 'getPrefsFromServer' at 20012c60>
Traceback (most recent call last):
  File "asyncio/core.py", line 1, in run_until_complete
  File "l2cap_file_client.py", line 152, in getPrefsFromServer
  File "l2cap_file_client.py", line 62, in connect
  File "aioble/device.py", line 288, in l2cap_connect
  File "aioble/l2cap.py", line 205, in connect
AttributeError: 'BLE' object has no attribute 'l2cap_connect'

What can I do to get this working? More documentation about what is/isn't supported on a given platform would be really helpful as I just blew an afternoon getting to this point. Seems to be a bit of a theme, see #444 and #686

Yes unfortunately l2cap support hasn't been added on btstack BLE integration yet which rp2 uses.

https://docs.micropython.org/en/latest/library/bluetooth.html#l2cap-connection-oriented-channels

Note: This is currently only supported when using the NimBLE stack on STM32 and Unix (not ESP32). Only one L2CAP channel may be active at a given time (i.e. you cannot connect while listening).

Okay, thank you!