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

Indeed and exactly what I am after with the OS.

When the next version is released, I will give the whole embedded update mechanism more priority, so it will be easy to update/upgrade the system without reflashing the whole SD card. It will then be as easy as shove an USB with an update file into the device, or go to a webpage and drag&drop the update-file there (later on, I can also “push” new firmware version OTA);

That will also open the door for smal(ler) incremental updates in case some additional software might be required such as Pianobar.

But that whole system needs some changes to make the whole system Read-Only and work with a Data overlay for all files that needs to be writable.

First the last bits of the GUI (as good as done now)
Fix the (headless) WiFi setup system
Fix possible other regressions (noticed an Bluettoth error the other day)

We will get there…

2 Likes

I definitely think that this form of update is a very good solution to facilitate the use of this technology.

On the other hand you are right about the Bluettoth working choppy on the rpi3.

Last quick video of the GUI running with the next upcoming version. This runs the mycroft-gui fullscreen and windowless on a Weston / Wayland session instead onf straight on the DRM / Framebuffer. It actually runs better as it looks like mycroft-gui and it’s skills are written with desktop in mind.

The video also shows the GUI skill from @AIIX called wikidata (bill gates). The youtube skill is the GUI-less version of @mcdruid as there is a small issue with the one from AIIX as that skill forces the GUI into portait mode? Will have a look at it later and report back to AIIX with debug info.

I believe as more and more people are looking at the GUI and with the next version of MycroftOS people could have easy access to the GUI, we would need to have a look at the code and somehow support landscape/desktop mode a bit better. (But I know AIIX is most likely already looking at that for plasma-big-screen anyhow)

Still some small tweaks todo, but they are all little nice to have’s so will push that forward till after the release. Already working on the wifi setup. If all goes a bit like planned, hopefully be able to push the release end of this weekend (knock on wood)

7 Likes

Really cool progress! Thumbs up for that I am excited to check the rls when tt comes out…

I will not be able to sleep :slight_smile:
If you need a test driver, I am ready with an extra SD card to test the new alpha at any time! :slight_smile:

Bit of a screw up with copy and paste the wrong build config file🤦‍♂️

Oh well, not a punishment in the end.

image image

64 bits OS and Kernel (5.4.42 LTS)

Onwards we go!

3 Likes

For the ones with a rpi4 and no patience, you might want to check out the “gui” chat channel.:muscle:t2:

3 Likes

I need to finish my cp-kodi-skill then i can try display Now Playing… thumbnails on the gui.

1 Like

With the help from our GUI master @AIIX

Only missing an icon pack for the pause/stop buttons. Now back into that WiFi stuff! :man_facepalming:

4 Likes

wondering if touch screen will be supported :slight_smile:

It will. Actually, only connected a mouse to show case a swipe to the left. And a tap onto the screen.

Testing it all on my HDMI TV, but it is made for one of those touch screens that are available. Including the one from the Mark-2. For that device it would only require a sound configuration patch, but already figured out how to check if the ADAfruit amplifier is connected and @guhl already confirmed how to configure it properly for pulseaudio.

It then requires only a “screen rotate” line in the config.txt for the splash and another in the weston.ini for the mycroft-gui.

MycroftOS will run on the Mark-2 hardware as alternative for whatever the Mycroft Dev’s decide to come up with in the end.

2 Likes

It sounds incredible!
by chance this screen is compatible?

Or you need a screen with HDMI?

Should work. Maybe need a configuration thing added as DSI screens run on /dev/fb1 instead /dev/fb0

Also unsure about the current acceleration support for fb1. A while back only fb0 could run accelerated and you needed to clone fb0 onto fb1 as work around. Need to read into that…

2 Likes

Apologies “guys”!

Hope to be able to pick up the development again after the weekend.

3 Likes

Ok, here it comes…

A “dirty” alpha8 version for the rpi4. If no major bugs show up (they will because I hardly tested this one) I will compile a rpi3-64bit alpha8 soon.

Highlights for this release;

Full 64 bits OS and Kernel (5.4.42 LTS)

Balena.io wifi-connect wifi setup
On your phone, tablet or laptop connect to the open network “MYCROFT”. A captive portal page opens. Select your wifi ssid, insert your password and press connect.

Please bare in mind, there are NO gui visuals implemented yet, nor does mycroft speaks, what to do. Just connect to the open MYCROFT network.

Or just connect a LAN cable.


MycroftOS - Version 1.0.0 - alpha 8

ChangeLog:

  • Ondemand governor for both RPI3 and 4 (instead of performance) [DONE]
  • Fix: MPV not compiling because of missing LD stuff [DONE]
  • Update to latest LTS kernel and drivers / firmwares [5.4.42] [DONE]
  • Switch from rpi-userland binaries to mesa3d [DONE]
  • Switch to fully 64bit [DONE for rpi4]
  • Update to latest LTS buildroot (20.02.3) [DONE]
  • Update to latest Mycroft version and dependencies [DONE]
  • Addition of additional packages for the near future [DONE]
    • OpenCV [DONE] [Not Enabled Yet]
    • espeak [DONE]
    • Python-Numpy [DONE]
    • Motion [DONE] [Not Enabled Yet]
    • Mosquitto [DONE] [Not Enabled Yet]
    • Squeezelite [DONE]
  • Add the last bits of the LAN-MAC address to the hostname [DONE]
  • Update spotifyd to latest 0.2.24 version [DONE]
  • Update snapcast to latest 0.19.0 version [DONE]
  • Update respeaker driver to latest dev version. [DONE] [Todo dtoverlay binary]
  • More microphone support [DONE]
    • PS3 Eye [DONE]
  • Cleanup buildroot: [DONE]
    • rootfs default overlay seperate [DONE]
    • device specific overlays [DONE]
  • Look into animating the boot splash screen, showing progress during boot [DONE]
    • Add and implement psplash [DONE]
    • Update all services to update psplash [DONE]
  • Change the wording on the splash screens; [DONE (Removed)]
    • Safe to reboot → Safe to reboot / Rebootig now [DONE (Removed)]
    • Safe to poweroff → Safe to poweroff / Powering off [DONE (Removed)]
  • Make use of systemd preset files (/usr/lib/systemd/system-preset/-.preset) [DONE]
    • wpa_supplicant@wlan0.service [DONE]
    • wpa_supplicant@ap0.service [DONE]
    • Enable any other mycroftos services that needs to be enabled by default [DONE]
    • Remove all systemd (enabled) symlinks in the external packages [DONE]
    • Disable any newly installed service by default. (/usr/lib/systemd/system-preset/99-default.preset) [DONE]
    • wpa_supplicant systemd file can now be placed in rootfs-overlay / patch to be removed [DONE]
  • Fix python-speechrecognition package. Do not copy flac binaries [DONE]
  • Split up the system / create two different versions; Headless and GUI [DONE] [Headless to be updated after the GUI]
    • Add an first initial GUI system just as Mycroft.ai (QT5) [DONE]
  • Migrate whole networking utilizing NetworkManager [DONE]
  • Implement balena.io wifi-connect system [DONE]

Download: GOTO Downloads page


MycroftOS - Version 1.0.0 - alpha 9

ToDo:

GUI / Headless:

  • Make the headless version really headless (no framebuffer, no drivers, no intialisation, etc)

WiFi / Network:

  • Add 5G support to the wifi system (Needs checking with the wifi-connect system)
  • Wifi-Connect:
    • Figure out how to make the wifi password box to be able to show password (eye icon)

Enclosure:

  • mycroftos-enclosure-skill: Code for wifi connect visuals (qml code for the enclosure skill to show the wifi setup screens)
  • mycroftos-enclosure-skill: Code for enabling services, halt, reboot, etc
  • mycroftos-enclosure-skill: Code for pulseaudio control (volume mostly)

System:

  • Add / compile dtparam and dtoverlay binaries from rpi-userland sources
  • Systemd notify and Watchdog support to make starting/stopping/restarting and failures way more robust. [WIP]
  • Enable (hardware) watchdog support.
  • Include changing the hostname from the MycroftOS settings skill without messing up above MAC addition.
  • Look into the msm error/warning “no package manager found” (there is none, but just handle the warning)
  • Patch Mycroft Skill Manager to use “pip install --user” so installed packages are installed within the home directory
  • Included volume skill can’t be updated
    • Should be changed to pulseaudio anyway, but…
    • Check if the included volume-skill can be updated, via offical git commits
  • Avahi zero config publish to be set up (pulseaudio, mpd, snapcast, etc.)
  • MycroftOS settings skill to be able to setup smart speaker services / software
  • Add and make configurable, where sound output has to go;
    • BT Speaker (A2DP) normal (Use a bluetooth speaker as output)
    • Bluetooth mic/speaker combo support using HSP (use headsets as input/output for Mycroft)
    • Airplay (example: SONOS) using module-raop-discover and module-raop-sink of PulseAudio
    • Autoconnect trusted BT devices as soon as it sees them using: module-switch-on-connect from PulseAudio
  • Move ALL files/directories that need to be writable to either;
    • /etc (configuration files)
    • /opt
    • /home
  • Split the MycroftOS image into the following partitions;
    • /boot1 (kernel + driver)
    • /boot2 (kernel + drivers)
    • /rootfs1 (Read Only filesystem)
    • /rootfs2 (read Only filesystem)
    • /data (Read / Write data partition)
      /etc
      /opt
      /home
  • Create systemd overlay system for /data into /rootfs
  • Implement easy (OTA) update system (SWUpdate)
  • Support for the Mark - 2 hardware
  • Support for more devices / boards
    • OVA (Virtual system - Virtualbox)
  • Build precise from source at build time (0.3.0 dev version)
    • create buildroot packages for all dependencies.
    • create buildroot package for precise-engine & runner
    • create buildroot package for wake word modules (including the commodity ones)
    • figure out how to give back to the communicty by allowing recording of wake words easily

Documentation:

  • Change README with all new changes [WIP]
  • Update / Complete “documentation” folder and docs
    • Building.md
    • Boards.md
    • Kernel.md
    • Python-packages.md
  • Instructions / Wiki for most common and different aspects and functions;
    • Installation
    • First run
    • Configuration
      • Smart speaker functions
      • System Services
    • Spotify setup
    • Squeezelite setup
    • Snapcast Client/Server setup
    • Bluetooth speaker output setup
    • Airplay speaker output setup

Cleanup & Maintenance:

  • Fix / Check all Buildroot package dependencies (SELECT and DEPENDS references within Config.in)
  • Fix / Check all buildroot package - License reference and package setup.
  • Cleanup buildroot config file
    • remove / disable any unused packages that might have slipped in while testing / debugging / etc.
  • Make sure all Skills from the market can install (python dependencies either available or pre-installed)
  • Cleanup the kernel config
    • Remove unused drivers and stuff (DVB and such)
    • Separate default config into systeemwide .config
    • Board specific configs as overlays

3 Likes

Nice one!

You may already know about this, but for better speech during startup and pairing you can preload a Mimic2 cache and set the directory path in mycroft.conf.

Already there😉

2 Likes

Wow! Im ready for the rpi3 version :slight_smile:

Building as we speak …

Bare in mind, a “make clean” -> “make” cost me close to 24 hours. That is if everything just goes as it should, without compile-errors that I might need to fix.

3 Likes

The RPI3 version compile run is done and uploaded.

At the moment I am at my daytime job so this build has not yet been tested and I will not be able to do so for the next few hours. However…

If you feel adventurous and would like to check it out, see if it works and/or how it holds up with the whole GUI, you can.

Let me know your thoughts and bugs etc.

Will give it a few days to test more myself and squeeze the most common bugs before I tagg the release on github.

Enjoy!

EDIT: Nope, doesn’t work as of yet. Just checked. Will dig into it and report back as soon as the version is working as expected.

EDIT2: Ok re-uploaded another version that works, but a quick walk around is showing; It does work, but resources are stretched to the max. Especially at the first boot when it needs to download and install all skills.

Be patience and let it go for a while. It will get there…

After that CPU usage goes down again. Memory concumption on the otherhand stays maxed out.

Anyhow: It work and this alpha8 is the most dirtiest release of them all, so will do some proper bug hunting and fixing, followed by some more tqweaking and tuning.

Anyhow you can play around with the GUI if you want :smiley:

5 Likes