Uploading code to robotic devices using mBlock 5’s Python Editor


Since the release of ‘Cyber-Pi’ and much more recently the ‘Cyber-Pi’ powered ‘mBot Neo’, it looks like both of these can be programmed in ‘Upload’ mode using Python. I don’t have either of these to test this out - but is it feasible for Makeblock to implement the so far missing ‘Upload’ mode for their older devices such as mBot 1, Ranger and Ultimate 2?


Hi CommandeR, the Upload mode for mBot first version, Ranger and Ultimate 2 always works fine, can you be more specific?


The heading of my post clearly references the PYTHON Editor. The Python Editor still shows Upload mode ‘not yet implemented’ when using the devices mentioned in the post.


Of all Makeblock products, only Codey Rocky, Halocode, CyberPi and mBot Neo supports program with Python. For now, the Python editor only supports CyberPi, but it will be added more devices into the library. As mBot series(mBot, Ranger, Ultimate 2.0) can only be programmed with blocks or Arduino C, they will not be supported in Python Editor.


That is sad news indeed! - Can I remind everyone that Makeblock’s promotional material advertising mBlock 5 has made much in the past of the software having the capability to write code using ‘Python’ and suggesting:

“…with mBlock, children can not only create games and animations by dragging blocks or using Python code but can also code robots or boards to do anything they can imagine. mBlock exposes children to cutting-edge technologies, allowing children to create projects with technologies like AI and IoT. With mBlock 5, users can easily switch to Python coding with only one-click. After users grasp how to programme with blocks, they can effortlessly move on to Python. No need to switch between software because mBlock 5 allows writing code directly in its Python editor. The transition is seamless. - Switch to Python, pick up a practical programming language and with just one click, you can convert block-based scripts to Python code. Our Python editor is perfect for writing Python code to your hardware and helps you develop a deeper level of programming capability…"

The inference here was that Python could be used to control robotics boards and the impression generated in such promotional blurb about developing textual programming skills made no mention of the fact that ‘Python’ can only control graphics (‘Sprites’ & ‘Backdrops’) on the Scratch ‘Stage’ or that you have to use ‘Arduino C’ code to control a robotics ‘Device’ such as mBot, mBot Ranger or Ultimate 2.

I am distinctly unhappy with the news that, ‘Upload Mode Broadcasts’ will never be implemented in Python for programming the older devices that we have all supported and enthused about in the past. Since Python in mBlock 5 is only aimed at programming either ‘Sprites’ or ‘Stage’ backdrops then there is now clearly going to be no further help with programming our older ‘Devices’ - and remember, mBlock 5 IS promoted after all as robotics / control software!


I think the problem is that the Arduino doesn’t have a native Python compiler or interpreter. Some developers get over this by using PC code and Firmata protocol (for example) to communicate via an API from Python on a control PC to the arduino firmware in an Arduino device, or something like PyMite which is a Python interpreter written for microcontrollers. All very messy for a toolset manufacturer to try to do (some just chuck a RaspberryPI on top of the Arduino and use that for high level functions). What you’d really need is a python transcoder that takes Python and compiles it into Arduino C, I don’t know of such a thing.

The ESP32 (used in the Rocky, Halocode, Neo and the CyberPI) can achieve Python because it supports MicroPython.

These are the downsides of lowcost embedded microprocessors which don’t include an operating system, there are tradeoffs in the ways in which they can be programmed.

I agree it’s misleading to promote these products as having Python programming, when in fact it’s only superficial.


Thanks for clarifying it Murray - wise advice, as always even if we have been sold a pup!



I went searching for this, too. While it’s not perfect, I did find this github project that purports to allow Python programming of the mBot. I’ve tried it with mixed success, it may be worth checking out.

Note that this does not utilize the mBlock editor, if that makes a difference for you at all.


Thanks for the info. Charlie - I will check it out.



Hi Lindsay, I’m afraid that I cannot agree with you on that you “have been sold a pup!”. Actually, mBot was released in 2015, while there’s no Python related content in mBlock until late 2017, Nov, Makeblock released Codey Rocky with Python in mBlock 5, and Python Editor was officially launched in Nov, 2020. Before Nov 2017, Python is not supported for Makeblock products released earlier, and mBot/Ranger/Ultimate 2.0 are all released before that. Due to the hardware limit(as Murray explained before), mBot series cannot support to program with Python, and we have also launched hardware products able to be programmed with Python. We have never promised anyone that we will enable to program mBot with Python, neither other controller board. It’s not lying or misleading and it needs to be clarified.


Hi Tech Support & the Makeblock Team

Sorry if I’ve rattled my cage (and yours too) a bit to much with this topic.

Thanks to Murray, I do understand the problem, I’m just trying to get my head around the way to fully explain the programming of these older devices (and just how much can be achieved with all available programming methods) for the purposes of a new book on the subject. I’ve just turned my attention to what Python can do & how to get the best out of it from within mBlock 5 for the benefit of all users.

I’m still a bit disgruntled, but I do remain an out-and-out Makeblock enthusiast.

Keep up the good work, regards



Hi CommandeR and all Makeblock users who are always enthusiastic of Makeblock products, we’d like to thank you for providing us with suggestions to our products, and this is one big push for us to improve and provide with better products, we really appreciate it. We encourage our users to make the best use of our products, even some of our users are even more professional than us. Even though, we will provide everything we can to support all your questions and discussions, even we cannot handle all of them(such as the combination of other products). Still, we are here to help and to listen. Thank you all.