Skip to content

[Bug]: System-wide EQ not applied at startup #31

Closed

Description

@Athou

Before opening

  • I searched existing issues for a similar report.
  • This is not a security vulnerability.

Affected area

Other

Mini EQ version

0.8.3

Install method

Flathub

Linux distribution and version

Bazzite 44

Desktop/session

GNOME Wayland

PipeWire and WirePlumber versions

Compiled with libpipewire 1.6.4, compiled with libwireplumber 0.5.12

Steps to reproduce

  1. Make MiniEQ run at startup
Image
  1. Reboot
  2. System-Wide EQ is not enabled
Image

Here's the startup configuration

Image

Expected behavior

System-Wide EQ is enabled at startup

Actual behavior

System-Wide EQ is not enabled at startup

Logs or terminal output

Not sure which logs would be helpful, please let me know.

Thanks for MiniEQ, it's really nice.

Activity

  1. bhack commented on May 23, 2026

    @bhack
    Owner

    Thanks for the report. I prepared a Flathub test build with a fix for the login/startup race where Mini EQ could start before PipeWire/WirePlumber had made the requested output sink available, then exit before enabling system-wide EQ.

    You do not need to uninstall 0.8.3. This installs the Flathub test branch, so it can be tested separately from the stable branch:

    flatpak install --user https://dl.flathub.org/build-repo/287237/io.github.bhack.mini-eq.flatpakref
    flatpak run --branch=test io.github.bhack.mini-eq

    In the test build, please enable:

    • Keep Running in Background
    • Start at Login
    • Enable System-wide EQ at Login

    If those were already enabled in 0.8.3, please toggle Start at Login off and back on once from the test build, so the login autostart entry is refreshed for the test branch. Then reboot and check whether system-wide EQ comes back enabled automatically.

    The draft Flathub PR/test build is here:
    flathub/io.github.bhack.mini-eq#27

    After testing, the temporary test branch can be removed with:

    flatpak uninstall --user io.github.bhack.mini-eq//test

    If this fixes the issue for you, I will include it in the next release and update the stable Flathub package.

  2. Athou commented on May 23, 2026

    @Athou
    Author

    Hi @bhack, thanks a lot for the quick response.

    I disabled "Start at Login" from the 0.8.3 version and enabled it in the test version and rebooted 6 times. System-wide EQ was enabled 2 out of those 6 times.

    I also notice that the command line added for the startup configuration for the test version does not include --branch=test, I'm not sure if it's an issue.

    Image
  3. Athou commented on May 23, 2026

    @Athou
    Author

    I manually modified ~/.config/autostart/io.github.bhack.mini-eq.desktop to use the test version and I removed the background flag so that the test version is immediately visible, but the System-wide EQ is still unchecked :(

    Exec=flatpak run --branch=test --command=mini-eq io.github.bhack.mini-eq --auto-route

    Image
  4. Athou commented on May 23, 2026

    @Athou
    Author

    When I disable autostart and start MiniEQ manually with flatpak run --branch=test --command=mini-eq io.github.bhack.mini-eq --auto-route it works so I think you're right it seems to be a race condition.

  5. bhack commented on May 23, 2026

    @bhack
    Owner

    The result you saw was most likely still from the earlier test build.

    I pushed an amended fix and Flathub has now built a new test build: 287257.

    Could you please install this one and retry the reboot test?

    flatpak install --user -y https://dl.flathub.org/build-repo/287257/io.github.bhack.mini-eq.flatpakref

    You do not need to uninstall 0.8.3; this installs/updates only the Flathub test branch, separate from the stable branch.

    You can keep the autostart command you tested manually:

    Exec=flatpak run --branch=test --command=mini-eq io.github.bhack.mini-eq --auto-route

    I also tested this new build locally in a Fedora GNOME VM with an artificial 15-second WirePlumber startup delay. With build 287257, Mini EQ started at login and the System-wide EQ switch came up enabled after reboot.

    If it still fails on your machine with 287257, then the remaining race is probably later in the final startup routing attempt, and I’ll add a second bounded retry around that path.

  6. Athou commented on May 23, 2026

    @Athou
    Author

    I installed the new build but the switch is still disabled after a reboot :(
    Are there any log files I could provide that would be helpful?

  7. bhack commented on May 23, 2026

    @bhack
    Owner

    That confirms the new build still misses one startup path on your machine.

    Could you please capture these right after a reboot where the switch is still disabled, before starting/toggling Mini EQ manually?

    flatpak info io.github.bhack.mini-eq//test
    cat ~/.config/autostart/io.github.bhack.mini-eq.desktop
    gdbus call --session \
      --dest io.github.bhack.mini-eq \
      --object-path /io/github/bhack/mini_eq/Control \
      --method io.github.bhack.MiniEq.Control.GetState
    journalctl --user -b --no-pager | grep -iE "mini-eq|pipewire|wireplumber|filter-chain|xdg-desktop-portal|background"
    wpctl status
    pw-link -l

    The most useful part is the journal from the same boot where it failed.

    This result also points to the remaining race being later than the first fix: Mini EQ can start, but the final startup --auto-route attempt may run before PipeWire/WirePlumber is ready to move streams. I’ll prepare a new build that retries that final startup routing attempt for a short bounded window as well.

  8. Athou commented on May 23, 2026

    @Athou
    Author

    Sure!

    $ flatpak info io.github.bhack.mini-eq//test
    
    Mini EQ - Tune your sound output
    
                ID: io.github.bhack.mini-eq
               Ref: app/io.github.bhack.mini-eq/x86_64/test
              Arch: x86_64
            Branch: test
           Version: 0.8.3
           License: GPL-3.0-or-later
            Origin: mini-eq-origin
        Collection: org.flathub.Test.Build287257
      Installation: user
    Installed Size: 71,0 MB
           Runtime: org.gnome.Platform/x86_64/50
               Sdk: org.gnome.Sdk/x86_64/50
    
            Commit: b19277fdc0e7491277fc43e5c8757b2ca3fd3466e2e2ef697b31127ca6a92d3a
           Subject: Test Mini EQ startup auto-route fix (6ea2df19752d)
              Date: 2026-05-23 15:39:18 +0000
    
    $ cat ~/.config/autostart/io.github.bhack.mini-eq.desktop
    [Desktop Entry]
    Type=Application
    Name=Mini EQ
    X-XDP-Autostart=io.github.bhack.mini-eq
    Exec=flatpak run --branch=test --command=mini-eq io.github.bhack.mini-eq --auto-route
    X-Flatpak=io.github.bhack.mini-eq
    
    $ gdbus call --session \
      --dest io.github.bhack.mini-eq \
      --object-path /io/github/bhack/mini_eq/Control \
      --method io.github.bhack.MiniEq.Control.GetState
    ({'api_version': <uint32 1>, 'app_version': <'0.8.3'>, 'capabilities': <['present-window', 'quit', 'background-mode', 'start-at-login', 'start-active-at-login', 'set-routing', 'set-preset', 'output-presets', 'analyzer-levels', 'startup-notification']>, 'running': <true>, 'eq_enabled': <true>, 'routed': <false>, 'preset_name': <'Headset Profile'>, 'curve_name': <'Headset Profile'>, 'curve_status': <'preset'>, 'curve_label': <'Headset Profile'>, 'output_sink': <'alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink'>, 'output_preset_name': <''>, 'output_preset_status': <'none'>, 'output_preset_label': <''>, 'output_preset_auto_applied': <false>, 'analyzer_enabled': <true>, 'background_mode': <true>, 'start_at_login': <true>, 'start_active_at_login': <true>, 'window_visible': <true>},)
    
    $ journalctl --user -b --no-pager | grep -iE "mini-eq|pipewire|wireplumber|filter-chain|xdg-desktop-portal|background"
    mai 23 19:29:29 xxx systemd[2044]: Listening on pipewire-pulse.socket - PipeWire PulseAudio.
    mai 23 19:29:29 xxx systemd[2044]: Listening on pipewire.socket - PipeWire Multimedia System Sockets.
    mai 23 19:29:30 xxx systemd[2044]: Created slice background.slice - User Background Tasks Slice.
    mai 23 19:29:30 xxx systemd[2044]: Started pipewire.service - PipeWire Multimedia Service.
    mai 23 19:29:30 xxx systemd[2044]: Started wireplumber.service - Multimedia Service Session Manager.
    mai 23 19:29:30 xxx wireplumber[2213]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
    mai 23 19:29:30 xxx wireplumber[2213]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
    mai 23 19:29:30 xxx wireplumber[2213]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
    mai 23 19:29:30 xxx wireplumber[2213]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
    mai 23 19:29:30 xxx wireplumber[2213]: [0:00:11.321033220] [2213]  INFO Camera camera_manager.cpp:340 libcamera v0.7.1
    mai 23 19:29:31 xxx systemd[2044]: Started pipewire-pulse.service - PipeWire PulseAudio.
    mai 23 19:29:31 xxx systemd[2044]: Starting xdg-desktop-portal.service - Portal service...
    mai 23 19:29:31 xxx systemd[2044]: Starting xdg-desktop-portal-gnome.service - Portal service (GNOME implementation)...
    mai 23 19:29:32 xxx wireplumber[2213]: [0:00:13.307613061] [2248]  INFO Camera camera_manager.cpp:223 Adding camera '\_SB_.PC00.XHCI.RHUB.HS11-11:1.0-046d:08e4' for pipeline handler uvcvideo
    mai 23 19:29:32 xxx systemd[2044]: Started xdg-desktop-portal-gnome.service - Portal service (GNOME implementation).
    mai 23 19:29:32 xxx systemd[2044]: Starting xdg-desktop-portal-gtk.service - Portal service (GTK/GNOME implementation)...
    mai 23 19:29:32 xxx systemd[2044]: Started xdg-desktop-portal-gtk.service - Portal service (GTK/GNOME implementation).
    mai 23 19:29:32 xxx systemd[2044]: Started xdg-desktop-portal.service - Portal service.
    mai 23 19:29:33 xxx /usr/libexec/xdg-desktop-portal[3522]: Realtime error: Could not get pidns for pid 2: PIDFD_GET_PID_NAMESPACE ioctl failed: Inappropriate ioctl for device
    mai 23 19:29:33 xxx io.github.bhack.mini-eq.desktop[3484]: filter-chain PipeWire EQ ready: mini_eq_sink -> alsa_output.pci-0000_03_00.1.hdmi-stereo-extra2
    mai 23 19:29:33 xxx io.github.bhack.mini-eq.desktop[3484]: filter-chain PipeWire EQ ready: mini_eq_sink -> alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink
    mai 23 19:29:33 xxx io.github.bhack.mini-eq.desktop[3484]: filter-chain PipeWire EQ ready: mini_eq_sink -> alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink
    mai 23 19:29:34 xxx wireplumber[2213]: wp-proc-utils: failed to get status for PID 221: Failed to open file “/proc/221/status”: No such file or directory
    mai 23 19:29:34 xxx wireplumber[2213]: GLib: GError set over the top of a previous GError or uninitialized memory.
    mai 23 19:29:34 xxx wireplumber[2213]: wp-proc-utils: failed to get cgroup for PID 221: Failed to open file “/proc/221/status”: No such file or directory
    mai 23 19:29:34 xxx wireplumber[2213]: wp-proc-utils: failed to get cmdline for PID 221: No such file or directory
    mai 23 19:29:36 xxx io.github.bhack.mini-eq.desktop[3484]: filter-chain PipeWire EQ ready: mini_eq_sink -> alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink
    
    $ wpctl status
    PipeWire 'pipewire-0' [1.6.4, athou@xxx, cookie:3184081785]
     └─ Clients:
            32. uresourced                          [1.6.4, athou@xxx, pid:2181]
            33. WirePlumber                         [1.6.4, athou@xxx, pid:2213]
            41. WirePlumber [export]                [1.6.4, athou@xxx, pid:2213]
            50. pipewire                            [1.6.4, athou@xxx, pid:2635]
            51. GNOME Volume Control Media Keys     [1.6.4, athou@xxx, pid:2388]
            53. gnome-shell                         [1.6.4, athou@xxx, pid:2211]
            54. GNOME Shell Volume Control          [1.6.4, athou@xxx, pid:2211]
            55. xdg-desktop-portal                  [1.6.4, athou@xxx, pid:3522]
            56. Mini EQ                             [1.6.1, athou@xxx, pid:2]
            70. python3.13                          [1.6.1, athou@xxx, pid:2]
            78. python3.13                          [1.6.1, athou@xxx, pid:2]
           109. WEBRTC VoiceEngine                  [1.6.4, athou@xxx, pid:142]
           110. WEBRTC VoiceEngine                  [1.6.4, athou@xxx, pid:142]
           111. Chromium input                      [1.6.4, athou@xxx, pid:221]
           120. wpctl                               [1.6.4, athou@xxx, pid:8781]
           128. Steam Voice Settings                [1.6.4, athou@xxx, pid:3859]
           129. Steam                               [1.6.4, athou@xxx, pid:3859]
    
    Audio
     ├─ Devices:
     │      42. Navi 48 HDMI/DP Audio Controller    [alsa]
     │      43. Built-in Audio                      [alsa]
     │      57. USB Audio                           [alsa]
     │      58. C505e HD Webcam                     [alsa]
     │      59. EPOS H3PRO Dongle                   [alsa]
     │  
     ├─ Sinks:
     │      52. USB Audio S/PDIF Output             [vol: 0.40]
     │      64. Navi 48 HDMI/DP Audio Controller Digital Stereo (HDMI 3) [vol: 0.40]
     │  *   65. USB Audio Speakers                  [vol: 0.40]
     │      66. USB Audio Front Headphones          [vol: 1.00]
     │      71. EPOS H3PRO Dongle Analog Stereo     [vol: 0.68]
     │  
     ├─ Sources:
     │      67. USB Audio Line Input                [vol: 1.00]
     │      68. USB Audio Microphone                [vol: 1.00]
     │      69. C505e HD Webcam Mono                [vol: 1.00]
     │  *   72. EPOS H3PRO Dongle Mono              [vol: 1.00]
     │  
     ├─ Filters:
     │    - filter-chain-2-20                                           
     │     105. mini_eq_sink_output                                          [Stream/Output/Audio]
     │     108. mini_eq_sink                                                 [Audio/Sink]
     │  
     └─ Streams:
           106. Mini EQ                                                     
                 77. input_FR        < USB Audio:monitor_FR	[active]
                103. monitor_FR     
                104. monitor_FL     
                107. input_FL        < USB Audio:monitor_FL	[active]
    
    Video
     ├─ Devices:
     │      47. C505e HD Webcam                     [v4l2]
     │      48. C505e HD Webcam                     [v4l2]
     │      49. OBS Virtual Camera                  [v4l2]
     │      63. C505e HD Webcam                     [libcamera]
     │  
     ├─ Sinks:
     │  
     ├─ Sources:
     │  *  126. C505e HD Webcam (V4L2)             
     │  
     ├─ Filters:
     │  
     └─ Streams:
    
    Settings
     └─ Default Configured Devices:
             0. Audio/Sink    alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink
    
    $ pw-link -l
    alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink:monitor_FL
      |-> mini-eq-analyzer:input_FL
    alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink:monitor_FR
      |-> mini-eq-analyzer:input_FR
    alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink:playback_FL
      |<- mini_eq_sink_output:output_FL
    alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink:playback_FR
      |<- mini_eq_sink_output:output_FR
    mini-eq-analyzer:input_FL
      |<- alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink:monitor_FL
    mini-eq-analyzer:input_FR
      |<- alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink:monitor_FR
    mini_eq_sink_output:output_FL
      |-> alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink:playback_FL
    mini_eq_sink_output:output_FR
      |-> alsa_output.usb-Generic_USB_Audio-00.HiFi__Speaker__sink:playback_FR
    
  9. bhack commented on May 23, 2026

    @bhack
    Owner

    This confirms the remaining startup path in build 287257: Mini EQ is running and the filter-chain becomes ready, but the final startup --auto-route attempt does not retry, so the state stays routed: false.

    I prepared a newer test build with the second bounded retry around that final startup routing step:

    flatpak install --user -y https://dl.flathub.org/build-repo/287264/io.github.bhack.mini-eq.flatpakref

    Please retry with build 287264. You do not need to uninstall 0.8.3; this updates only the test branch.

    Your autostart command is fine for this test:

    Exec=flatpak run --branch=test --command=mini-eq io.github.bhack.mini-eq --auto-route

    I also reran this locally in the Fedora GNOME VM with an explicit 15-second WirePlumber startup delay. With build 287264, after reboot Mini EQ came up with eq_enabled: true and routed: true, and a playback stream was linked through mini_eq_sink.

  10. Athou commented on May 23, 2026

    @Athou
    Author

    It works! I rebooted 3 times and for all 3 reboots the app starts, for a brief moment the switch is off then it is toggled on automatically. Thank you 😄

  11. bhack commented on May 23, 2026

    @bhack
    Owner

    Great, that confirms build 287264 covers the startup race on your system as well.

    I’ll include this fix in the next release and then update the stable Flathub package.

  12. linked a pull request that will close this issueFix startup auto-route race #32on May 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions