This post was inspired by Mike Stone’s post on using Mycroft.
Setting up my personal Mycroft instance looked like a fun experiment to try out on my Raspberry Pi, which is mostly idle from Pi-hole.
Mycroft isn’t a package that comes directly from the Raspbian (or Debian for that matter) repository, so you have two options to get it:
- Download source from Git and compile
- Grab a docker image and run
Since the Raspberry Pi isn’t a high powered device, I decided to go with trying Docker instead of sitting around waiting for compilations to finish. I actually haven’t played around with Docker before, so this was a good way to try out multiple new things!
Using Docker
There are all sorts of website to guide people through docker, but I used this one from freeCodeCamp. The instructions varied slightly on granting the user the correct group access, but for the most part I was able to run the hello world docker in about 15 minutes.
Mycroft’s official docker instructions can be found here. After downloading and attempting to run, I kept getting this message:
standard_init_linux.go:211: exec user process caused "exec format error
My searches had mostly generic answers, but ultimately I discovered that this error is due to the official docker image for Mycroft is for x86 architecture (Intel/AMD), and not ARM (Pi).
All was not lost! Docker Hub has a very straightforward search and yielded a compatible ARM based image for Mycroft! I am using this one from mjkaye.
Testing it Out
Now that it’s running, it’s time to play! The official Docker instructions show how to pull up a bash terminal and start the CLI:
docker exec -it mycroft /bin/bash
./start-mycroft.sh cli
My first test was something simple and make sure it behaves appropriately:
Success! I was able to also install a few other skills such as jokes and an Alice chatbot.
Since there isn’t any microphone or speaker to Pi, I need a simpler interface besides the terminal. I started playing around with the Android app, which I will talk about in a later post.
Day 7 of #100DaysToOffload