h2zero/NimBLE-Arduino

The future of this repo... new ESP MCU's cannot be supported.

h2zero opened this issue · 4 comments

My apologies to all, I cannot find a workaround for the upstream changes that have affected this repo's ability to work with arduino-esp32 core and the new C6/H2/C2 MCU's. The issue I created espressif/arduino-esp32#9835 has been relegated to a discussion, where there is essentially no visibility, so I have now closed it 😞.

This marks the end of my support for NimBLE on the esp32 platform for Arduino, I will continue to maintain this as best as I can for the chips that can use it, the latest Espressif devices and future one will not be supported here, unless I can find a way to get around the roadblocks.

I suggest to you all... plead actually... move on from Arduino, it's great to start from, but you can do better. Use IDF directly and esp-nimble-cpp with Arduino as a component if you want to use the work here, as I will always be able to support this via wrapping the underlying NimBLE stack. Better yet use PlatformIO with idf and arduino and link esp-nimble-cpp as a lib_dep :) I'll make some instruction for this in the near term.

Thank you all for the incredible support, I've put in thousands of hours to make this work and it always puts a big smile on my face to see people recommending/using and submitting issues to this repo.

My apologies to all, I cannot find a workaround for the upstream changes that have affected this repo's ability to work with arduino-esp32 core and the new C6/H2/C2 MCU's. The issue I created espressif/arduino-esp32#9835 has been relegated to a discussion, where there is essentially no visibility, so I have now closed it 😞.

Sorry to hear that.

This marks the end of my support for NimBLE on the esp32 platform for Arduino, I will continue to maintain this as best as I can for the chips that can use it, the latest Espressif devices and future one will not be supported here, unless I can find a way to get around the roadblocks.

Maybe I'm a bit suspicious. Espressif dropped BlueDroid in favor of Nimble in the ESP32-S3. Now they have their own NimBLE-Arduino implementation in ESP-Arduino which, by the way, does not work properly (at least, for me). Their implementation "features" the same bug I fixed here some time ago. I moved to the ESP32 platform because of a blocking bug in the Arduino Nano that never got attention. If Espressif does the same thing, I will quit home-made projects.

I suggest to you all... plead actually... move on from Arduino, it's great to start from, but you can do better. Use IDF directly and esp-nimble-cpp with Arduino as a component if you want to use the work here, as I will always be able to support this via wrapping the underlying NimBLE stack. Better yet use PlatformIO with idf and arduino and link esp-nimble-cpp as a lib_dep :) I'll make some instruction for this in the near term.

This is not an option for me. Let me explain. I have no problem to work with ESP-IDF, but the average DIY enthusiast will never touch a home-made project if such a tool is involved. I need to keep my projects accesible to a wide audience, which includes non-IT people.

Thank you all for the incredible support, I've put in thousands of hours to make this work and it always puts a big smile on my face to see people recommending/using and submitting issues to this repo.

We are in debpt with you. Thanks for your hard work.

Permit me to forecast. If Espressif tampers with the most widely used Bluetooth library for Arduino, their sales will not go very far.

Thank you @afpineda for your support! I'm incredibly grateful to all of you for the support and contributions.

For anyone who may consider it useful

I've built ArduinoBLE recently for ESP32-C6 target and Arduino Core 3.0.4. It needs to apply a minor patch: arduino-libraries/ArduinoBLE#364

My use case (HM-10 compatible BLE UART) boots and works nicely on ESP32-C6 afterwards.
The same app can work with

  • Bluedroid - all the ESP32-XX with exception of S2
  • NimBLE - ESP32, ESP32-C3 and ESP32-S3 only (Arduino Core 2.x).

Positive effect of using ArduinoBLE as a replacement for Bluedroid with ESP32-C6 and Arduino Core 3.0.4 is saving approx. 450 Kbytes of flash memory space and approx. 40 Kbytes of RAM.

For anyone who may consider it useful

I've built ArduinoBLE recently for ESP32-C6 target and Arduino Core 3.0.4. It needs to apply a minor patch: arduino-libraries/ArduinoBLE#364

My use case (HM-10 compatible BLE UART) boots and works nicely on ESP32-C6 afterwards. The same app can work with

  • Bluedroid - all the ESP32-XX with exception of S2
  • NimBLE - ESP32, ESP32-C3 and ESP32-S3 only (Arduino Core 2.x).

Positive effect of using ArduinoBLE as a replacement for Bluedroid with ESP32-C6 and Arduino Core 3.0.4 is saving approx. 450 Kbytes of flash memory space and approx. 40 Kbytes of RAM.

@lyusupov I am very interested. Did you test NimBLE on ESP32-C6 BLE without using the HM-10?
I have managed to build ArduinoBLE applying your suggested patch, but not sure how to modify NimBLE to make it work.

Could you please help me in the process? If you are available, please let me know how I can get in touch. Thanks