MacBookAir7,2, No Audio, PRAM Reset Fixes But Breaks Every Restart

The built in speakers and headphone jack don't work until I zap the PRAM but upon restarting without a PRAM zap the audio isn't' working again. It's shown as input and output devices (Speakers/Headphones) in System Settings but I never hear anything in any application. The audio via bluetooth or Thunderbolt (to HDMI) always works.

I've updated the system just now, I've done some searching to no avail, checking the Arch Wiki and forums, etc.

I have access to hundreds of these incredibly decent machines and I want to get them in the hands of people who have never used FOSS before but this one issue is the only thing holding me back. I would even settle for automatically resetting the PRAM at every startup, if that's possible.

Here is the garuda-inxi from a working state:

System:
  Kernel: 6.1.11-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 12.2.1
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=e0430201-0931-4d49-a5a8-f8a1445e4ab0 rw rootflags=subvol=@
    rd.udev.log_priority=3 vt.global_cursor_default=0
    resume=UUID=ae0cdb3c-2994-4db6-8822-7960e6e25fe8 loglevel=3
    mem_sleep_default=s2idle ibt=off
  Desktop: KDE Plasma v: 5.26.5 tk: Qt v: 5.15.8 wm: kwin_x11 vt: 1 dm: SDDM
    Distro: Garuda Linux base: Arch Linux
Machine:
  Type: Laptop System: Apple product: MacBookAir7,2 v: 1.0
    serial: <superuser required> Chassis: type: 9 v: Mac-937CB26E2E02BB01
    serial: <superuser required>
  Mobo: Apple model: Mac-937CB26E2E02BB01 v: MacBookAir7,2
    serial: <superuser required> UEFI: Apple v: 430.120.6.0.0 date: 03/16/2022
Battery:
  ID-1: BAT0 charge: 49.2 Wh (96.9%) condition: 50.8/54.3 Wh (93.5%)
    volts: 8.6 min: 7.6 model: SMP bq20z451 type: Li-ion serial: N/A
    status: charging cycles: 236
CPU:
  Info: model: Intel Core i5-5350U bits: 64 type: MT MCP arch: Broadwell
    gen: core 5 level: v3 note: check built: 2015-18 process: Intel 14nm
    family: 6 model-id: 0x3D (61) stepping: 4 microcode: 0x2F
  Topology: cpus: 1x cores: 2 tpc: 2 threads: 4 smt: enabled cache:
    L1: 128 KiB desc: d-2x32 KiB; i-2x32 KiB L2: 512 KiB desc: 2x256 KiB
    L3: 3 MiB desc: 1x3 MiB
  Speed (MHz): avg: 1800 min/max: 500/2900 scaling: driver: intel_cpufreq
    governor: performance cores: 1: 1800 2: 1800 3: 1800 4: 1800 bogomips: 14400
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities: <filter>
Graphics:
  Device-1: Intel HD Graphics 6000 vendor: Apple driver: i915 v: kernel
    arch: Gen-8 process: Intel 14nm built: 2014-15 ports: active: eDP-1
    empty: DP-1, DP-2, HDMI-A-1, HDMI-A-2 bus-ID: 00:02.0 chip-ID: 8086:1626
    class-ID: 0300
  Display: x11 server: X.Org v: 21.1.7 with: Xwayland v: 22.1.8
    compositor: kwin_x11 driver: X: loaded: modesetting
    alternate: fbdev,intel,vesa dri: iris gpu: i915 display-ID: :0 screens: 1
  Screen-1: 0 s-res: 1440x900 s-dpi: 96 s-size: 381x238mm (15.00x9.37")
    s-diag: 449mm (17.69")
  Monitor-1: eDP-1 model: Apple Color LCD built: 2015 res: 1440x900 hz: 60
    dpi: 128 gamma: 1.2 size: 286x179mm (11.26x7.05") diag: 337mm (13.3")
    ratio: 16:10 modes: 1440x900
  API: OpenGL v: 4.6 Mesa 22.3.4 renderer: Mesa Intel HD Graphics 6000 (BDW
    GT3) direct-render: Yes
Audio:
  Device-1: Intel Broadwell-U Audio vendor: Apple driver: snd_hda_intel
    v: kernel bus-ID: 00:03.0 chip-ID: 8086:160c class-ID: 0403
  Device-2: Intel Wildcat Point-LP High Definition Audio
    driver: snd_hda_intel v: kernel bus-ID: 00:1b.0 chip-ID: 8086:9ca0
    class-ID: 0403
  Device-3: Broadcom 720p FaceTime HD Camera driver: facetimehd v: kernel
    pcie: gen: 2 speed: 5 GT/s lanes: 1 bus-ID: 02:00.0 chip-ID: 14e4:1570
    class-ID: 0480
  Sound API: ALSA v: k6.1.11-zen1-1-zen running: yes
  Sound Server-1: PulseAudio v: 16.1 running: no
  Sound Server-2: PipeWire v: 0.3.65 running: yes
Network:
  Device-1: Broadcom BCM4360 802.11ac Wireless Network Adapter vendor: Apple
    driver: wl v: kernel modules: bcma pcie: gen: 1 speed: 2.5 GT/s lanes: 1
    bus-ID: 03:00.0 chip-ID: 14e4:43a0 class-ID: 0280
  IF: wlp3s0 state: up mac: <filter>
Bluetooth:
  Device-1: Apple Bluetooth USB Host Controller type: USB driver: btusb v: 0.8
    bus-ID: 1-3.3:6 chip-ID: 05ac:828f class-ID: fe01
  Report: bt-adapter ID: hci0 rfk-id: 0 state: down
    bt-service: enabled,running rfk-block: hardware: no software: yes
    address: <filter>
Drives:
  Local Storage: total: 233.76 GiB used: 41.98 GiB (18.0%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/sda maj-min: 8:0 vendor: Apple model: SSD SM0256G
    size: 233.76 GiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    type: SSD serial: <filter> rev: 3A0Q scheme: GPT
Partition:
  ID-1: / raw-size: 224.66 GiB size: 224.66 GiB (100.00%)
    used: 41.98 GiB (18.7%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 608 KiB (0.2%) fs: vfat dev: /dev/sda1 maj-min: 8:1
  ID-3: /home raw-size: 224.66 GiB size: 224.66 GiB (100.00%)
    used: 41.98 GiB (18.7%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
  ID-4: /var/log raw-size: 224.66 GiB size: 224.66 GiB (100.00%)
    used: 41.98 GiB (18.7%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
  ID-5: /var/tmp raw-size: 224.66 GiB size: 224.66 GiB (100.00%)
    used: 41.98 GiB (18.7%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
  ID-1: swap-1 type: zram size: 7.67 GiB used: 0 KiB (0.0%) priority: 100
    dev: /dev/zram0
  ID-2: swap-2 type: partition size: 8.8 GiB used: 0 KiB (0.0%) priority: -2
    dev: /dev/sda3 maj-min: 8:3
Sensors:
  System Temperatures: cpu: 62.0 C pch: 71.0 C mobo: N/A
  Fan Speeds (RPM): N/A
Info:
  Processes: 227 Uptime: 2m wakeups: 2 Memory: 7.67 GiB used: 1.48 GiB (19.3%)
  Init: systemd v: 252 default: graphical tool: systemctl Compilers:
  gcc: 12.2.1 clang: 15.0.7 Packages: pm: pacman pkgs: 2134 libs: 585
  tools: octopi,pamac,paru Shell: fish v: 3.6.0 running-in: konsole
  inxi: 3.3.25
Garuda (2.6.14-1):
  System install date:     2022-12-02
  Last full system update: 2023-02-14
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager mkinitcpio
  Windows dual boot:       No/Undetected
  Failed units:            

I took another garuda-inxi when it was broken and noticed one thing changed

Report: bt-adapter ID: hci0 rfk-id: 1 state: down

Thanks for any help that may possibly be provided!

Edit: I've also reset the power manager (SMC) and the EUFI firmware is up to date as I've installed macOS 12.x on these.

Can you explain specifically what you are doing? Maybe it could be turned into a systemd service, or simply added to your Fish config if it is simple enough.

This is an old Mac hardware feature for most of their machines before the Apple M series. When you startup you immediately hold down Command-Option-P-R until it restarts which reset the parameter RAM, it's firmware level memory saving some hardware settings but it's safe to reset over and over. On macOS there is a command you can run "nvram" but I don''t know if an equivalent is available for Linux.

Found a possible solution. If I boot using rEFInd instead of grub then I don't have audio issues. I'm looking into trying to get refind-btrfs working and also the ability to boot another kernel.

That is very curious!

There is quite a bit of mention of Apple hardware in the rEFInd documentation, so clearly Rod develops and tests on it. He must have tucked a special fix in there somehow…:thinking:

You need to set up a manual boot stanza to get both of these working, which is a little tricky. The stanza has to be exactly right or it won’t boot. Extra kernels can be added as “submenu” entries in the main boot stanza, and once you get refind-btrfs set up it gets it’s own boot option (and the snapshots become the submenu entries).

I found the examples in refind.conf very helpful for getting a manual stanza set up, and the ArchWiki article is quite helpful as well.

2 Likes

You mentioned in another thread:

sudo grub-install --no-nvram
sudo update-grub

This lead me to a possible solution that not only seems to fix the audio issue but the sleep issue as well! The trick is to NOT use "--no-nvram". Still need "mem_sleep_default=s2idle" kernel param. Currently letting the machine sit for a while to see how fast the battery drains while it's "asleep".

While it was a response to someone else, THANK YOU for it! This has been bugging me for months. I'm going to mark this resolved after I have updated my clonezilla image and done a proof of concept clone of a machine and see that it works.

Amigo, I thought I might share this with you, even though we have little in common in terms of hardware, excepting the use of the snd_hda_intel driver. I have an AMD-based machine with a Realtek chipset.

I have not taken the time yet to write a quick-and-dirty initialization script which would make my audio output useable on boot and instead currently do the following procedure manually to get my audio working after logging into the machine on boot:

  1. I open up the volume control from the volume control provided ( on the waybar ) by my desktop environment (wayfire). I set the volume control to zero for my headphone output.

  2. I then MUTE the headphone output.

  3. I then UN-MUTE the headphone output.

  4. I bring the volume for the headphone output to 100%

This makes sound output to work on my machine. I don't know where the proper fix should be made ( audio driver, audio bus, etc. ) and admit with shame my having neglected to dig further and come up with a better work around or fix to this shortcoming.

I hope that this might help,

F.

Thanks for this information but it looks like I won't need it now that I have enough of a solution. I will keep it in mind though.

I just have one question for the community before I consider this solved. Does

grub-install --no-nvram

ever get executed after the initial OS install, like with any package installs or any Garuda utilities, like "garuda-update remote-fix" or whatever it's called?

The grub-install script should not be run automatically by any process that I am aware of. Even when Grub is updated, it is up to the user to re-run the grub-install script with whatever syntax is appropriate for their system.

This came up not too long ago, with that whole Grub update fiasco that left many systems unbootable. Re-running the grub-install script after taking the update was all that was needed to fix the issue in many cases, but for a number of reasons is not a practical script to automate and needs to be run explicitly by the user.

4 Likes

Thanks for the confirmation, I'll be good into the future then! I'll still have a "Fix Audio" app the user can click on to reinstall and update grub.

Did a lot more testing and it's very solid. I removed the "mem_sleep_default=s2idle" parameter as having it enabled causes attempted hibernation to break the audio. The hibernation doesn't work anyways so I've disabled it (it restarts instead of shutting down). Also resetting the PRAM actually causes the issue (first time in over 20 years of Mac tech support I've ever seen zapping the PRAM to actually CAUSE an issue, LOL!). The sleep now actually seems to go all the way to sleep and not use a lot of power. The only issue is that it can take 1-2 minutes for the machine to wake up. This is acceptable. Than you again for the help!

Solution: sudo grub-install && sudo update-grub

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.