Trying Neon/OVOS again

I’m trying Neon/OVOS again … thought I’d give some UX feedback:

  • Went to, found install instructions at: Neon AI OS for the Mark II | Neon AI
  • Downloaded compressed image file from:
  • Uncompressed .xz file to .img file
  • Copied .img file to micro SD card
  • Booted on RasPi 4 with monitor, mouse and keyboard attached
  • Gecko five toed splash screen appeard
  • After a minute or two - Set up WiFi - gave “Connected” verification (Good! Ubuntu does not do so)
  • Back to yellow splash screen
  • Verbal “Neon AI is ready” => good
  • Normally I open a terminal session, but I asked “Hey Neon what is my IP address” => Answered with correct address!
  • SSH’d in with neon/neon => had to reset password => after setting password, SSH session ended.
  • Started new SSH session with new password.
  • Asked “Hey Neon what time is it”, with no pause after the wakeword => Spoke “3:46” => No “AM” suffix => this is the US left coast time while I’m on the right coast
  • Back to GUI: See a red exclamation point - click on it => verbal "Do you want to update from X to Y => “yes” => “updating … I will let you know when this is complete”
  • Install ovos-tools:
git clone
cd ovos-tools/
sudo ./
  • Run lsenv (list environment):
Neon services:
neon-admin-enclosure:  active (running)
          neon-audio:  active (running)
            neon-bus:  active (running)
      neon-enclosure:  active (running)
            neon-gui:  active (running)
         neon-skills:  active (running)
         neon-speech:  active (running)
pulseaudio service:
          pulseaudio:  active (running)
pipewire processes:
mpd service:
                 mpd: Unit mpd.service could not be found.
              Distro: Debian GNU/Linux 12 (bookworm)
        Neon version: 24.2.29
         VIRTUAL_ENV: /home/neon/venv
          IP address:
     CPU temperature: 84C / 183F
       Root fs usage: 8%
           CPU usage: 36%
Memory usage:
                 total        used        free      shared  buff/cache   available
  Mem:           3.7Gi       2.2Gi        83Mi       475Mi       1.9Gi       1.4Gi
  Swap:          511Mi       1.0Mi       510Mi
tmpfs filesystem?
                      /var/log           Linux logs : no
  /home/neon/.local/state/neon            Neon logs : yes
  • YIKES! The CPU is too hot already: 84C / 183F (I need a fan)
  • Run command “sudo telinit 3” to go from GUI to command line mode
  • After a couple minutes, temperature is down to 74C / 165F
  • Try to set to “headless” at boot time:
systemctl isolate
sudo reboot
  • Go to monitor => Kernel panic => UFFF - I toasted my Neon/OVOS in less than an hour :((
  • Reflashing new image

So with Neon and the GUI running, and no fan, my RasPi 4 runs too hot.
Is there a different way to run Neon without a GUI?

It dawned on me that I never got a verbal “Update is complete” - so I probably rebooted in the middle of an upgrade


  • Overall good user experience

  • Install process should ask for geographic location

  • Would be nice to have a way to open terminal session from GUI

  • Don’t reboot in the middle of an upgrade (ha ha :))

    -Mike Mac


Thanks for the feedback! A few notes:

  • The device should approximate your location by public IP address, but I agree that getting some user input for setup would be a nice option (i.e. present an option for a user to configure settings like location, units, provide a name/email, etc). I’ll check for errors on my installations today and make sure that service still works.

    Update: I see errors in updating the IP address in my log; we may need to find a new service for IP location. I opened this issue.

  • You can get a terminal up with ctrl+shift+F1 (noted in our docs). In a future GUI implementation I’d like this exposed in a menu somewhere.

  • Thank you for the reminder to update the recommended image to the latest version (I generally wait a few days just in case some new issues come up during updates)

  • You should be able to disable the GUI with systemctl disable gui-shell, but it will come back with updates. You can define a script to run after updates to re-disable this, as described in our docs.