I really like the features of the ESP32, but it's way too unstable for my purposes especially when it comes to BLE. Official libraries are also quite limited in functionality and many higher level features have to be implemented by yourself.
For example, I had to write my own keyboard library which was extremely complicated to say the least and til this day, despite community efforts this library is not stable, especially in conjunction with iOS devices.
The ESP32 is in my opinion still in public beta and software-wise not production ready.
And for that reason I am looking for alternatives.
Features I am looking for are:
Stable
Easy to use libraries
Bluetooth LE
Compatible out of the box with iOS, Android, Mac OS, Windows, Linux etc.
Support for
Emulating HID devices like Keyboard and Mouse
Emulating MIDI devices (as master and slave)
Support for common authentication mechanisms for pairing
Maintain multiple connections
WiFi
Station, AP and combined mode
Ethernet
2x UART with 115200 baud (But I don't want to use double-use the UART used for flashing) (Software UART would also be acceptable)
1x MIDI in+out or another UART with 31250 baud (Software UART would also be acceptable)
At least 6 additional input pins (for buttons etc.)
Reasonable power-consumption
Compatible with Platformio
Optional:
Support for emulating HID Keyboard/Mouse and MIDI devices via USB
So which microcontrollers could be interesting to me?
The nRF52 Series looks very promising in terms of stable BLE, but it's lacking WiFi+Ethernet and I don't know if there are stable modules that work well together with it.
I also saw STM32 Series chips in some BLE devices, but it seems they often rely on modules to support Wifi or Ethernet.
The Raspberry Pi Pico W also looks promising as it supports Wifi + Bluetooth now. But is it really stable, especially with Platformio?
The ESP32-S3 is of course also extremely interesting as it would theoretically even fulfill my optional requirement of native USB support. Only Ethernet would have to be added, which is allegedly supported via SPI, but I am extremely skeptical about its stability especially in regards to BLE.
The i.MX RT Crossover MCUs look sort of promising as well, but it seems like the BLE and Wifi needs to be added through proprietary modules and I can't find an affordable board that includes such modules.
Finally of course there are regular Raspberry Pis, especially the Pi Zero 2 W which would support BLE+WiFi as well as Ethernet (over USB OTG), but power boot up times, power consumption and the fact that it requires an SD card (which is very unreliable in itself), makes it kind of unattractive again.
I think that ESP32 is optimum by a whole set of characteristics. Of all the listed controllers, it is the most widespread, it has the most libraries and the largest community. I can’t say anything about stability - I haven’t encountered any serious problems.
And it’s somewhat strange to hear accusations about the stability of the controller if you couldn’t finish your library.
Then that's been a really long beta, over a billion+ devices at this point
What does this mean? BLE is a standard set of protocols that have nothing to do with any of those OS's. They all implement BLE in their own way, but that has nothing to do with the client hardware.
nRF52 series devices have been available for over a decade and are very popular in low-power and wearable devices, but if you're concerned about "stability," wait until you have to deal with their SDK changing every year or so.
I'm talking about the fact that Espressif for example doesn't provide a BLE Keyboard library and writing such a library in reality is about a hundred times more difficult than you would think because every device is different (many not fully respecting the spec). Depending on the iPhone and iOS version you will find that the BLE Keyboard doesn't show up unless the advertised name is shorter than 8 characters (or something like that). Other iPhones are not able to connect using some standard authentication mechanisms. Some devices struggle with reconnects. It's a complete mess to figure all of this out to the point that would say you can't expect anyone to develop such a library unless that person owns all the most significant devices that should be supported and has a lot of time to test against all of them.
For the longest time Espressif didn't even provide examples for the HID layer that keyboards build upon.
There is a good reason why no one was attempting to create ESP32-based Bluetooth keyboards/mice before I created the ESP32-BLE-Keyboard lib. And also why 4 years later to my knowledge still no one has been able to get it to the point that is is fully compatible/stable with any iPhone, iPad, Mac, Android and Windows version.
That's why it is so important to me to use a chip that the manufacturer has already put the work in providing higher level APIs that have been proven and tested.
I don't know how to answer that question. I've written many libraries for Ardunios and ESPs and have contributed to other big libraries/firmwares.
I've never done anything with the nRF52 Series, STM32 Series or i.MX RT Crossover MCUs (other than some really basic surface-level firmware reverse-engineering).
I apologize for my question. I asked it because we quite often get newbies here who complain about “errors in the compiler”, about the instability of the system software and the like, while the cause of their problems is their inexperience.
But now I see that this is not your case