OpenVoiceOS / ovos-installer

Open Voice OS and/or HiveMind installer using Ansible with an intuitive and easy Text-based User Interface
https://www.openvoiceos.org
79 stars 21 forks source link

ovos-installer breaks pulseaudio on update installation #155

Closed wita-sec closed 1 month ago

wita-sec commented 1 month ago

This bug gets opened after discussion https://github.com/orgs/OpenVoiceOS/discussions/277 with JarbasAl

Steps to repro

Have installed ovos via ovos-installer, version as of 3 weeks ago. Run an ovos-update by shutting down ovos, rerun ovos-installer, walk through the dialogs and kicked off installation restarted ovos.

Problem: pulseaudio is no longer working, ovos audio and aplay did not play any longer. ovos failed to open pulseaudio.socket.

Needed to reinstall pulseaudio and enabled it again in systemctl to fix this problem.

goldyfruit commented 1 month ago

Hi @wita-sec

Which Linux distribution on which hardware? Do you have any logs from PulseAudio?

The installer doesn't do much with PulseAudio.

wita-sec commented 1 month ago

I run OVOS on RPi4B, latest OS upgrade. OVOS version is as of today, Sept.23 2024 Sorry I did not collect log information. Cmd apt list | grep pulseaudio indicated that at least on package was not installed/configured.

I rerun apt-get install pulseaudio, systemctl --user enable pulseaudio systemctl --user start pulseaudio in order to get it working again.

goldyfruit commented 1 month ago

Are you using the desktop or the Lite version of Raspberry Pi OS. The installer only installs PipeWire as a sound server except on WSL2.

wita-sec commented 1 month ago

I am using the RPi4B Desktop version. In fact, PipeWire was activated via the ovos-installer update. Before that, PulseAudio was in place. PipeWire audio did not work at all (ovos-speak, aplay)

goldyfruit commented 1 month ago

Gonna investigate and try to replicate the issue.

FYI

The recommended Linux distribution for OVOS on Raspberry Pi is Raspberry Pi OS Bookworm Lite (not desktop) 64-bit as described in this official howto.

goldyfruit commented 1 month ago

So, I just installed a Raspberry Pi OS Bookworm Desktop and this is the result:

PipeWire and PulseAudio packages are installed.

goldyfruit@rpi5b:~ $ dpkg -l | grep -iE "pipewire|pulseaudio"
ii  libpipewire-0.3-0:arm64              0.3.65-3+rpt8+deb12u1               arm64        libraries for the PipeWire multimedia server
ii  libpipewire-0.3-common               0.3.65-3+rpt8+deb12u1               all          libraries for the PipeWire multimedia server - common files
ii  libpipewire-0.3-modules:arm64        0.3.65-3+rpt8+deb12u1               arm64        libraries for the PipeWire multimedia server - modules
ii  libpulse0:arm64                      16.1+dfsg1-2+rpt1                   arm64        PulseAudio client libraries
ii  libpulsedsp:arm64                    16.1+dfsg1-2+rpt1                   arm64        PulseAudio OSS pre-load library
ii  libspa-0.2-bluetooth:arm64           0.3.65-3+rpt8+deb12u1               arm64        libraries for the PipeWire multimedia server - bluetooth plugins
ii  libspa-0.2-modules:arm64             0.3.65-3+rpt8+deb12u1               arm64        libraries for the PipeWire multimedia server Simple Plugin API - modules
ii  lxplug-volumepulse                   0.26                                arm64        PulseAudio controller plugin for lxpanel
ii  pipewire:arm64                       0.3.65-3+rpt8+deb12u1               arm64        audio and video processing engine multimedia server
ii  pipewire-bin                         0.3.65-3+rpt8+deb12u1               arm64        PipeWire multimedia server - programs
ii  pipewire-libcamera:arm64             0.3.65-3+rpt8+deb12u1               arm64        PipeWire libcamera plugin
ii  pipewire-pulse                       0.3.65-3+rpt8+deb12u1               arm64        PipeWire PulseAudio daemon
ii  pulseaudio                           16.1+dfsg1-2+rpt1                   arm64        PulseAudio sound server
ii  pulseaudio-module-bluetooth          16.1+dfsg1-2+rpt1                   arm64        Bluetooth module for PulseAudio sound server
ii  pulseaudio-utils                     16.1+dfsg1-2+rpt1                   arm64        Command line tools for the PulseAudio sound server
ii  wireplumber                          0.4.13-1                            arm64        modular session / policy manager for PipeWire

PulseAudio is not started by default which means that its not the default sound server.

goldyfruit@rpi5b:~ $ systemctl --user status pulseaudio
○ pulseaudio.service - Sound Service
     Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; preset: enabled)
     Active: inactive (dead)
TriggeredBy: ○ pulseaudio.socket

PipeWire is started by default which means that its the default sound server.

goldyfruit@rpi5b:~ $ systemctl --user status pipewire
● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-07-03 20:16:52 EDT; 2 months 21 days ago
TriggeredBy: ● pipewire.socket
   Main PID: 1019 (pipewire)
      Tasks: 3 (limit: 9247)
        CPU: 37ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─1019 /usr/bin/pipewire

Jul 03 20:16:52 rpi5b systemd[1003]: Started pipewire.service - PipeWire Multimedia Service.
Jul 03 20:16:52 rpi5b pipewire[1019]: mod.rt: Can't find org.freedesktop.portal.Desktop. Is xdg-desktop-portal running?
wita-sec commented 1 month ago

Firstly, thank you for investigating.

And, thank you for pointing me to https://community.openconversational.ai/t/howto-begin-your-open-voice-os-journey-with-the-ovos-installer/14900 I did not see this doc before. Is it linked with the OVOS documentation?

Next, in my case, systemctl --user could not find pulseaudio any longer. Thats the reason i reinstalled and enabled it again in systmectl. Note, my testcase was a ovos-installer update run, not a fresh install.

However, i seem to remember that in my case of a fresh installation pulseaudio was not installed and i needed to install and enable it manually.

Maybe the reason is that i am using RPi4B Desktop instead of Bookworm lite ...

goldyfruit commented 1 month ago

Firstly, thank you for investigating.

No problem :+1:

And, thank you for pointing me to https://community.openconversational.ai/t/howto-begin-your-open-voice-os-journey-with-the-ovos-installer/14900 I did not see this doc before. Is it linked with the OVOS documentation?

Good question :yum:

Maybe the reason is that i am using RPi4B Desktop instead of Bookworm lite ...

Lite will not have any sound server installed, so the ovos-installer will by default install PipeWire which is the new standard.

wita-sec commented 1 month ago

Troubleshooting in the OVOS community docs talks about PulseAudio. Thats what i was follogin, but may its outdated.

https://openvoiceos.github.io/community-docs/145-troubleshooting_audio/

You may close this issue, as i did not follow the official path, and i had a workaround. However, community docs should be updated if there is some time left...

wita-sec commented 1 month ago

And btw, OVOS-Installer is a great tool, stable and comprehensive.

goldyfruit commented 1 month ago

And btw, OVOS-Installer is a great tool, stable and comprehensive.

Thanks for the awesome feedback, we appreciate it!!