I recently set up an installation of Debian 10 and set up a tool chain for programming the BBC micro:bit with micropython. I’d forgotten some of the stumbling blocks I had the last time I did this, so am recording them here. Hopefully, this post will help you avoid them.
I use <user> to represent the user name that I log in with.
The instructions in this blog get you set up to work with the micro:bit v1 using mu-editor.
Part 2 shows how to set up a different editor that works with both v1 and v2 of the micro:bit under Debian. The link for part 2 is at the end of this post. I tried and failed to get mu-editor to work reliably with the micro:bit v2.
Use your package manager! In my case:
sudo aptitude install mu-editor
Using the package manager installs a bushel of python3 libraries, which you may not like. I tried the clean method of setting up a virtual environment and downloading the mu repository from GitHub. I ended up trying to install various dependencies that have other dependencies… In the end I gave up and used the package manager. One line. Installed.
Many people use apt-get instead of aptitude. I think both commands use the same libraries under the hood.
Finding the micro:bit
Which port does the micro:bit mount under? In my case /dev/ttyACM0. One way to find the port is with this command:
sudo dmesg | grep tty [ 135.410510] cdc_acm 1-6:1.1: ttyACM0: USB ACM device
The last line of the output gives the game away. /dev/ttyACM0 it is.
We need to add our user name to the dialout group in /etc/group
When I first setup Debain and then tried to connect to a micro:bit on port /dev/ttyACM0 using Debian 10, I could only do this as root. Why?
ls -al /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
This indicates why we can access the port using sudo – the port is owned by root. It also shows why adding the non-root user to the dialout group allows access without being root. I added my user account to the dialout group in /etc/group using:
sudo usermod -a -G dialout <user>
Enabling the micro:bit to mount under /media/<user>
I still could not connect with the micro:bit using a serial port monitor without being root.
The micro:bit is mounted under /media/<user>/MICROBIT.
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
This shows that the directory that the micro:bit is mounted on is owned by root. I needed to change the owner and group of this directory to <user>.
sudo chowner /media/<user> sudo chgrp /media/<user>
Now I can mount the micro:bit under /media/<user>/MICROBIT. I found I had to get this set up for mu-editor to allow me to program the micro:bit and use the REPL.
I wrote a blog post a few years ago presenting a bash script to find and mount or dismount a micro:bit here.
I came across the cu terminal monitor. To install and use with the micro:bit:
sudo aptitude install cu cu -l /dev/ttyACM0 -s 115200
Hit ctrl-c and you get a REPL. The way to exit it is using the cryptic characters:
The tilda character ‘~’ stands for <escape> in this instance.
The nice people at micropython produced a script called pyboard.py which finds a connected micro: bit and opens a terminal to display the output from the micro:bit. This tool is detailed at: http://docs.micropython.org/en/latest/reference/pyboard.py.html.
gtkterm is another useful serial terminal monitor which runs in its own GUI. Install using:
sudo aptitude install gtkterm
micro:bit v2 issues
The above all works for micro:bit v1. When I tried to flash some code to the micro:bit v2 using the mu-editor, I get this pop-up:
I can now run the latest mu-editor from the mu GitHub repository at: https://github.com/mu-editor/mu. However, I still got the same error when trying to use it with a micro:bit v2.
To run the latest version, download the GitHub repository, then type:
in the downloaded mu directory. I guess that installing mu-editor using aptitude also installed all of the necessary dependencies to enable the GitHub version to run. The GitHub version is 1.1.0.alpha.3. The version installed using aptitude is 1.0.2.
I tried programming the micro:bit v2 using pyboard.py. This also failed.
After posting this blog with these issues, Mark left the comment at the end of this post that helped me get a different editor working with v2 of the micro:bit. The comment came the same day that I posted the blog! I was well chuffed as I didn’t realise that anybody reads my blog posts, let alone the same day as I posted them. I guess a lot of people are searching for how to get micro:bit v2 running right now.
So I wrote a new post detailing how to setup and run a micropython editor with v2 of the micro:bit: