A guide covering how I built my homebrew Mycroft device

I spent yesterday re-building my home-made Mycroft device from scratch (which uses a Raspberry Pi 4 and an Adafruit voice bonnet for the microphone and speakers, as well as a small LCD screen to display the GUI). I wrote up all of the details in this blog post in case anyone else might find it useful.


Congratulations, several months ago I tried doing exactly this, installing picroft and core on a rpi4 several times and failed, kind of. I do have a similar setup to you now, except if I try to run the Mycroft gui on the lcd, there’s a conflict between the user running the alsa audio listener and Mycroft gui.

Sometimes the audio input doesn’t work. Other times, the audio output doesn’t work. Either way it leads to a device that can listen but not speak, or vice versa.

In the end, like you, I decided picroft image was not ideal and installed 64 bit arm os for the pi4.

I read through your guide and just curious. What users (uid) are running the various services ?

Everything PipeWire and Mycroft related are running as the non-root user (I renamed from ubuntu to rudism but the uid is still 1000).

> ps -ef | grep -Ei 'mycroft|wire'
rudism      1260    1249  1 Dec13 ?        01:00:09 /usr/bin/pipewire
rudism      1261    1249  0 Dec13 ?        00:00:23 /usr/bin/wireplumber
rudism      1262    1249  0 Dec13 ?        00:50:45 /usr/bin/pipewire-pulse
rudism      1318       1  4 Dec13 tty1     04:34:30 python3 -m mycroft.messagebus.service
rudism      1321       1 31 Dec13 tty1     1-05:28:01 python3 -m mycroft.skills
rudism      1324       1  0 Dec13 tty1     00:03:24 python3 -m mycroft.audio
rudism      1327       1  3 Dec13 tty1     03:19:20 python3 -m mycroft.client.speech
rudism      1331       1  4 Dec13 tty1     04:29:35 python3 -m mycroft.client.enclosure
rudism      1332    1263  0 Dec13 tty1     00:02:25 /usr/bin/mycroft-gui-app --hideTextInput
rudism      1422    1327  0 Dec13 tty1     00:00:00 /home/rudism/.local/share/mycroft/precise/precise-engine/precise-engine /home/rudism/.local/share/mycroft/precise/hey-mycroft.pb 2048
rudism      1426    1422 32 Dec13 tty1     1-05:58:53 /home/rudism/.local/share/mycroft/precise/precise-engine/precise-engine /home/rudism/.local/share/mycroft/precise/hey-mycroft.pb 2048
rudism     58222    1332  0 Dec16 tty1     00:00:00 /usr/lib/aarch64-linux-gnu/qt5/libexec/QtWebEngineProcess --type=zygote --no-zygote-sandbox --application-name=mycroft.gui --webengine-schemes=qrc:sLV --lang=en
rudism     58223    1332  0 Dec16 tty1     00:00:00 /usr/lib/aarch64-linux-gnu/qt5/libexec/QtWebEngineProcess --type=zygote --application-name=mycroft.gui --webengine-schemes=qrc:sLV --lang=en
rudism     58225   58223  0 Dec16 tty1     00:00:00 /usr/lib/aarch64-linux-gnu/qt5/libexec/QtWebEngineProcess --type=zygote --application-name=mycroft.gui --webengine-schemes=qrc:sLV --lang=en
rudism     79727   79703  0 10:38 pts/0    00:00:00 grep --color=auto -Ei mycroft|wire
> id
uid=1000(rudism) gid=1000(rudism) groups=1000(rudism),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),116(netdev),120(lxd)
1 Like

Fantastic walkthrough, thanks!

I think there is one small typo in the TTS speaker config

mycroft-config set tts.mimic3_tts_plug.speaker slt

Looking at voices available at Mimic 3 - Mycroft I don’t see an slt voice, only slp. Working great otherwise, I made it all the way through the setup when reading carefully! :smiley:

Now I’m off the fiddle with skills and look into touchscreen support!