-
Couldn't load subscription status.
- Fork 8
Description
I'm implementing improv-wifi BLE on ESP32 with IDF 5.1 and NimBLE, but sendRPC calls never reach my device when using Chrome on a Mac. Reading state and capabilities characteristics works, but RPC requests are simply "swallowed" using https://esphome.github.io/esp-web-tools/.
Cross referencing it with the ESP Web Tools firmware showed the exact same behaviour: provisioning is never initiated and the web app gets stuck!
The same issue has been described in #212 but has been closed due to inactivity. So it seems I'm not the only one.
- Chrome 120 with macOS 13.6.4 on M1 Max
- Chrome doesn't show any console warnings or errors when using the identify request or sending wifi credentials.
- Since
sendRPCdoesn't seem to have any error handling (maybe they are bubbled up, but I'm not a JS developer), I've patched it with the developer tools in Chrome and added an error handler around this._rpcCommandChar.writeValueWithoutResponse(i), but it always returns success. The write call returns ok, and debugging shows the correct payload, but the data never reaches the peripheral.
Now the fun part:
- When using Chrome's Bluetooth internals
chrome://bluetooth-internals/#deviceson my Mac I can write the RPC command characteristic and0x020002triggers the identify command. - I only encounter this on my Mac. It works with Chrome on Linux and on an Android tablet.
I'd like to use improv-wifi BLE in our product and get this working on Mac as well.
I'm happy to provide more information if required to help resolve this issue.