How to troubleshoot sound problems

Hank Lee, The Music and Audio SIG Version F40 Last review: 2025-05-30
This page covers some basic troubleshooting techniques to help narrow down the root cause of an issue. It also explains information that should be included when filing bugs related to sound. General sound problems - where the problem is observed across multiple applications - should usually be filed against the kernel, or PipeWire (see below for instructions on determining whether the problem is PipeWire-related). If the problem is observed only in a specific application, or only in applications which use a single multimedia library (such as SDL or OpenAL), the bug should be filed against that component.

Introduction

Sound problems in Fedora can arise from a variety of causes, ranging from misconfigured audio services to missing or outdated drivers. In most cases, these issues are related to the transition to PipeWire, Fedora’s default audio server since Fedora 34. While PipeWire aims to unify and improve audio handling across applications, its integration with legacy tools like PulseAudio and ALSA can sometimes lead to conflicts or device recognition problems.

Typical issues users may encounter:

  • No sound output or input

  • Only “Dummy Output” is available

  • Microphones not being detected

  • Audio devices missing after updates

  • Broken Bluetooth audio connections

This guide provides a step-by-step approach to diagnosing and resolving these sound issues. It covers both general troubleshooting and specific fixes for input-related problems, such as missing microphones or inactive input devices.

Diagnosing the Problem

  • Determining if the issue is with the kernel, PipeWire, or specific applications.

  • Collecting logs and system information.

Check which Kernel driver is in use by PCI devices

To display kernel drivers handling each device, use the lspci (List PCI) command with the option -k. Searching for known issues specific to driver’s name and your hardware model before reporting issues to Ask Fedora.

$ sudo lspci -k

New hardware drivers are updated continuously. If you see a device listed as unknown, query your PCI device ID database.

$ sudo lspci -Q

And update your local PCI ID database by running the command update-pciids.

$ sudo update-pciids

ALSA Firmware

The ALSA Firmware package contains firmware for various third-party sound cards.

See which firmware is in use by running the following command.

$ sudo dnf list alsa-firmware

The regular ALSA Firmware will appear <alsa-firmware.noarch>.

If the regular firmware is not on the output, install the alsa-firmware.

$ sudo dnf install alsa-firmware

If any other firmware is installed, put them on blocklist on configuration directory for modprobe.

/etc/modprobe.d/*.conf

Add the line on configuration file.

blacklist <the module to blocklist>

The dracut tool creates an initial image used by the kernel for preloading the block device modules. The option -f overwrite existing initramfs file.

$ sudo dracut -f

Reboot your computer for the change to take effect.

$ sudo reboot

Hardware information

It is always useful to include detailed information on your sound hardware when filing a sound-related bug. To produce this information, run this command:

$ alsa-info.sh --no-upload

It will generate a file containing detailed information about your sound hardware with the name /tmp/alsa-info.txt. Attach this file to your bug report.

Is it PipeWire?

PipeWire is a media sharing server, low-level multimedia framework that aims to;

  • improve handling of audio and video under Linux

  • work for all users at all levels

  • offer support for PulseAudio, JACK (JACK Audio Connection Kit), ALSA and GStreamer-based applications

Visual checks on ports

Qpwgraph is a graph manager dedicated to PipeWire.

Visual checks on ports using Qpwgraph will help discover all the routing between applications and devices and change the routing as you need. For example, if multiple applications and devices are connected and disconnected like below,

  • Firefox: video conference application using WebRTC protocol

  • VLC: media playback

  • OBS Studio: live stream and recording

  • USB soundcards or mixers: devices

it will be useful to learn how ports are connected to applications and devices graphically.

Ports are directional, they can be either:

  • Source ports (output). Located at the right-most edge of a node, they generate an audio/video/midi stream.

  • Sink ports (input). Located at the left-most edge of a node, they consume an audio/video/midi stream.

Ports also have different types:

  • Audio (default color: green)

  • Video (default color: blue)

  • PipeWire/JACK MIDI (default color: red)

  • ALSA MIDI (default color: purple)

Ports of the same type and opposite directions can be connected.

Check the upstream documentation for user guide Qpwgraph User Guide.

Resolving Audio Input Issues

Follow these steps to resolve most audio input issues.

Solution steps:

Make sure the necessary PipeWire components are installed and working correctly.

$ sudo dnf reinstall pipewire pipewire-pulseaudio pipewire-alsa wireplumber

Then reboot your system.

Step 2: Check Audio Service Status

Ensure that the PipeWire and WirePlumber services are active.

$ systemctl --user status pipewire
$ systemctl --user status wireplumber

If they are not running, enable them:

$ systemctl --user enable --now pipewire
$ systemctl --user enable --now wireplumber

Step 3: Verify User Permissions

Check that your user belongs to the correct groups:

groups

If audio is missing, add it:

$ sudo usermod -aG audio $USER

Step 4: Reset configuration files

If the audio configuration is corrupted, you can reset it by moving the old config folders:

$ mv ~/.config/pulse ~/.config/pulse_backup
$ mv ~/.config/pipewire ~/.config/pipewire_backup

Then reboot your system.

Step 5: Check hardware

If you’re using an external microphone, try reconnecting it or testing with a different device to rule out hardware issues.

Diagnosing and Fixing Bluetooth Audio Problems

Bluetooth audio issues can often be categorized into one of three categories: device detection, pairing, or missing audio profile. This section provides a structured guide for identifying the stage where the issue occurs and how to resolve it.

Category 1: Device Not Detected

Symptoms

  • Bluetooth audio device does not appear in bluetoothctl or GNOME Settings.

  • No MAC address shown even while device is in pairing mode.

This usually means the Linux Bluetooth stack never received an advertisement packet from the device. Common causes include:

  • The Bluetooth adapter (HCI device) is not fully initialized or supported.

  • The device uses a newer Bluetooth version or chipset that requires kernel or firmware support not yet available.

Check

Use btmon to monitor Bluetooth traffic and look for LE Advertising Report event. For example, a typical LE Advertising Report might look like this.

  $ sudo btmon
  Bluetooth monitor ver 5.81
  LE Advertising Report (0x02)
    Num reports: 1
    Event type: Connectable undirected - ADV_IND (0x00)
    Address type: Random (0x01)
    Address: C4:9D:61:BC:E7:09 (Static)
    Data length: 25
    16-bit Service UUIDs (partial): 1 entry
    Unknown (0xfd2a)
    Company: Sony Corporation (301)
    Data[17]: 13000130ed000000004001fffd1c91351c
    RSSI: -40 dBm (0xd8)

Run the bluetoothctl show command to display the current status and configuration of the Bluetooth adapter. It provides information such as adapter name, power status (on/off), discoverability (whether other devices can see it), and pairability.

  $ bluetoothctl show
  Controller A0:C5:89:3B:26:52 (public)
  Manufacturer: 0x0002 (2)
  Version: 0x08 (8)
  Name: hanku
  Alias: hanku
  Class: 0x007c010c (8126732)
  Powered: yes
  PowerState: on
  Discoverable: yes
  DiscoverableTimeout: 0x000000b4 (180)
  Pairable: yes

This is useful for checking if your Bluetooth adapter is properly initialized and ready for scanning, pairing, or connecting to devices.

Start the Bluetooth control tool to list Bluetooth devices and their statuses.

  $ bluetoothctl
  Agent registered
  [CHG] Device 40:19:20:19:69:9F RSSI: 0xffffffb9 (-71)
  [CHG] Device 28:6B:B4:40:2F:87 RSSI: 0xffffffbd (-67)
  [CHG] Device 28:6B:B4:4C:82:E5 RSSI: 0xffffffb9 (-71)
  [WF-C710N]> scan on
  SetDiscoveryFilter success
  Discovery started
  [DEL] Device C4:9D:61:BC:E7:09 LE_WF-C710N
  [NEW] Device C4:9D:61:BC:E7:09 LE_WF-C710N
  [WF-C710N]>

Here’s a summary of what’s happening in your bluetoothctl session:

  • Agent registered: A Bluetooth agent (for pairing/authentication) has been successfully registered.

  • [CHG] Device …​ RSSI: 0xffffffb9 (-71): RSSI (signal strength) for a known device has changed. The value 0xffffffb9 is just a signed hex representation of -71 dBm — a moderate signal.

  • [WF-C710N]> scan on → You’ve started device discovery (scanning). WF-C710N is the device name, typically set by the manufacturer.

  • SetDiscoveryFilter success → Any filters for discovery (For example, only LE devices) were successfully applied. LE means Low Energy, which is common for Bluetooth audio devices.

  • Discovery started → The adapter began scanning for nearby devices.

  • [DEL] Device C4:9D:61:BC:E7:09 LE_WF-C710N → The device was removed from the internal cache/list temporarily — possibly due to reappearance or profile update.

  • [NEW] Device C4:9D:61:BC:E7:09 LE_WF-C710N → The device reappeared during scanning and is now listed as newly discovered.

If your Bluetooth device with MAC ID does not appear in the list while other nearby devices are detected, this clearly indicates that your device is not broadcasting advertisement packets properly. This points to a low-level compatibility or hardware issue with your device itself, rather than a problem with the Bluetooth adapter.

If the device never appears in scans (no MAC shown), this is often not solvable by user-level configuration or re-pairing, and may indicate hardware or firmware-level incompatibility.

Recommendation

  • Test the device on other operating systems (Ubuntu LTS, Windows, macOS) to confirm functionality.

  • Search bug trackers (For example, kernel.org, Fedora Bugzilla, bluez mailing list) for known issues related to the specific device or chipset.

  • If no workaround exists, consider using another headset known to work well with Linux.

Comment

  • In community forums, it’s helpful to distinguish device detection issues from pairing or profile switching problems. Many Bluetooth devices work well under Linux. However, some may exhibit issues—such as failing to pair or not switching audio profiles—because of unsupported codecs. Understanding the differences between these issue types helps users know what to expect and makes it easier for contributors to improve guidance and support.

Category 2: Pairing Fails or Is Incomplete

Symptoms

  • Device is visible but cannot be paired or consistently fails to connect

  • Authorization timeouts or connection errors

Check

  • Use bluetoothctl for manual steps.

  $ bluetoothctl
  power on
  agent on
  default-agent
  scan on
  pair <MAC>
  trust <MAC>
  connect <MAC>

Fix

  • Remove device and retry pairing.

$ bluetoothctl remove <MAC>
  • Restart Bluetooth service.

$ sudo systemctl restart bluetooth

For some devices, make sure to hold the pairing button until rapid blinking starts.

Category 3: Missing or Failing Audio Profiles

Symptoms

  • Device connects but no sound is played.

  • Only HSP/HFP is available, A2DP is missing.

  • Microphone works but stereo audio output does not.

Check

  • Confirm PipeWire is used.

$ pactl info | grep Server

Example Output:

  Server String: /run/user/1000/pulse/native
  Server Protocol Version: 35
  Server Name: PulseAudio (on PipeWire 1.4.2)
  Server Version: 15.0.0
  • The command pactl list cards short provides a concise summary of all audio cards recognized by PulseAudio. It’s useful for quickly identifying available audio devices without diving into detailed properties.

$ pactl list cards short

Example Output:

  42 alsa_card.pci-0000_00_1f.3 alsa
  1092 bluez_card.14_06_A7_04_73_78 module-bluez5-device.c

Thw command below filters the output of pactl list cards to only show lines containing either profile or name, ignoring case;

$ pactl list cards | grep -i 'profile\|name:'

Example Output:

  Name: alsa_card.pci-0000_00_1f.3
  api.acp.auto-profile = "false"
  Name: bluez_card.14_06_A7_04_73_78
  bluez5.profile = "off"
  Active Profile: a2dp-sink
    Part of profile(s): headset-head-unit-cvsd, headset-head-unit
    Part of profile(s): a2dp-sink-sbc, a2dp-sink-sbc_xq, a2dp-sink
    Part of profile(s): headset-head-unit-cvsd, headset-head-unit

Line-by-Line Explanation:

  • Name: alsa_card.pci-0000_00_1f.3 → This is a built-in or PCI-based audio card managed by ALSA.

  • api.acp.auto-profile = "false" → ACP (Advanced Configuration Profile) is disabled for this card; it won’t automatically switch profiles.

  • Name: bluez_card.14_06_A7_04_73_78 → This is a Bluetooth audio device, identified by its MAC address.

  • bluez5.profile = "off" → In PipeWire (especially with WirePlumber), this value can be outdated or not reflect the actual active state, since profiles can be switched dynamically and not always update the stored property.

  • Active Profile: a2dp-sink → This indicates that the A2DP (Advanced Audio Distribution Profile) is currently active, allowing high-quality audio streaming. It also supports HSP/HFP (headset mode) and multiple SBC-based A2DP variations. This structure helps PipeWire choose or switch profiles depending on use case (For example, music vs. calls)

Recommendation

  • Verify PipeWire and WirePlumber Installation.

  • Restart Bluetooth and Audio Services to refresh profiles.

  • Use bluetoothctl for Manual Pairing.

  • Use the Pairing Button on Your Device: Some devices require holding the pairing button until rapid blinking starts to enter pairing mode.

  • Install and Use Blueman for Profile Management: Blueman provides a GUI for Bluetooth and allows easier profile switching.

Pipewire Debugging options

Debugging usually starts after the bug has been identified, and works best when users are very familiar with the circumstances surrounding the bug.

PipeWire has its own debugging options. Please see the upstream documentation PipeWire debugging.

Need More Help?

If the above steps don’t resolve your issue, visit the Fedora community:

Contributions and feedback help improve Fedora documentation for everyone.