Headphone Jack not detecting headphones - M1 Pro

Hello! Thank you for the team’s work on Asahi Linux, I’ve been daily driving Fedora on my macbook pro for the past couple of weeks and have been really enjoying the experience.

One issue I have run into is getting the headphone jack to work. Whenever I plug in a headphone, the audio sink is not detected by the computer.

asahi-diagnose seems to detect it but then immediately an unplug event even when the headphone stays plugged in. Here is the asahi-diagnose file.

Running Fedora 39 (but I had the same issue on Fedora 38), KDE, Wayland.

Not sure if it’s related to this, but from my reading those patches should have been pushed?

Let me know if there is any output I can send to help pinpoint the issue!

Can you provide a bit more information about the behavior? Does anything happen when you plug in the jack? Does pavucontrol show anything in the “Output Devices” tab? Does the audio icon in the task bar change?

I have the same exact machine on F39 and it works, so it’s weird that it doesn’t work for you. I assume you haven’t made any changes to audio packages, right?

In the logs I see unplug events 10+ seconds after the plug events, sometimes minutes, which sounds like you were unplugging it and plugging it back in manually. None of the unplug events are immediately after plug events. So I get the feeling this is a userspace issue and the kernel driver is working as intended.

1 Like

When I plug in the headphones the audio icon in the task bar remains muted and says ‘No output or input devices found’ just installed and tried pavucontrol and the only output device it shows is ‘Dummy output’

I can confirm these headphones work as intended in MacOS, and bluetooth works as expected in Asahi.

I don’t believe I’ve made any changes to audio packages? I don’t remember installing anything else related to audio, but it’s possible a dependency slipped in somewhere?

➜  ~ dnf list installed | grep -E "pulse|pipewire|alsa" 
allow_vendor_change is disabled. This option is currently not supported for downgrade and distro-sync commands
alsa-lib.aarch64                                     1.2.10-3.fc39                        @fedora                                                          
alsa-lib-devel.aarch64                               1.2.10-3.fc39                        @fedora                                                          
alsa-ucm.noarch                                      1.2.10-3.fc39                        @fedora                                                          
alsa-ucm-asahi.noarch                                3-1.fc39                             @fedora                                                          
alsa-utils.aarch64                                   1.2.10-1.fc39                        @fedora                                                          
kde-settings-pulseaudio.noarch                       39.0-1.fc39                          @fedora                                                          
kpipewire.aarch64                                    5.27.8-1.fc39                        @fedora                                                          
pipewire.aarch64                                     0.3.80-1.fc39                        @fedora                                                          
pipewire-alsa.aarch64                                0.3.80-1.fc39                        @fedora                                                          
pipewire-codec-aptx.aarch64                          0.3.80-1.fc39                        @rpmfusion-free                                                  
pipewire-gstreamer.aarch64                           0.3.80-1.fc39                        @fedora                                                          
pipewire-libs.aarch64                                0.3.80-1.fc39                        @fedora                                                          
pipewire-pulseaudio.aarch64                          0.3.80-1.fc39                        @fedora                                                          
pipewire-utils.aarch64                               0.3.80-1.fc39                        @fedora                                                          
pulseaudio-libs.aarch64                              16.1-5.fc39                          @fedora                                                          
pulseaudio-libs-glib2.aarch64                        16.1-5.fc39                          @fedora                                                          
pulseaudio-qt.aarch64                                1.3-5.fc39                           @fedora                                                          

I do receive an error regarding pipewire-codec-aptx:

➜  ~ sudo dnf update          
[sudo] password for arya: 
ProtonVPN Fedora Stable repository                                                                                                        732  B/s | 153  B     00:00    
Errors during downloading metadata for repository 'protonvpn-fedora-stable':
  - Status code: 404 for https://repo.protonvpn.com/fedora-39-stable/repodata/repomd.xml (IP: 172.67.70.114)
Error: Failed to download metadata for repo 'protonvpn-fedora-stable': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
Ignoring repositories: protonvpn-fedora-stable
Last metadata expiration check: 2:10:00 ago on Sun 29 Oct 2023 03:50:38 PM CET.
allow_vendor_change is disabled. This option is currently not supported for downgrade and distro-sync commands
Dependencies resolved.

 Problem: cannot install the best update candidate for package pipewire-codec-aptx-0.3.80-1.fc39.aarch64
  - nothing provides pipewire >= 0.3.83 needed by pipewire-codec-aptx-0.3.83-1.fc39.aarch64 from rpmfusion-free-updates-testing
==========================================================================================================================================================================
 Package                                   Architecture                  Version                               Repository                                            Size
==========================================================================================================================================================================
Skipping packages with broken dependencies:
 pipewire-codec-aptx                       aarch64                       0.3.83-1.fc39                         rpmfusion-free-updates-testing                        26 k

Transaction Summary
==========================================================================================================================================================================
Skip  1 Package

Nothing to do.
Complete!

And apologies, yes think you’re right about the unplug events being manual. Don’t think that’s the cause.

Can you install pavucontrol and check what that says when you plug/unplug? Also please check the wireplumber package version, and see if there are any interesting logs:

journalctl -t pipewire and journalctl -t wireplumber (add -b 0 to filter to current boot)

I’ve installed pavucontrol but don’t see any messages in the GTK app or the command line when I plug/unplug headphones. Just the Dummy output output device.

journalctl -t pipewire -b 0 returns -- No entries -- as does journalctl -t wireplumber. I have logs from pipewire before the current boot (mainly related to bluetooth from what I can see but I can share those if that’s of interest) but I don’t have any logs at all from wireplumber.

➜  ~ wireplumber -v
wireplumber
Compiled with libwireplumber 0.4.14
Linked with libwireplumber 0.4.14

This is my current version of wireplumber.

Did you try to increase / decrease the volumes? I have adjusted some speakers on my macbook pro m1 and I have to increase the volume sometimes.

This looks like the same issue as reported in M1 Pro 16" No audio from headphone jack · Issue #190 · AsahiLinux/linux · GitHub . I have no idea why that happens on some devices while it works as expected others.

I think we’re going to need PipeWire and WirePlumber debug logs to figure this one out.

First kill the daemons: killall pipewire wireplumber. Do that repeatedly a few times until it starts saying no process found consistently for both (this is to get systemd to fail the units and stop restarting them).

Then in one console do: PIPEWIRE_DEBUG=3 pipewire | tee pw.log and in another (after), WIREPLUMBER_DEBUG=3 wireplumber | tee wp.log.

Then mess around with the jack a bit, and upload the log files somewhere.

Ok I think I fixed it and believe I can replicate the issue. If I go to this setting in the Sound menu in KDE and flip the Built-in Audio setting to Pro Audio and plug in the headphones the sink is detected and I can send audio to the headphones.

Now while the headphones are connected and audio is playing if I turn the Built-in Audio Pro setting to Off and unplug the headphones from this state they won’t be detected upon a future plugin event.

The way to get them to be detected is to go back to the Inactive Cards setting and change it to Default while the headphones are plugged in. I think the confusing part is that bluetooth audio seems to be unrelated to this setting, and if the headphones are unplugged then this Inactive Card is marked Off and it’s not obvious that a new option in the drop-down menu appeared.

Apologies for causing any confusion and taking your time, I do not think this has anything to do with Asahi Linux I think just something I got confused by in KDE. @marcan still happy to provide the logs if that would be helpful, let me know!

Thanks for y’all’s work! Looking forward to the fanfare accompanying the official release :grin:!

1 Like

I can replicate this as well. It’s confusing that “Off” can mean two different things: no headphones connected and literally off

Thanks for finding this it sounds like it could explain the other reports as well.

Oooooh that is somewhat confusing UX, yup. But I think in that case everything is “working as intended” (whether that design is good nor not…).

Thank you for working this out. I think as long as we can point people at this issue when it comes up, we’re good for now :slight_smile: