easyeffects icon indicating copy to clipboard operation
easyeffects copied to clipboard

EasyEffects doesn't detect new route (always 'Built-in Analog Stereo') when plugging in headphones

Open ahydronous opened this issue 8 months ago • 6 comments

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

ahydronous avatar Apr 11 '25 11:04 ahydronous

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.

wwmm avatar Apr 11 '25 14:04 wwmm

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.

Image

Image

ahydronous avatar Apr 13 '25 00:04 ahydronous

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.

wwmm avatar Apr 13 '25 02:04 wwmm

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) ...

violetmage avatar Apr 13 '25 22:04 violetmage

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.

wwmm avatar Apr 13 '25 22:04 wwmm

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.

ahydronous avatar Apr 16 '25 14:04 ahydronous