OpenVoiceOS - A bare minimal (production type of) OS based on Buildroot

Hmmm, strange. If you click the j1nx.nl redirect link, it doesn’t proper redirect, while if you copy&paste the link, it works ?!?! (Perhaps an issue with the forum upgrade)

Anyhow, included the redirect links in above post.

EDIT: IMages can also be downloaded from github

Gave it a quick try on my RPI3b with AIY-VoiceKit:

Wifi does not come up (changed wpa_supplicant of course)

No sound (obviously as AIY-VoiceKit is not supported yet)

mycroft-cli-client fails with error message:

  File "/bin/mycroft-cli-client", line 11, in <module>
    load_entry_point('mycroft-core==19.8.4', 'console_scripts', 'mycroft-cli-client')()
  File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
    return ep.load()
  File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2443, in load
    return self.resolve()
  File "/usr/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2449, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python3.8/site-packages/mycroft/client/text/__main__.py", line 21, in <module>
    from .text_client import (
  File "/usr/lib/python3.8/site-packages/mycroft/client/text/text_client.py", line 39, in <module>
    locale.setlocale(locale.LC_ALL, "")  # Set LC_ALL to user default
  File "/usr/lib/python3.8/locale.py", line 608, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

here is output of locale

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

how does it know that I am from Germany ?

command export LC_ALL="C" helped, now CLI is coming up and i could successfully pair the device

msm install picroft-google-aiy fails with

ERROR: Could not find a version that satisfies the requirement RPi.GPIO (from versions: none)
ERROR: No matching distribution found for RPi.GPIO

Quick test with what time is it and what is the weather via CLI worked fine.

1 Like

Perfect feedback!

Had a very busy day yesterday, but will dig into it today and report back.

Again, thanks. Much appreciated that some “other eyes” are looking at it and different hardware at a different location. There is only so much that you can test yourself.

Right! To be honest, because my rpi3 board is faulty if it comes to the WiFi chip I did not really spent time on it. However didn’t realise it was this bad. Will look at it with another wifi chip/dongle. Although I am still not sure how to tackle the WiFi setup, getting the WiFi up manually should ofcourse still work.

Google AIY Voicekit is next on the list. Still investigating how to use pulseaudio and udev together to automatically configure the device if AIY is found at boot.

At the very fist boot and therefor first start-up of Mycroft, all default skill get downloaded and with that it will pip install a whole bunch of additional python packages via their requirements.txt

This take a few minutes to fully complete. Runningh the mycroft-cli-client before this process is finished will give an error about some sort of python package not being found. This will resort itself as soon as everything is installed.

I need to figure out, how to communicate this to the user. However that part is on the nice to have list atm.

With the last Buildroot upgrade, Python also got upgraded to 3.8 however a lot of wheels are not present for 3.8 yet. And as we do not have any compilers and such within Buildroot at run time, we can not install from sources (for the C related packages that it is)

I am compiling a new version at the moment, that reverts back to Python 3.7 till all the wheels are there.

To be honest. No clue :smiley:

Thx, will include this simple command at boot time. This to make sure it works everywhere in the world.

Anyhow, as soon as a new build with Python 3.7.4 is ready I can have another look at the other things.

1 Like

Uploaded a new version, reverted back to Puildroot 2019.08.3 which included Python 3.7.4 instead of 3.8.

https://j1nx.stackstorage.com/s/r4g2dol4tdOSG4M

@Dominik If you have the change are willing to, could you give it a go? Not touched the WiFi stuff yet. Just wanted to know if this is a better base to build upon.

Download was a bit slooooow today, but here we are:

  • no more locale issues!
  • connected my Respeaker 4mic USB v2… works perfect!
  • configured wpa_supplicant but doesn’t work
1 Like

Great, thx!

Haven’t touched WiFi as of yet. Just reverted a lot of patches and buildroot.

Onwards we go. WiFi is next.

Worked straight away for me with a PS Eye. It’s throwing a “cannot get min/max values for control 2” for that device, but it doesn’t seem to affect its operation.

Also I have it plugged into a monitor and it selected the HDMI rather than the 3.5mm for audio out, but that might be preferred for a lot of people.

Nice work on this!

1 Like

@gez-mycroft You tested the alpha5 version, right?

Yep - that was alpha5

HAPPY NEW YEAR

@gez-mycroft To comment on your sound over HDMI feedback; Yes indeed, I have sound auto select on boot. If there is a HDMI connected, it uses the HDMI as sound output. If you boot without HDMI connected, the 3.5 jack will be used. Later on in time, I will see if I can make this switchable, but for now, you need to boot with either HDMI or without.


I uploaded a sixed alpha version to my STACK drive for you guys to test.

Changelog:

  • Disabled Pulse-AEC as default for now.
  • Bumped Mycroft to latest 19.8.5
  • Switched starting all mycroft services to proper systemd units
    – This in preparation for watchdog support
    – Services linked to each other
    – Not starting if network is not up
    – Wait for internet before starting mycroft stack within systemd.
  • Make the HDMI screen pretty again.
    – This in preparation for FRamebuffer support within the enclosure code.
  • Fixed the whole WIFI system. @Dominik
    – When no wifi configuration present at the first boot it will setup an Open Acces point; MycroftOS-WiFiSetup.
    – Use another wifi device such as a phone or tablet.
    – Connect to the open network.
    – Modern devices will automatically open the webbased configuration. (mimic a captive portal)
    – The webbased config scans for available networks.
    – Select your SSID from the list.
    – Insert your WIFI password and press the connect button.
    – (or select the skip at the bottom to disable the AP. You need to use a LAN connection then)
    – The device will reboot and connect to your wifi and continue.
    (If you would like to skip the whole setup and just use your own wpa_supplicant.conf settings/setup; Just copy the wpa_supplicant.conf at the FAT /boot partition before youi start the device)

Two more things to go before I consider this a first official release;

  1. Enclosure code to be run for;
    – Shutdown/Reboot handle
    – Enable/Disable SSH (default user/passwd == mycroft/mycroft )
    – PulseAudio volume control
    – Listener/Thinking/Speaking visuals over the Framebuffer
  2. Pull and build precise from source at build time.
    –(This would allow me to take a stab at 64bit support)

From there on I can start adding features such as ;

  • Airplay 1
  • Spotify
  • Bluetooth
  • mpd
  • Squeezebox
  • etc. (open for ideas)

Here are the download links for this intermediate test release;

RPI3:
https://j1nx.stackstorage.com/s/9zbgEWywJAEjbWy

RPI4:
https://j1nx.stackstorage.com/s/t74ohd06ib2v8NO

DISCLAIMER: As my RPI wifi is broken, I did all above coding with a cheap ass wifi dongle. Really hope it all works with the onboard wifi as well

1 Like

MPD with Snapcast support?
Would be great for some of the music skills.

1 Like

Do you have an rpi4 build again?

Not yet. Will merge the rpi3 with rpi4 later today for a clean build, but it will take quite some hours.

Will report back as soon as the download is available.

1 Like

Yeah, forgot to mention. Snapcast (both client and server) is on the top of the list, together with Shairport-sync as those two are already readily available for Buildroot.

Easy quick, pull, change, build procedure.

Anyhow, the biggest challenge is to connect everything to PulseAudio and to control pulseaudio from mycroft. The default SINK is for the normal default speaker output, but as soon as we are going to create multiple SINK’s like a Snapcast-SINK, we need to implement a; “Play blabla on from youtube on Snapcast”

*But one hurdle at a time :slight_smile:

1 Like

@suisat Took some time, but here is the RPI4 build. (Again; Untested by me, so happy to hear your results)

https://j1nx.stackstorage.com/s/t74ohd06ib2v8NO

Anybody who could confirm that all the WiFi stuff actually works with the onboard WiFi chip as well?

Time for me to invest in a rpi4.

Rpi3 version is there as well😉

Sorry, I was not home or did not have time since you rls this. I will write you, hopefully tomorrow.