Setting up a micropython editor with the BBC micro:bit v2 on Linux
This post follows on from my blog post that shows how to set up the mu-editor in Linux for v1 of the micro:bit. This blog post is here:
https://mattoppenheim.com/2021/01/05/setting-up-mu-editor-with-the-bbc-microbit-on-linux/
I couldn’t get the mu-editor to work with micro:bit v2. This was frustrating as I wanted to check some existing code ran on v2 of the micro:bit as well as start to use some of the new features on board.
I solved this by following a tip from a comment on my first post. This recommended using a different editor and following some setup instructions for that editor.
I will call this editor the PythonEditor as this is the name of the project’s GitHub site:
https://github.com/bbcmicrobit/PythonEditor
The PythonEditor can be used online at:
https://python.microbit.org/v/2
Python Editor can also run offline. Initially, the editor would not recognise any micro:bits that were attached to my laptop. The information that I needed to follow to get PythonEditor working is here:
https://support.microbit.org/support/solutions/articles/19000105428-webusb-troubleshooting
In case this site is removed, I replicate this information below and add one or two tips of my own.
I use
Create a udev rule to get the micro:bit to be recognised
Create the file:
/etc/udev/rules.d/50-microbit.rules
with this content:
SUBSYSTEM=="usb", ATTR{idVendor}=="0d28", MODE="0664", GROUP="plugdev"
To create this file you need to be root or use the sudo command. I created and edited the file using vim:
sudo vim /etc/udev/rules.d/50-microbit.rules
Add to plugdev group
To add your username to the plugdev group:
sudo usermod -aG plugdev <user>
To have this change recognised by the system, we need to restart the udev rules:
sudo udevadm control --reload-rules
The webpage I followed to get this far says to log out and back in. I did not do this and things worked out.
Using PythonEditor online.
The online PythonEditor only works in Chrome for me. The editor now connected with micro:bit v1 and v2 and would program them. The first time that I flashed code to the micro:bit v2 took a while, with a message saying that the initial flash could take a while, but subsequent flashes would be faster. This is the case. I suspected that the first flash copied a micropython hex file to the micro:bit.
Using PythonEditor offline
The PythonEditor source code can be downloaded from GitHub and run offline. The instructions on how to do this are on the GitHub site, linked at the start of this post. This is how I run the PythonEditor. If we look in our downloaded GitHub repository, in the folder:
PythonEditor/micropython
we find two .hex files:
microbit-micropython-v1.hex microbit-micropython-v2.hex
I suspected that copying the v2.hex file to the micro:bit v2 was necessary before it would work with either of the editors.
So I took my spare micro:bit v2, connected it and tried to look at it with the serial connection on the PythonEditor. Nothing - a blank screen. I dragged and dropped the microbit_micropython-v2.hex file onto it using the Nautilus file explorer. After the requisite 10 seconds or so of flashing on the micro:bit as it loaded the hex, I tried again with the serial connection on PythonEditor and saw this:
PythonEditor serial connection with micro:bit v2
I see something similar when I click the REPL button on the mu-editor. I also get a REPL when I use the cu command I talked about in my earlier blog:
cu -l /dev/ttyACM0 -s 115200
So copying over the .hex file is a necessary step. PythonEditor does this for us if we haven’t done it already.
So now I have some tools to program micropython on the micro:bit v2.
mu-editor with micro:bit v2
I can get this working with v2 of the micro:bit after getting PythonEditor up and running. But it is not stable for me. Sometimes it works, sometimes it doesn’t. If I can figure out a reliable way of making this run, I’ll edit this post.
There is some cryptic information in this post, which says that the UART buffer needs to be cleared to get the mu-editor to work.
https://github.com/mu-editor/mu/issues/1162
I like the mu-editor and hope that I can get it up and running. Right now, I am relying on a single tool to program the micro:bit v2.
Summary of how to get micro:bit v2 working with a micropython editor
- Create the udev rule.
- Add
to plugdev group. - Add .hex file to the micro:bit
To do
I use the uflash or pyboard scripts with v1 of the micro:bit to enable me to use e.g. vscode to edit micropython and have a script automagically load updated code to the micro:bit. So far I have not gotten anything like this set up for the micro:bit v2. I would like this. I’ve gotten used to the idea that setting up programming environments requires tenacity.