When Pop! OS fails to output audio to the Line Out jack while other devices are connected, the issue is usually caused by PipeWire’s automatic device switching or a stale sink configuration. You can resolve this by manually setting the Line Out as the default profile using pactl commands, ensuring the correct port is active in pw-cli, and verifying that no Bluetooth or HDMI sinks are overriding your analog output preference.
Understanding Pop! OS Audio Architecture
Pop! OS utilizes PipeWire as its default audio server, replacing the older PulseAudio system. This change was implemented to provide better latency, lower resource usage, and improved compatibility with both professional audio hardware and consumer devices. However, PipeWire’s behavior regarding device selection can differ from what users expect when multiple audio endpoints are present. The system attempts to route audio to the most recently connected or "best" available device, which often leads to the Line Out being ignored if a USB headset, HDMI monitor, or Bluetooth speaker is detected.
Unlike previous versions of Ubuntu-based distributions, editing legacy configuration files like /etc/pulse/default.pa is not only ineffective but also unsupported on modern Pop! OS releases. These files are either ignored or overwritten by the PipeWire service manager. Therefore, troubleshooting must focus on runtime commands and user-specific configuration directories rather than system-wide static files. Understanding this architectural shift is crucial for applying the correct fixes without breaking your audio subsystem.
Identifying the Active Sink and Port
The first step in diagnosing the issue is to identify which audio sink (output device) PipeWire is currently using and whether the specific port for your Line Out is enabled. Open a terminal and run pw-cli list-objects. This command dumps the current state of all PipeWire objects, including nodes, ports, and streams. Look for entries related to your sound card, typically identified by names containing alsa_card.pci or similar identifiers corresponding to your motherboard’s audio chipset.
Within the output, locate the node representing your analog output. Check the properties for port.name and port.direction. If you see multiple ports listed, such as analog-output-lineout and analog-output-headphones, ensure that the Line Out port is marked as active. Sometimes, PipeWire may switch to a virtual port or a different physical connector if it detects impedance changes or plugin events. By examining the raw object list, you can confirm whether the Line Out is even visible to the server or if it has been disabled due to a conflict.
Manually Setting the Default Profile
If the Line Out is visible but not receiving audio, you likely need to force PipeWire to select it as the primary sink. Use the pactl utility, which remains compatible with PipeWire for basic control tasks. First, list all available sinks by running pactl list short sinks. Identify the index number associated with your Line Out device. It is often labeled with terms like analog-stereo-output or includes the word lineout in its description.
Once you have the index, set it as the default sink using the command pactl set-default-sink [INDEX]. Replace [INDEX] with the actual number found in the previous step. After executing this, test the audio output. If sound returns, the issue was simply a misconfigured default target. To make this persistent across reboots, you may need to create a simple script or use the GNOME Settings interface under Sound > Output, selecting the Line Out explicitly. Note that some desktop environments may override manual sink settings upon detecting new hardware, so consistency in connection order can help.
Resolving Conflicts with Other Devices
When multiple devices are connected, PipeWire’s policy engine might prioritize Bluetooth or HDMI outputs over analog jacks. To mitigate this, you can adjust the priority of your sinks. Run pw-cli info [NODE_ID] to get detailed information about your audio nodes. While direct priority manipulation via CLI is limited, you can influence behavior by disconnecting unused devices during testing. For instance, if a Bluetooth headset is paired but not in use, disconnect it temporarily to see if Line Out resumes functionality.
Additionally, check for any background services that might be hijacking the audio stream. Applications like Spotify, VLC, or system notification sounds sometimes lock onto a specific sink. Restarting the PipeWire session can clear these locks. Execute systemctl --user restart wireplumber pipewire pipewire-pulse to reload the audio services. This action forces PipeWire to re-evaluate all connected devices and reassign sinks based on current availability. If the problem persists after a reboot, consider checking for firmware updates for your motherboard’s audio codec, as outdated drivers can cause incorrect port detection in Linux kernels.
Frequently Asked Questions
Why does my Line Out work when I unplug other devices?
This confirms that PipeWire’s auto-switching logic is prioritizing other interfaces like HDMI or Bluetooth. By manually setting the default sink or disconnecting unused devices, you prevent the system from routing audio away from the analog jack. Persistent issues often require adjusting the desktop environment’s sound preferences to lock the Line Out as the preferred output.
Is it safe to edit /etc/pulse/default.pa on Pop! OS?
No, this file is largely irrelevant on modern Pop! OS systems that use PipeWire. Editing it will not affect the audio routing because PipeWire ignores PulseAudio legacy configurations. Instead, rely on runtime commands like pactl or pw-cli to manage audio states effectively.
How do I find the correct sink index for pactl commands?
Run pactl list short sinks in the terminal. The output lists all available audio outputs with their index numbers on the far left. Identify the line corresponding to your Line Out device and use that number in subsequent pactl set-default-sink commands.
What should I do if pw-cli shows no Line Out port?
If the port is missing, the kernel driver may not be exposing the hardware correctly. Try reloading the ALSA module with sudo alsa force-reload or updating your system kernel. Checking dmesg | grep snd can reveal errors during initialization that indicate why the port is not being detected.
Can WirePlumber be configured to always prefer Line Out?
While WirePlumber handles policy, direct configuration for strict port preference is complex. A simpler workaround is to use the GUI sound settings to set Line Out as default. If advanced control is needed, inspecting WirePlumber scripts in ~/.config/wireplumber/main.lua.d/ allows for custom rules, though this requires careful scripting to avoid breaking other audio features.