Seriously Disappointed

I’m an embedded engineer, been programing for decades on Pics, STM32’s, etc, etc.

When I found your site I was excited, I even mentioned it at a staff meeting.

SO when I needed a quick UART to I2C converter I thought, this is my chance to prove how well MBED OS can work! I have a bunch of Nucleo boards around, I grabbed a 073 version and created a project. First, as a proof of concept I just attached a dumb OLED SSD1306, found an archived project that should talk to it, piece of cake right?

I would not build. Finally figured out it was the libraries, got that fixed. Now it builds, but won’t run. No debugging on the web-site interface, download the desktop version. It won’t build, same problem. It won’t run, and it won’t debug… Transfer it to Eclipse (I’m more at home with eclipse anyway). Can’t get it to build for anything. After 8 hours of total struggling I abandoned the entire thing.

I was wrong. This is shit.


Yes, I can really sympathise. I had left MBED years ago when they changed from MBED OS version 2 to version 5 as I had a similar experience. But I am back and getting to understand and appreciate some of the great things that MBED OS 6.x has to offer and busy trying out MBED Studio instead of just the online compiler option.

However, IMHO, the legacy of that chaotic almost shambolic OS 5 content update on the MBED website remains.

In fact, the MBED OS documentation team need a serious wrap over the knuckles and a few of them should not be let back into the office. I still cannot believe that after all these years, when you search online for information, you are still pointed to MBED OS 2 documentation and then on those web pages there are still HTML links supposedly pointing you to the more up to date content that remain broken. That is laziness from their web dev team… IMHO… who seem too busy making the website look pretty than prioritising navigation structure, fixing all those 404’s (broken links), provide meaningful content and tutorials for users to learn from and then correctly link in with all the great MBED stuff found on their GitHub pages.

It is a real pity that the mix of user contributed content and official content / examples remains hard to differentiate and what happens, in my experience, is that a user unwittingly picks up an old broken OS2 version or poorly constructed library instead of finding the later and more correct OS 5.x or OS 6.x version (although number of up to date libraries remain few and far between).

We live in hope that they fix things. In the meantime, when you’re less pressured I recommend that you give it another chance (I try to use Github more than the website).


Hi @fredbob and @gerriko

I’m sorry you’ve had such a bad experience with the site and with getting things up and running as easily as we’d want you to. We recognise that the mix Mbed 2 and Mbed OS 5/6 can create confusion, especially amongst first time users. There are certainly improvements that we could make.

I’d be really happy to discuss your concerns and experience in more detail. If you DM me we can pick the conversation up.


I agree with this part, googling about mbed often leads to old libraries that are not compatible anymore or that have been integrated into the main repository and can be used from there.

It would be nice if we could deprecate this and have people use github or such to host their code and libraries instead of the mbed website. Not sure it would be compatible with the online editor though.

I share a mixed feeling actually versus Mbed. i’m actually choosing a platform for project related to STM32 development, that would last a few years, and my shortlist is FreeRTOS, pure HAL, Mbed, and eventually Phoenix, RIOT (but no longer for the 2 lasts).

I like the webIDE, but this is a joke for a serious project. Mbed Studio is far from Eclipse functionnalities (although i plan to use VisualGDB fianlly :wink: ).

I tested the community here with a precise question a few hours ago i did not receive answer. I also monitored the messages per days. I fear the community (something very important for me) is somehow not so wide.

I don’t really see what is implying Mbed5 vs Mbed6, what is compatible or not (this is blurry and i dislike this), and how to find “this is a lib for mbed 5 / this is a lib for mbed 6” (and downloading a SSD1306 lib with example project is also not compiling / throwing errors i can’t find on forums - which is not really encouraging).

I have been taught the breaking changes between versions demotivated developpers (and i would not really deal with that).

In short, the feeling of something interesting and clever but not rock solid like FreeRTOS, let me think Mbed is a “starting” project with little stability, or a dieing one. Salt this with Arm being sold to TSMC… Will Mbed continue ? Is Mbed a good choice nowadays ?

1 Like

This is a very distressing thread for me to read. I am just starting out on the MBed and ARM learning curve. It seemed like a good way to grow from the AVR Atmel Studio world. And with Covid ramp-downs and being semi-retired (I’m 67) It seemed like a good time to be climbing learning curves.

What first got me interested was a Micro::Bit I started to pkay with it, and then wondered if I could use MBed to talk to it. I learned I couldn’t except with baremetal - but what is that ?

I then got a Nucleo_F446ZE and installed MBed Studio a few weeks ago and have got simple stuff like In-Out, PWM ADC - LED dimming and servos working. I was having fun and enjoying myself up the first steps.

But now I am onto I2C on a PCA9685 module, and I am starting to hit my head all over the place. I am having simple issues like freeze ups in Studio, issues in debugging, and I am struggling a bit with the documentation being a bit sparse, and I find myself browsing posts of stuff relating to wrong MBed levels.

So things are a bit frustrating at the moment.

So I was tempted to start asking question on the forum. But at first glance, and compared with other forums, the forums appeared a bit sparse. Like the Fermi paradox “. . . so where is everybody?” Maybe I am looking in the wrong place.

And with one little post under my belt I am not, as an outright noob, comfortable. I am a bit intimidated by the forum at this point in time and struggling to come to grips with it. I can’t find a place to say hi and ask dumb questions about using the forum.

So for me it is close to decision time. Do I persevere or walk away and come back later?

It seems to me I may have come here at a bad time. A time of transition? I get the feeling that a number of things are going on behind the scenes?

1 Like

From my Mbed experience since around 2010;

Firstly thank you Mbed guy’s for all the effort over the years providing me a free to use platform.

I have never had a problem with asking for help on Mbed.

Provided you ask a straight forward, meaningful question with details of the IDE you are using, OS version, board or Target and at the very least an example of code that is not working for you.
Do not ramble on but give enough information and someone will help you.
What you won’t get is someone writing code for you, we are all busy doing our own.

However I’m finding far too many changes going on with Mbed that has no information and the documentation continues to be very poor.
For example, chrono is now used instead of read() when using timers in OS6, no or incorrect documentation about this. Look at the example here on the v6.2 page:
At time of writing it still shows read() in the example.

I’ve always liked the simple lines of the the current (original) on-line compiler but have been using Studio off line a lot when I don’t need OS2. Studio is faster to re-compile, full compiles do take their time though depending on your PC hardware. You also have the advantage to be able change parts of the OS code to suit your needs which has not been available since the demise of Mbed-DEV OS files.

You will not be able to use 32k and below Targets on OS6 other than flashing an LED.
That includes a Bare Metal build despite what anyone tells you.
I know, I’ve tried for weeks to get some NXP(Freescale)KL05 projects migrated to OS5 and 6.2.
OS2 Revision 130 was the last ‘good’ Mbed library for small Targets.
If anyone’s up for the challenge, I’m all ears, you will need to get 31.9k compiled code(OS2 r130) working on OS6.2 (bare metal).

The new online Studio feels and looks exactly the same as the offline version at the moment but that is still being developed.
Currently I can not see any way to upload code to my repository with either Studio IDE’s. Perhaps that will be available before the current online IDE is depreciated otherwise that will be it as far as availability of example code from Mbed users.

The ‘components’ page is way out of date if you want OS6 examples.
I can no longer get access to update any components I have added, so not sure what’s going on there.

I have recently been using Raspberry Pi mainly for WEB based projects, proven OS and loads of working examples. Hardware is cheap too. Still not ‘perfect’.
But absolutely useless for low power projects, hardly any GPIO’s and no analogue and not so interesting IMO.

I don’t do Arduino, its not industry recognized, but I’m sure it has its place with students and schools and perhaps a good learning platform?

Providing OS6 is documented, properly, all the problems rectified as far as possible with no more depreciated parts BEFORE adding new features, all compile warnings dealt with, board vendors are forced to maintain their products on Mbed where the peripheral devices are supported with up-to-date libraries or simply removed from the platform page so I do not waste my money on junk hardware, then I will definitely continue using Mbed.

1 Like

Note that if you guys are struggling with Mbed Studio issues, you might be interested in trying out mbed-cmake. It allows you to use Mbed OS from a number of different IDEs that support CMake integration, including both VS Code (free) and CLion (paid, unless you’re a student). Theoretically CMake also supports Eclipse but I haven’t tested it recently and always found it to be very glitchy in the past. [Speaking as someone who used to be a heavy Eclipse CDT user, I can honestly say that CLion is better in just about every way… but that’s just my opinion.] We also provide replacements for the “mbed compile --flash” functionality, and you should be able to configure automatic uploading and debugging for most Mbed targets using mbed-cmake’s upload methods script.

The other thing that mbed-cmake does for you is remove your dependence on the heavy online component of Mbed development. All your project code ends up in a single repository, optionally with a submodule containing the Mbed code. So it’s super easy to control the versions of libraries that you use, and nothing is ever updated without you explicitly doing it. IMO this is especially important with all the breaking changes that are being made recently!

We have a getting started tutorial that should take you through setting up a project on all platforms, but after that you will need to use at least a little CMake scripting to set up your project sources and such. This is probably my favorite tutorial for that, it’s quite simple once you try it a bit.


And you guys are definitely right – the components page could definitely use some love. It’s a very cool resource both when searching for parts and for new users searching for drivers, but it could use some maintenance. For instance, the component I added is visible on the web, but it doesn’t show up in the components index and you can’t find it by searching for it. And it would be cool if there was more integration between the components and the forum – what if you could somehow tag forum posts related to a specific component and they’d show up on the component page? That could be helpful for people looking for answers to component questions.

1 Like

HI all,

thanks for the comments here. We have recognised issues with both the tools and some of the documentation from the Mbed OS 5 era. Mbed OS 6 is gradually addressing these issues. New tooling , including the use of CMAKE is currently being worked on and the docs are gradually being fixed where problems are discovered. Where you see real problems please raise issues on GitHub so that the work to fix them can be planned into our schedule.


I can understand also the issues about ‘simply’ using Mbed. I’m using it also alredy for many years, when you know the history, some things are easier to understand.
With mbed5, a huge revamping started and a lot of things changed. Also, mbed was growing with every release and no longer usable for tiny targets. Therefore, I sticked also to mbed2. My workflow was to create a project and export it to MCUXpresso (or that time LPCXpresso). But the exporters where many times broken and for other tools, other exporters were necessary. I have updated the LPCXpresso exporter to the MCUXpresso exporter, but maintaining this is a nightmare.
I still wanted to use an IDE, and discovered VSCode. In VSCode, you can define tasks where you simply call ‘mbed compile’ with the options you need. There is an error parser for the convenience of jumping from compiler error output to the corresponding code line. With the cortex-debug extension, the debuging is also supported for different debug probes. This extension was long time not further developed, but now there is also a lot of life in this component. So, I’m still happy with this solution, although Mbed-Studio has also improved over the last year. For some easier start, I think Mbed-Studio is a good way to go. The current online compiler is now working for more than 10 years, a very long era in computing and specially in web services :slight_smile: The intention was to avoid installation of special tools on computers for education, but Mbed can be used for serious projects and you need external tools. I would not blaim the online compiler, it can be used as a starting point. The easy installation of mbed tools (and that wasn’t always so before mbed5) and VSCode or MbedStudio are now a better choice.
The mbed Team is working on the OS and the tools, the library code is contributed and depending on the third party teams. I understand this problem, but there should be a more conveniant solution for the user to find matching libraries.
About the documentation: that has been improved already a lot! I know that documentation is always the last thing to do, but it realy is much better than before. Only one thing I don’t like: menu entries with subitems do not show that there are subitmes. You must click and then you see there is more. Example:


‘Using the bare metal profile’ does not show that it has subitems. But when you click on it:


Oh, when I’m in the bare-metal section:

great overview, but when I want to use events, what has to be ‘enabled’ to use it?
Try to find out what you need for using the filesystem with SPIFBlockdevice…

1 Like

HI Johannes

thanks for the feedback on the structuring of the docs. I’ll pass this on to our docs team.


The real issue is Mbed-team simply does not care about documentation, also the test seems to let issues pass through and you keep strive in releasing new features just for the sake of pimping around with something.

Here i discovered unexpected results with I2C API. It turned out that i did not know all the details how I2C works, also it seems the given target behaves different than other targets while also the documentation does not mention there would exist any difference between I2C::write(int data) and I2C::write (int address, const char *data, int length, bool repeated=false) and also the example with an extremely specific thermometer is not a good idea.

Despite we identified shortcomings of the documentation of I2C API (i guess it must be used very often), and 0xc0170 promised to share the issue with the team, there has been nothing changed in the documentation since February. Despite also SeppoTakalo provided a code which would fit much better as an example code and i also told it explicitly in that thread.

Now i hope you just truly understand what is the problem with mbed-os (an open source project), that will be preferred mainly by makers/hobbysts as professional embedded developers for sure prefer superior tools that cost money. This is why mbed should really slow down with new features until you nail the documentation, otherwise most newcomers you gain will simply leave mbed behind in just some weeks.

1 Like

I’ve been wanting to move away from Arduino to more capable frameworks and a better editor for a while now. I use VSCode for non-MCU programming and I am totally loving it, so seeing about learning both PlatformIO and Mbed seemed like a good choice. At first, that is!

First thing I noticed was that there’s some odd inconsistency, what with selecting Hardware -> Boards from the top menu on the homepage and seeing references to Mbed OS 6.4, but then taking look into Hardware -> Components…it only goes up to Mbed OS 5.15?

Well, proceed to randomly do searches for libraries in the repos…oh, what the heck? The options to sort by relevance, last update and imports all do nothing! Nope, none of the options change the sorting of the results!

Make an account on these forums and…“Payload and/or sig missing from params. Please contact if problem persists.” after verifying email. Uhh. Okay? Apparently the account still works, so I guess it wasn’t anything important.

Accidentally find this thread, take a look at the documentation that was mentioned here and…oh, sure enough, the documentation is randomly using outdated examples and stuff!

There was a bunch more stuff that I encountered in just half an hour of exploring and maybe none of this stuff is critical and maybe I should just brush it all aside, but…this all is definitely rather discouraging for a newcomer and doesn’t instill any sort of confidence.

1 Like

It is unfair to characterize mbed in such a way. In an ideal world, the tools and parts we use are clearly, fully and correctly documented, and work out of the box. But in reality, we can only pick the ones that are available, solve the problem, and affordable. In this regard, Mbed is doing pretty well.

Imagine a RTC clock resets with system boot and WDT stops working once system hangs. Just to name two of my favorite that is part of another toolchain I use.

I think its now time to give up and move to another platform :frowning:

I have spent long time on a project only to find that I can’t use a one-wire library with multiple DS1820 sensors once connected to_default_network_interface either Ethernet or Wi-Fi.

TBH I’m so pissed off with Mbed right now, I simply do not have the patience or interest to waste any more of my life spending months trying to find out why.
After a few hours of converting my code it works seamlessly on Arduino (and I hate Arduino, the IDE is terrible).

Along with MBed TLS backing out frequently on Google’s Firebase where Arduino and RPI based projects simply don’t. Continuous Mbed library depreciation, constant API changes and a complete lack of understandable documentation is making Mbed intolerable.

The online complier is now unusable just sits there either ‘saving’ or ‘scanning’ for an eternity, never did that with Mbed2 (and still doesn’t).

Sorry!! perhaps it works for others out there, it did with me, but no longer.


Hi Paul,

The online complier is now unusable just sits there either ‘saving’ or ‘scanning’ for an eternity, never did that with Mbed2 (and still doesn’t).

was this reported? I would like to understand if this was upstreamed to the web team and it is something it can be fixed.

Continuous Mbed library depreciation, constant API changes and a complete lack of understandable documentation is making Mbed intolerable.

You can message me with more details, I would like to look at this feedback in more detail.
The documentation, point taken, we will need to spend some time to make it better. It would help me if I know how API changes were not communicated clearly (migration guide missed or it broke between just feature releases, etc).
Did we deprecate and not provided equal functionality instead?
Did we move too fast, and the libraries provided in the ecosystem did not port their code?

Thank you Paul for your contribution! I appreciate what you did, you helped many of us (including myself).

Hi Martin,

To echo on what Paul and some other said: The ecosystem is seriously confusing now.
My background with mbed:

  • back in the original 1768-only days, jumped on it and used the web IDE to create and launch a successful project (eventually ported it to bare metal LPC1768 on a custom PCB)
  • great support, great times, great community. Tons of libraries that all just worked.

Coming back in 2020:

  • all of the docs are broken / old / confusing,
  • all the contributed repos, etc are for older OS versions. Can’t really tell without trying them. Hard to find information on how they are different. Why is version 5 and 6 in the same tree? How do I know what I’m compiling with?
  • constantly have to reformat once-working code

I could get around that as a one time thing, sure I haven’t been here in years, it’s moved on and I get that.

That was back in September. Wanted to use this for a new project. Compiled, finally got it working. Great.

Today: come back to my project that compiled fine three months ago. Have not logged in since. Project no longer compiles, but I haven’t changed anything. now all of a sudden I have to add #includes and references and fix a ton of things that should not have broken, as I have requested no updates to the project. I mean sure if you remove a function from the newer version of the library it’ll break, but isn’t that point of having versioned copies of the library? So the devs can do their thing, but I can still compile my older projects?

Simply having projects break because I haven’t logged in in 3 months? Huge problem.



I tried mbed online years ego when I got first nucleo board and quit after 30 minutes after seeing nothing works out of the box. Today I wanted to check the mbed studio, I thought that it should have been developed and matured. Installed the ide, downloaded os6 and started compiling blink led… drank my coffee… water the plants… there it is, my led is blinking. I couldn’t believe my eyes when ı see the source codes compiled, thousands of them. I agree that mbedOS is a good thing to work with, the idea behind the huge environment is to respect, however it takes long time to get used to it. I will come back again in two years to check again, hoping to find less complex environment. Strange json files to write configurations, ignore files to list what is to compile and what not. Linux kernel config is easier then that…

Hello Paul,

I have spent long time on a project only to find that I can’t use a one-wire library with multiple DS1820 sensors once connected to_default_network_interface either Ethernet or Wi-Fi.

I’m sorry for the frustration you have with the DS1820. As Maxim Integrated published an application note

I tried to improve the situation by adding such support also for the Mbed boards. You can find an example code here.

Best regards,