EasyEffects doesn't detect new route (always 'Built-in Analog Stereo') when plugging in headphones
EasyEffects Version
7.2.3
What package are you using?
NixOS
Distribution
NixOS 24.11
Describe the bug
Same issue as https://github.com/wwmm/easyeffects/issues/1051.
When plugging in or removing the headphone jack, EasyEffects does not offer the new route. It will only show Built-in Audio Analog Stereo as an option. This despite it detecting the new route in the logs.
easyeffects-DEBUG: 13:28:01.792: application.cpp:151 output autoloading: device "alsa_card.pci-0000_00_1f.3" has changed its output route to "analog-output-headphones"
(easyeffects:18078):
easyeffects-DEBUG: 13:28:01.793: application.cpp:158 output autoloading: target node "alsa_output.pci-0000_00_1f.3.analog-stereo" matches the output device name
Expected Behavior
The new headphone route is offered as an option, so a preset can be triggered on it.
Debug Log
Debug Log
[ahy@7300:~]$ G_MESSAGES_DEBUG=easyeffects easyeffects
(process:18078): easyeffects-DEBUG: 13:27:51.076: easyeffects.cpp:46 easyeffects version: 7.2.3
(process:18078): easyeffects-DEBUG: 13:27:51.081: easyeffects.cpp:56 locale directory: /nix/store/x8kd3h11vwmya4jkx4kg7k1lg1y38p0p-easyeffects-7.2.3/share/locale
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.087: presets_manager.cpp:238user presets directory already exists: /home/ahy/.config/easyeffects/input
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.087: presets_manager.cpp:238user presets directory already exists: /home/ahy/.config/easyeffects/output
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.087: presets_manager.cpp:238user presets directory already exists: /home/ahy/.config/easyeffects/irs
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.087: presets_manager.cpp:238user presets directory already exists: /home/ahy/.config/easyeffects/rnnoise
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.087: presets_manager.cpp:238user presets directory already exists: /home/ahy/.config/easyeffects/autoload/input
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.087: presets_manager.cpp:238user presets directory already exists: /home/ahy/.config/easyeffects/autoload/output
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.345: pipe_manager.cpp:1564 compiled with PipeWire: 1.2.7
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.345: pipe_manager.cpp:1565 linked to PipeWire: 1.2.7
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1535 core version: 1.2.7
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1536 core name: pipewire-0
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1447 found metadata: settings
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1447 found metadata: schema-sm-settings
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1447 found metadata: persistent-sm-settings
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1447 found metadata: sm-settings
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1447 found metadata: sm-objects
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1447 found metadata: default
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1447 found metadata: filters
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1447 found metadata: route-settings
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1301 Audio/Sink 50 alsa_output.pci-0000_00_1f.3.analog-stereo with serial 50 has been added
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1301 Audio/Source 51 alsa_input.pci-0000_00_1f.3.analog-stereo with serial 51 has been added
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1301 Stream/Output/Audio 68 spotify with serial 2158 has been added
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1341 spotify port 140 is connected to alsa_output.pci-0000_00_1f.3.analog-stereo port 58
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1341 spotify port 139 is connected to alsa_output.pci-0000_00_1f.3.analog-stereo port 60
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1301 Audio/Sink 117 easyeffects_sink with serial 2418 has been added
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.359: pipe_manager.cpp:1301 Audio/Source/Virtual 93 easyeffects_source with serial 2419 has been added
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.360: pipe_manager.cpp:1037 new metadata property: 0, default.configured.audio.sink, Spa:String:JSON, {"name":"alsa_output.pci-0000_00_1f.3.hdmi-stereo"}
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.360: pipe_manager.cpp:1037 new metadata property: 0, default.configured.audio.source, Spa:String:JSON, { "name": "alsa_input.pci-0000_00_1f.3.analog-stereo" }
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.360: pipe_manager.cpp:1037 new metadata property: 0, default.audio.sink, Spa:String:JSON, {"name":"alsa_output.pci-0000_00_1f.3.analog-stereo"}
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.360: pipe_manager.cpp:1037 new metadata property: 0, default.audio.source, Spa:String:JSON, {"name":"alsa_input.pci-0000_00_1f.3.analog-stereo"}
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.360: pipe_manager.cpp:1037 new metadata property: 0, default.video.source, Spa:String:JSON, {"name":"v4l2_input.pci-0000_00_14.0-usb-0_6_1.0"}
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.360: pipe_manager.cpp:1037 new metadata property: 68, target.node, Spa:Id, 79
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.360: pipe_manager.cpp:1037 new metadata property: 68, target.object, Spa:Id, 1077
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.360: pipe_manager.cpp:1663 easyeffects_sink node successfully retrieved with id 117 and serial 2418
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.361: pipe_manager.cpp:1668 easyeffects_source node successfully retrieved with id 93 and serial 2419
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.385: lv2_wrapper.cpp:124 http://lsp-plug.in/plugins/lv2/comp_delay_x2_stereo requires feature: http://lv2plug.in/ns/ext/urid#map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.388: plugin_base.cpp:406 soe: output_level successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.391: plugin_base.cpp:406 soe: spectrum successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.484: lv2_wrapper.cpp:124 http://lsp-plug.in/plugins/lv2/para_equalizer_x32_lr requires feature: http://lv2plug.in/ns/ext/urid#map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.531: lv2_wrapper.cpp:124 http://lsp-plug.in/plugins/lv2/sc_limiter_stereo requires feature: http://lv2plug.in/ns/ext/urid#map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.534: plugin_base.cpp:406 soe: equalizer successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.534: pipe_manager.cpp:1341 easyeffects_sink port 79 is connected to ee_soe_equalizer port 129
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.536: pipe_manager.cpp:1341 easyeffects_sink port 83 is connected to ee_soe_equalizer port 85
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.540: plugin_base.cpp:406 soe: limiter successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.541: pipe_manager.cpp:1341 ee_soe_equalizer port 78 is connected to ee_soe_limiter port 122
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.542: pipe_manager.cpp:1341 ee_soe_equalizer port 126 is connected to ee_soe_limiter port 74
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.544: pipe_manager.cpp:1344 No node with id 90 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.545: pipe_manager.cpp:1344 No node with id 90 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.546: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.548: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.549: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.550: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.569: lv2_wrapper.cpp:124 http://lsp-plug.in/plugins/lv2/comp_delay_x2_stereo requires feature: http://lv2plug.in/ns/ext/urid#map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.572: plugin_base.cpp:406 sie: output_level successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.574: plugin_base.cpp:406 sie: spectrum successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.575: pipe_manager.cpp:1344 No node with id 70 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.575: pipe_manager.cpp:1344 No node with id 70 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.576: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.577: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.578: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.579: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.579: stream_output_effects.cpp:302 disconnecting the equalizer filter from PipeWire
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.581: pipe_manager.cpp:265 133 ee_soe_equalizer has been removed
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.581: stream_output_effects.cpp:302 disconnecting the limiter filter from PipeWire
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.583: pipe_manager.cpp:265 81 ee_soe_limiter has been removed
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.589: plugin_base.cpp:406 soe: equalizer successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.589: pipe_manager.cpp:1341 easyeffects_sink port 79 is connected to ee_soe_equalizer port 146
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.590: pipe_manager.cpp:1341 easyeffects_sink port 83 is connected to ee_soe_equalizer port 143
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.592: plugin_base.cpp:406 soe: limiter successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.593: pipe_manager.cpp:1341 ee_soe_equalizer port 88 is connected to ee_soe_limiter port 142
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.594: pipe_manager.cpp:1341 ee_soe_equalizer port 81 is connected to ee_soe_limiter port 102
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.595: pipe_manager.cpp:1344 No node with id 90 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.596: pipe_manager.cpp:1344 No node with id 90 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.597: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.599: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.600: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.601: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.606: pipe_manager.cpp:1344 No node with id 70 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.607: pipe_manager.cpp:1344 No node with id 70 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.608: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.608: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.609: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.610: pipe_manager.cpp:1344 No node with id 72 in our node_map
easyeffects-INFO: 13:27:51.610: application.cpp:77 disabling global bypass
(easyeffects:18078): easyeffects-DEBUG: 13:27:51.621: application_ui.cpp:109 Icon Theme Adwaita detected
MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:763: FINISHME: support YUV colorspace with DRM format modifiers
MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:794: FINISHME: support more multi-planar formats with DRM modifiers
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.284: stream_output_effects.cpp:302 disconnecting the equalizer filter from PipeWire
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.286: pipe_manager.cpp:265 147 ee_soe_equalizer has been removed
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.286: stream_output_effects.cpp:302 disconnecting the limiter filter from PipeWire
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.288: pipe_manager.cpp:265 106 ee_soe_limiter has been removed
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.294: plugin_base.cpp:406 soe: equalizer successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.294: pipe_manager.cpp:1341 easyeffects_sink port 79 is connected to ee_soe_equalizer port 137
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.295: pipe_manager.cpp:1341 easyeffects_sink port 83 is connected to ee_soe_equalizer port 129
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.298: plugin_base.cpp:406 soe: limiter successfully connected to PipeWire graph
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.299: pipe_manager.cpp:1341 ee_soe_equalizer port 85 is connected to ee_soe_limiter port 78
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.300: pipe_manager.cpp:1341 ee_soe_equalizer port 106 is connected to ee_soe_limiter port 74
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.301: pipe_manager.cpp:1344 No node with id 90 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.303: pipe_manager.cpp:1344 No node with id 90 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.304: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.305: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.305: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.306: pipe_manager.cpp:1344 No node with id 135 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.311: pipe_manager.cpp:1344 No node with id 70 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.312: pipe_manager.cpp:1344 No node with id 70 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.312: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.313: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.313: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.314: pipe_manager.cpp:1344 No node with id 72 in our node_map
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.315: pipe_manager.cpp:1037 new metadata property: 68, target.node, Spa:Id, 117
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.315: application.cpp:105 new default output device: alsa_output.pci-0000_00_1f.3.analog-stereo
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.315: pipe_manager.cpp:1037 new metadata property: 68, target.object, Spa:Id, 2418
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.315: application.cpp:113 new default input device: alsa_input.pci-0000_00_1f.3.analog-stereo
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.315: application.cpp:125 input autoloading: device "alsa_card.pci-0000_00_1f.3" has changed its input route to "analog-input-internal-mic"
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.315: application.cpp:138 input autoloading: skip "alsa_output.pci-0000_00_1f.3.analog-stereo" candidate since it does not match "alsa_input.pci-0000_00_1f.3.analog-stereo" input device
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.315: application.cpp:132 input autoloading: target node "alsa_input.pci-0000_00_1f.3.analog-stereo" matches the input device name
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.316: application.cpp:151 output autoloading: device "alsa_card.pci-0000_00_1f.3" has changed its output route to "analog-output-speaker"
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.316: application.cpp:158 output autoloading: target node "alsa_output.pci-0000_00_1f.3.analog-stereo" matches the output device name
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.323: pipe_manager.cpp:1341 spotify port 140 is connected to easyeffects_sink port 101
(easyeffects:18078): easyeffects-DEBUG: 13:27:52.323: pipe_manager.cpp:1341 spotify port 139 is connected to easyeffects_sink port 76
(easyeffects:18078): easyeffects-DEBUG: 13:28:01.792: application.cpp:151 output autoloading: device "alsa_card.pci-0000_00_1f.3" has changed its output route to "analog-output-headphones"
(easyeffects:18078): easyeffects-DEBUG: 13:28:01.793: application.cpp:158 output autoloading: target node "alsa_output.pci-0000_00_1f.3.analog-stereo" matches the output device name
(easyeffects:18078): easyeffects-DEBUG: 13:28:02.146: stream_input_effects.cpp:189 No app linked to our device wants to play. Unlinking our filters.
Additional Information
No response
It seems to me that your hardware is one of those for which the driver keeps the device name and just changes the routing when a headphone is plugged. Preset autoloading will still work in this case. You just have to create the profile while your headphone is plugged and you will see that the Profile field in EasyEffects autoloading profiles list will change to analog-output-headphones even if the device name is still Built-in Analog Stereo.
Ah yes, you are right (see attached screenshot).
It could help for clarity of whats going to add another box named 'Profile', inbetween 'Device' and 'Preset'. Its very easy to miss otherwise haha.
It could help for clarity of whats going to add another box named 'Profile', inbetween 'Device' and 'Preset'. Its very easy to miss otherwise haha.
It is indeed subtle. In the Qt branch Profile was renamed to Hardware Profile and Preset to Local Preset. This should help a little to call the user attention. But in general it is hard to handle this in a more informative way because it is the kind of thing that only PipeWire and the drivers know when it is going to happen. There is no way for us to know when a hardware node will be renamed or not because a headphone was plugged.
Perhaps the device entries displayed in the dropdown could have their current profile added at the end in parenthesis.
Edit - example:
Built-in Analog Stereo (Line out) Built-in Analog Stereo (Headphones) ...
Perhaps the device entries displayed in the dropdown could have their current profile added at the end in parenthesis.
It should be possible. But I already see some kind of special handling is needed for the cases where the device name is really big. The text with the routing information would be ellipsized in this case. I will add a note about this to the Qt todo list.
You could use fuzzy text matching to check for the text "headphone" in both the device and profile property and use a headphone icon in place of the generic speaker icon. That would communicate a change quite clearly.
I'm not sure what a USB soundcard / DAC gets named as in Pipewire but you could do the same for that except load a USB plug icon.
Then it doesn't really matter if you have to truncate the device or profile name because the icon already communicates the differentiation.