Mycroft and pipewire

I am trying to install mycroft with pipewire.

Garuda-Inxi
System:
Kernel: 5.16.15-zen1-1-zen x86_64 bits: 64 compiler: gcc v: 11.2.0
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=00b33177-335b-466d-8a5b-e5bad5669f19 rw [email protected]
quiet splash rd.udev.log_priority=3 vt.global_cursor_default=0
systemd.unified_cgroup_hierarchy=1 loglevel=3
Desktop: KDE Plasma 5.24.3 tk: Qt 5.15.3 info: latte-dock wm: kwin_x11
vt: 1 dm: SDDM Distro: Garuda Linux base: Arch Linux
Machine:
Type: Laptop System: Micro-Star product: GL65 9SE v: REV:1.0
serial: <superuser required> Chassis: type: 10 serial: <superuser required>
Mobo: Micro-Star model: MS-16U5 v: REV:1.0 serial: <superuser required>
UEFI: American Megatrends v: E16U5IMS.102 date: 03/17/2020
Battery:
ID-1: BAT1 charge: 27.2 Wh (60.0%) condition: 45.3/51.6 Wh (87.9%)
volts: 11.0 min: 10.9 model: MSI BIF0_9 type: Li-ion serial: N/A
status: N/A
CPU:
Info: model: Intel Core i7-9750H bits: 64 type: MT MCP arch: Coffee Lake
family: 6 model-id: 0x9E (158) stepping: 0xA (10) microcode: 0xEC
Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache:
L1: 384 KiB desc: d-6x32 KiB; i-6x32 KiB L2: 1.5 MiB desc: 6x256 KiB
L3: 12 MiB desc: 1x12 MiB
Speed (MHz): avg: 2589 high: 2601 min/max: 800/4500 scaling:
driver: intel_pstate governor: performance cores: 1: 2548 2: 2573 3: 2601
4: 2600 5: 2600 6: 2601 7: 2600 8: 2600 9: 2600 10: 2601 11: 2549
12: 2600 bogomips: 62399
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Vulnerabilities:
Type: itlb_multihit status: KVM: VMX disabled
Type: l1tf
mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable
Type: mds mitigation: Clear CPU buffers; SMT vulnerable
Type: meltdown mitigation: PTI
Type: spec_store_bypass
mitigation: Speculative Store Bypass disabled via prctl
Type: spectre_v1
mitigation: usercopy/swapgs barriers and __user pointer sanitization
Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, IBRS_FW,
STIBP: conditional, RSB filling
Type: srbds mitigation: Microcode
Type: tsx_async_abort status: Not affected
Graphics:
Device-1: Intel CoffeeLake-H GT2 [UHD Graphics 630] vendor: Micro-Star MSI
driver: i915 v: kernel ports: active: eDP-1 empty: none bus-ID: 00:02.0
chip-ID: 8086:3e9b class-ID: 0300
Device-2: NVIDIA TU106M [GeForce RTX 2060 Mobile] vendor: Micro-Star MSI
driver: nvidia v: 510.54 alternate: nouveau,nvidia_drm pcie: gen: 3
speed: 8 GT/s lanes: 16 bus-ID: 01:00.0 chip-ID: 10de:1f11 class-ID: 0300
Device-3: Chicony HD Webcam type: USB driver: uvcvideo bus-ID: 1-13:5
chip-ID: 04f2:b695 class-ID: 0e02
Display: x11 server: X.Org v: 1.21.1.3 compositor: kwin_x11 driver: X:
loaded: intel,nvidia unloaded: modesetting,nouveau alternate: fbdev,nv,vesa
gpu: i915 display-ID: :0 screens: 1
Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.0x11.2")
s-diag: 582mm (22.9")
Monitor-1: eDP1 mapped: eDP-1 model: AU Optronics built: 2019
res: 1920x1080 hz: 120 dpi: 143 gamma: 1.2 size: 340x190mm (13.4x7.5")
diag: 394mm (15.5") ratio: 16:9 modes: 1920x1080
OpenGL: renderer: Mesa Intel UHD Graphics 630 (CFL GT2)
v: 4.6 Mesa 21.3.7 direct render: Yes
Audio:
Device-1: Intel Cannon Lake PCH cAVS vendor: Micro-Star MSI
driver: snd_hda_intel v: kernel
alternate: snd_soc_skl,snd_sof_pci_intel_cnl bus-ID: 00:1f.3
chip-ID: 8086:a348 class-ID: 0403
Sound Server-1: ALSA v: k5.16.15-zen1-1-zen running: yes
Sound Server-2: PulseAudio v: 15.0 running: no
Sound Server-3: PipeWire v: 0.3.48 running: yes
Network:
Device-1: Intel Cannon Lake PCH CNVi WiFi driver: iwlwifi v: kernel
bus-ID: 00:14.3 chip-ID: 8086:a370 class-ID: 0280
IF: wlo1 state: up mac: <filter>
Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
vendor: Micro-Star MSI driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s
lanes: 1 port: 3000 bus-ID: 03:00.0 chip-ID: 10ec:8168 class-ID: 0200
IF: enp3s0 state: down mac: <filter>
IF-ID-1: virbr0 state: down mac: <filter>
Bluetooth:
Device-1: Intel Bluetooth 9460/9560 Jefferson Peak (JfP) type: USB
driver: btusb v: 0.8 bus-ID: 1-14:6 chip-ID: 8087:0aaa class-ID: e001
Report: bt-adapter ID: hci0 rfk-id: 0 state: down
bt-service: enabled,running rfk-block: hardware: no software: no
address: <filter>
Drives:
Local Storage: total: 1.38 TiB used: 550.8 GiB (39.1%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Western Digital
model: PC SN520 SDAPNUW-512G-1032 size: 476.94 GiB block-size:
physical: 512 B logical: 512 B speed: 15.8 Gb/s lanes: 2 type: SSD
serial: <filter> rev: 20140000 temp: 50.9 C scheme: GPT
ID-2: /dev/sda maj-min: 8:0 vendor: Western Digital
model: WD10JPVX-60JC3T0 size: 931.51 GiB block-size: physical: 4096 B
logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 5400 serial: <filter>
rev: 1A01 scheme: GPT
Partition:
ID-1: / raw-size: 146.48 GiB size: 146.48 GiB (100.00%)
used: 56.57 GiB (38.6%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-2: /boot/efi raw-size: 256 MiB size: 252 MiB (98.46%)
used: 557 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
ID-3: /home raw-size: 146.48 GiB size: 146.48 GiB (100.00%)
used: 56.57 GiB (38.6%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-4: /var/log raw-size: 146.48 GiB size: 146.48 GiB (100.00%)
used: 56.57 GiB (38.6%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-5: /var/tmp raw-size: 146.48 GiB size: 146.48 GiB (100.00%)
used: 56.57 GiB (38.6%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
ID-1: swap-1 type: zram size: 15.47 GiB used: 1.9 MiB (0.0%)
priority: 100 dev: /dev/zram0
Sensors:
System Temperatures: cpu: 49.0 C pch: 59.0 C mobo: N/A
Fan Speeds (RPM): N/A
Info:
Processes: 368 Uptime: 6h 0m wakeups: 1 Memory: 15.47 GiB
used: 3.22 GiB (20.8%) Init: systemd v: 250 tool: systemctl Compilers:
gcc: 11.2.0 clang: 13.0.1 Packages: pacman: 1824 lib: 550 Shell: fish
v: 3.3.1 running-in: konsole inxi: 3.3.13
Garuda (2.5.6-2):
System install date:     2022-01-25
Last full system update: 2022-03-14
Is partially upgraded:   No
Relevant software:       NetworkManager
Windows dual boot:       No/Undetected
Snapshots:               Snapper
Failed units:

Command: sudo pacman -Syu mycroft-core plasma5-applets-mycroft-git mimic mycroft-gui-git

I have found this link in the aur. The link describes where to put a conf file for pipewire and how to edit this. I have edited this file and placed in /etc/pipewire/pipewire-pulse.conf for system wide changes.

This is the file as I have edited.

pipewire-pulse.conf
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/pipewire-pulse.conf.d/ for system-wide changes or in
# ~/.config/pipewire/pipewire-pulse.conf.d/ for local changes.
#

context.properties = {
    ## Configure properties in the system.
    #mem.warn-mlock  = false
    #mem.allow-mlock = true
    #mem.mlock-all   = false
    #log.level       = 2

    #default.clock.quantum-limit = 8192
}

context.spa-libs = {
    audio.convert.* = audioconvert/libspa-audioconvert
    support.*       = support/libspa-support
}

context.modules = [
    { name = libpipewire-module-rt
        args = {
            nice.level   = -11
            #rt.prio      = 88
            #rt.time.soft = -1
            #rt.time.hard = -1
        }
        flags = [ ifexists nofail ]
    }
    { name = libpipewire-module-protocol-native }
    { name = libpipewire-module-client-node }
    { name = libpipewire-module-adapter }
    { name = libpipewire-module-metadata }

    { name = libpipewire-module-protocol-pulse
        args = {
            # the addresses this server listens on
            server.address = [
                "unix:native"
                #"unix:/tmp/something"              # absolute paths may be used
                #"tcp:4713"                         # IPv4 and IPv6 on all addresses
                #"tcp:[::]:9999"                    # IPv6 on all addresses
                #"tcp:127.0.0.1:8888"               # IPv4 on a single address
                #
                #{ address = "tcp:4713"             # address
                #  max-clients = 64                 # maximum number of clients
                #  listen-backlog = 32              # backlog in the server listen queue
                #  client.access = "restricted"     # permissions for clients
                #}
                { address = "tcp:127.0.0.1:4713"
                  client.access = "allowed"     # permissions for clients
                }
            ]
            #pulse.min.req          = 256/48000     # 5ms
            #pulse.default.req      = 960/48000     # 20 milliseconds
            #pulse.min.frag         = 256/48000     # 5ms
            #pulse.default.frag     = 96000/48000   # 2 seconds
            #pulse.default.tlength  = 96000/48000   # 2 seconds
            #pulse.min.quantum      = 256/48000     # 5ms
            #pulse.default.format   = F32
            #pulse.default.position = [ FL FR ]
            # These overrides are only applied when running in a vm.
            vm.overrides = {
                pulse.min.quantum = 1024/48000      # 22ms
            }
        }
    }
]

# Extra modules can be loaded here. Setup in default.pa can be moved here
context.exec = [
    { path = "pactl"        args = "load-module module-always-sink" }
    #{ path = "pactl"        args = "load-module module-switch-on-connect" }
    #{ path = "/usr/bin/sh"  args = "~/.config/pipewire/default.pw" }
]

stream.properties = {
    #node.latency          = 1024/48000
    #node.autoconnect      = true
    #resample.quality      = 4
    #channelmix.normalize  = true
    #channelmix.mix-lfe    = false
    #channelmix.upmix      = false
    #channelmix.lfe-cutoff = 0
    #channelmix.fc-cutoff  = 0
    #channelmix.rear-delay = 12.0
    #channelmix.stereo-widen = 0.0
    #channelmix.hilbert-taps = 0
}

# client/stream specific properties
pulse.rules = [
    {
        matches = [
            {
                # all keys must match the value. ~ starts regex.
                #client.name                = "Firefox"
                #application.process.binary = "teams"
                #application.name           = "~speech-dispatcher.*"
            }
        ]
        actions = {
            update-props = {
                #node.latency = 512/48000
            }
            # Possible quirks:"
            #    force-s16-info                 forces sink and source info as S16 format
            #    remove-capture-dont-move       removes the capture DONT_MOVE flag
            #quirks = [ ]
        }
    }
    {
        # skype does not want to use devices that don't have an S16 sample format.
        matches = [
             { application.process.binary = "teams" }
             { application.process.binary = "skypeforlinux" }
        ]
        actions = { quirks = [ force-s16-info ] }
    }
    {
        # firefox marks the capture streams as don't move and then they
        # can't be moved with pavucontrol or other tools.
        matches = [ { application.process.binary = "firefox" } ]
        actions = { quirks = [ remove-capture-dont-move ] }
    }
    {
        # speech dispatcher asks for too small latency and then underruns.
        matches = [ { application.name = "~speech-dispatcher*" } ]
        actions = {
            update-props = {
                pulse.min.req          = 1024/48000     # 21ms
                pulse.min.quantum      = 1024/48000     # 21ms
            }
        }
    }
]

Mycroft will not start. I am not sure where to go from here. Does the above look correct?

EDIT: When I run ./dev_setup.sh It says that pulseaudio and pipewire are in conflict. I would really like to keep pipewire.

Just some trouble shooting help

systemctl start mycroft.service
Job for mycroft.service failed because the control process exited with error code.
See "systemctl status mycroft.service" and "journalctl -xeu mycroft.service" for details.
systemctl status mycroft.service
× mycroft.service - Mycroft main service
Loaded: loaded (/usr/lib/systemd/system/mycroft.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2022-03-18 19:26:57 CST; 2s ago
Process: 3388 ExecStart=/usr/share/mycroft-core/start-mycroft.sh all (code=exited, status=1/FAILURE)
CPU: 35ms

Mar 18 19:26:57 jeremy-gl659se systemd[1]: Starting Mycroft main service...
Mar 18 19:26:57 jeremy-gl659se mycroft-core[3388]: Please update dependencies by running ./dev_setup.sh again.
Mar 18 19:26:57 jeremy-gl659se systemd[1]: mycroft.service: Control process exited, code=exited, status=1/FAI>
Mar 18 19:26:57 jeremy-gl659se systemd[1]: mycroft.service: Failed with result 'exit-code'.
Mar 18 19:26:57 jeremy-gl659se systemd[1]: Failed to start Mycroft main service.
lines 1-11/11 (END)
journalctl -xeu mycroft.service
░░
░░ A start job for unit mycroft.service has begun execution.
░░
░░ The job identifier is 2118.
Mar 18 19:26:57 jeremy-gl659se mycroft-core[3388]: Please update dependencies by running ./dev_setup.sh again.
Mar 18 19:26:57 jeremy-gl659se systemd[1]: mycroft.service: Control process exited, code=exited, status=1/FAI>
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ An ExecStart= process belonging to unit mycroft.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 1.
Mar 18 19:26:57 jeremy-gl659se systemd[1]: mycroft.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ The unit mycroft.service has entered the 'failed' state with result 'exit-code'.
Mar 18 19:26:57 jeremy-gl659se systemd[1]: Failed to start Mycroft main service.
░░ Subject: A start job for unit mycroft.service has failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ A start job for unit mycroft.service has finished with a failure.
░░
░░ The job identifier is 2118 and the job result is failed.
/start-mycroft.sh
Please update dependencies by running ./dev_setup.sh again.

I commented out installing pulseaudio in the dev_setup.sh

/dev_setup.sh
Installing packages...
Installing packages for Arch... 
warning: git-2.35.1-1 is up to date -- skipping
warning: python-3.10.2-1 is up to date -- skipping
warning: python-pip-21.0-1 is up to date -- skipping
warning: python-setuptools-1:59.3.0-1 is up to date -- skipping
warning: python-virtualenv-20.11.0-1 is up to date -- skipping
warning: python-gobject-3.42.0-3 is up to date -- skipping
warning: libffi-3.4.2-4 is up to date -- skipping
warning: swig-4.0.2-5 is up to date -- skipping
warning: portaudio-1:19.7.0-1 is up to date -- skipping
warning: mpg123-1.29.3-1 is up to date -- skipping
warning: screen-4.9.0-1 is up to date -- skipping
warning: flac-1.3.4-2 is up to date -- skipping
warning: curl-7.82.0-1 is up to date -- skipping
warning: icu-70.1-1 is up to date -- skipping
warning: libjpeg-turbo-2.1.3-1 is up to date -- skipping
warning: autoconf-2.71-1 is up to date -- skipping
warning: automake-1.16.5-1 is up to date -- skipping
warning: binutils-2.38-3 is up to date -- skipping
warning: bison-3.8.2-3 is up to date -- skipping
warning: fakeroot-1.28-1 is up to date -- skipping
warning: file-5.41-1 is up to date -- skipping
warning: findutils-4.9.0-1 is up to date -- skipping
warning: flex-2.6.4-3 is up to date -- skipping
warning: gawk-5.1.1-1 is up to date -- skipping
warning: gcc-11.2.0-4 is up to date -- skipping
warning: gettext-0.21-2 is up to date -- skipping
warning: grep-3.7-1 is up to date -- skipping
warning: groff-1.22.4-6 is up to date -- skipping
warning: gzip-1.11-1 is up to date -- skipping
warning: libtool-2.4.6+59+gb55b1cc8-2 is up to date -- skipping
warning: m4-1.4.19-1 is up to date -- skipping
warning: make-4.3-3 is up to date -- skipping
warning: pacman-6.0.1-4 is up to date -- skipping
warning: patch-2.7.6-8 is up to date -- skipping
warning: pkgconf-1.8.0-1 is up to date -- skipping
warning: sed-4.8-1 is up to date -- skipping
warning: sudo-1.9.10-1 is up to date -- skipping
warning: texinfo-6.8-2 is up to date -- skipping
warning: which-2.21-5 is up to date -- skipping
warning: jq-1.6-4 is up to date -- skipping
there is nothing to do
fatal: not in a git directory
sudo pacman -Ss pulseaudio | grep installed
extra/pipewire-alsa 1:0.3.48-1 [installed]
extra/pipewire-pulse 1:0.3.48-1 [installed]
extra/plasma-pa 5.24.3-1 (plasma) [installed]
extra/pulseaudio-qt 1.3-1 [installed]
community/pulseaudio-equalizer-ladspa 3.0.2-5 [installed]
multilib/lib32-libpulse 15.0-2 [installed]
sudo pacman -Ss pipewire | grep installed
extra/gst-plugin-pipewire 1:0.3.48-1 [installed]
extra/pipewire 1:0.3.48-1 [installed]
extra/pipewire-alsa 1:0.3.48-1 [installed]
extra/pipewire-jack 1:0.3.48-1 [installed]
extra/pipewire-media-session 1:0.4.1-1 [installed]
extra/pipewire-pulse 1:0.3.48-1 [installed]
extra/pipewire-v4l2 1:0.3.48-1 [installed]
extra/pipewire-zeroconf 1:0.3.48-1 [installed]
multilib/lib32-pipewire 1:0.3.48-1 [installed]
multilib/lib32-pipewire-jack 1:0.3.48-1 [installed]
chaotic-aur/jamesdsp 2.3-2 [installed]
chaotic-aur/pipewire-support 1-10 [installed]