rob74 6 days ago

Wow, this really puts into perspective how much work has to be put into even the most insignificant details of getting Linux to run on (Apple Silicon) Macs. I say "insignificant" with all due respect because, well, the built-in microphone sees very little use (except if you have forgotten your headset).

Or, to quote the progress report (https://asahilinux.org/2025/03/progress-report-6-14/#is-this...): "This is Apple though. Nothing is ever simple."

8
brundolf 6 days ago

The built-in microphone is actually excellent, I often use it even when I have my AirPods Pro in because the sound quality is so much better

If you've got headphones with a wraparound microphone on its own arm then it could be better, but everyday headphones are limited by the position of the microphone

ElijahLynn 6 days ago

Yeah, no matter how good the microphone actually is on a headset, it uses an ancient codec so until we get Bluetooth 5.3 everywhere with lc3 codex then we won't actually have good mic input from headphones and headsets. I predict that this is all going to change this year and next year. But the full stack has to support it from headphones to Bluetooth chips to OS.

arghwhat 6 days ago

Headsets can and do use other codecs already. This is especially true for Enterprise headsets with dongles - these still use Bluetooth but by controlling both sides they can pick codecs.

LE Audio is great though - and is already, as "the full stack" has had support for quite a while... Assuming you don't happen to get your equipment from a certain fruit supplier that is notoriously slow at implementing open standards, almost as if they want to not give you a choice outside buying their own proprietary solutions...

MarcelOlsz 6 days ago

I cannot wait to not take an audio quality hit while the mic is on on the airpods.

therein 6 days ago

Especially since OSX is terrible at input/output preferences.

MarcelOlsz 6 days ago

If you alt(opt)+click the sound icon in the menu bar you can easily select your inputs and outputs. I really just want airpods with a mic and no audio quality hit so I can use it in simracing so I don't have to have an external mic arm.

therein 6 days ago

It switches back on a whim for the most arbitrary things, though. In Windows the same can happen but I can at least temporarily disable an input if it is doing that.

Doing some things like disabling an input/output device, or an internal keyboard, or a webcam. Almost impossible. Even if there are some ways, they change so often. Let's say you have two cameras and an application that always picks the internal one. I couldn't find a way to disable the internal camera so that this app would pick the only available one.

aisamu 1 day ago

I "fixed" this with a Hammerspoon snippet that monitors input changes and reverts them:

    mic = hs.audiodevice.findInputByName("MacBook Pro Microphone")
    function handle_deselected(_, type)
      if (type == "gone") then
        if not mic:inUse() then
          mic:setDefaultInputDevice()
        end
      end
    end
    mic:watcherCallback(handle_deselected)
    mic:watcherStart()

MarcelOlsz 6 days ago

Ah yeah you're right. Does the "Audio MIDI Setup" Mac utility app help you here at all?

therein 6 days ago

It gets close, but no way to truly pin it still. It effectively does the same thing that System Settings > Sound > Output & Input does but with a better UI making it clearer that you are making a change to the primary. But the change is still just as unpinned as it would be from the other location.

derefr 6 days ago

It's so strange (and frustrating) to me that "Bluetooth audio" means "you pass the Bluetooth hardware PCM samples, and it encodes them itself in hardware; or the Bluetooth driver decodes packets in hardware to PCM samples, and then passes them to userspace."

It reminds me of the telephone network, where even though the whole thing is just another packet-switched network these days, the abstraction exposed to the handset is an analogue baseband audio signal.

---

Why can't we get another type of "Bluetooth audio", that works like VoIP does between handsets and their PBXes — where the two devices will:

1. do a little handshake to negotiate a set of hardware-accelerated audio codecs the devices (not the Bluetooth transceivers!) both support, in descending order of quality, constrained by link throughput + noise; and then

2. open a (lossy, in-order) realtime "dumb pipe" data carrier channel, into which both sides shove frames pre-encoded by their separate audio codec chip?

Is this just AVDTP? No — AVDTP does do a capabilities negotiation, sure, but it's a capabilities negotiation about the audio codecs the Bluetooth transceiver chip itself has been extended with support for — support where, as above, userland and even the OS kernel both just see a dumb PCM-sample pipe.

What I'm talking about here is taking audio-codec handling out of the Bluetooth transceiver's hands — instead just telling the transceiver "we're doing lossy realtime data signalling now" and then spraying whatever packets you the device want to spray, encoded through whatever audio-codec DSP you want to use. No need to run through a Bluetooth SIG standardization process for each new codec.

(Heck, presuming a PC/smartphone on the send side, and a sufficiently-powerful smart speaker/TV/sound bar on the receive side, both sides could actually support new codecs the moment they're released, via software updates, with no hardware-acceleration required, doing the codec part entirely on CPU.)

---

Or, if we're talking pie-in-the-sky ideas, how about a completely different type of "Bluetooth audio", not for bidirectional audio streaming at all? One that works less like VoIP, and more like streaming VOD video (e.g. YouTube) does?

Imagine a protocol where the audio source says "hey, I have this 40MB audio file, it's natively in container format X and encoding Y, can you buffer and decode that yourself?" — and then, if the receiver says "yeah, sure", the source just blasts that audio file out over a reliable stream data carrier channel; the receiver buffers it; and then the receiver does an internal streaming decode from its own local buffer from that point forward — with no audio channel open, only a control channel.

Given the "race to sleep" argument, I presume that for the average use-case of "headphones streaming pre-buffered M4As from your phone", this third approach would actually be a lot less battery-draining than pinging the receiver with new frames of audio every few-hundred milliseconds. You'd get a few seconds of intensive streaming, but then the transcievers on both ends could both just go to sleep until the next song is about to play.

Of course, back when the Bluetooth Audio spec was written, something the size of AirPods couldn't have had room to support a 40MB DRAM buffer + external hardware parse-and-decode of M4A/ALAC/etc. But they certainly could today!

iknowstuff 6 days ago

While we're at it, it'd be great if we could avoid remuxing e.g. facetime audio, which is AAC, and notification sounds, into a single stream before sending it to bluetooth. Would be nice to avoid the latency and just shove the raw AAC from facetime into the headset, and when a notification ping arrives, send that as a separate audio stream with maybe a different codec

derefr 6 days ago

Yeah, the ultimate Bluetooth audio protocol would probably be a meta-protocol, combining the two ideas I mentioned with a MIDI-like timecoded sequencing protocol. You'd pre-buffer one or more notification sound effects onto the receiver, registering them with audio-session-specific IDs; begin streaming the live audio (the stream gets an ID); and then use the control sequencing stream to say "mix in a copy of registered-stream N [the ping sfx] at time T." (And the sender then cut the sfx off early with another such command, if it wanted.)

mrheosuper 5 days ago

We basically did that in old project. We need to transfer audio from our device to phone, but our device is BLE only, and LE audio was not mature enough.

So we define a custom BLE service and blast audio file through it

johnmaguire 6 days ago

I think the bigger issue might be the microphone placement. Humans tend to prefer microphones that are closer to microphones which are further away (this is one reason headsets w/ a boom arm usually sound better than a built-in microphone.) Having the microphone behind you / to the side (as in the case of an AirPod) is not great either. Of course, audio processing can fix a lot of this.

kenferry 6 days ago

Are AirPods limited to the Bluetooth spec though? I think they extend it.

whiddershins 6 days ago

i don't know the details but airpods pro sound noticeably terrible and bluetooth-y. It's almost shocking.

brundolf 6 days ago

They extend it in some ways, but I'm not sure if they do in this way. They do sound kind of terrible, but I always assumed it was due to the microphones being way back by your ears. I'm not sure though

miki123211 6 days ago

Everyday headphones are limited by the fact that people often use Bluetooth, and Bluetooth audio is just terrible tech that hasn't improved by much in the last 10 years, and still can't do more than 16kHZ when doing both input and output at the same time.

I think this isn't a problem if you're using Apple headphones with Apple devices, but anything else falls back to crappy BT quality, usually with some kind of terrible ANC to boot.

FOr me, crappy audio setups and apps trying to do too much audio processing are the primary reason of "Zoom fatigue". I've done a lot of calls over apps that transmit raw, high-quality audio with no processing whatsoever, and the experience is just so much better.

blep-arsh 6 days ago

Apple-Apple Bluetooth speech codec is a variation of AAC, I believe. AAC-LD if I remember correctly. But still, having microphones in one's ears is suboptimal. There's a lot of processing required even though the codec is no longer completely awful.

On an unrelated note, I tried doing calls with a stereo mic setup but participants were actually uncomfortable with the ASMR-like effect of the audio.

entropicdrifter 6 days ago

Plenty of good headsets do beamforming with their microphones as well, just depends on what you're running. Macbook mics are well above average, though, so I agree in most cases they'll be better unless you're picky about your headset mic quality.

seanp2k2 6 days ago

This is also a great example counterpoint for the folks who constantly complain about Apple hardware being "overpriced". Most laptop mfgs are happy to just solder on whatever tiny $0.50 compatible MEMS mic and put a little toothpick-sized hole in the case and call it good enough, or add two and rely on whatever generic beam forming that isn't adapted to their specific mic choice, placement, case acoustics, etc the Realtek ALC262 or whatever gives them, and call it a day.

Apple puts a ton of R&D into making things work well. As another example: Macbooks have been, for 15+ years now, the only laptops that I can trust to actually sleep and conserve battery when I close the lid and slip into a backpack for a few-hr flight. Windows and Linux on laptops seem to have about a 70% chance of either not sleeping, not waking up right (esp with hybrid graphics), or trying to do forced Windows updates and killing the battery, then waking back up to 20+ minutes of waiting for updates to resume / finish with no meaningful progress indicator or way to cancel / delay.

Not everything they do is perfect, and I'm not some huge Apple fanboy, but they do offer a significantly better experience IMO and feel "worth" the premium. It's not as if modern gaming laptops are any cheaper than MBPs, but they certainly feel much jankier, with software and UX to match. As an example, the IEC plug on the power supply of my Asus Zephyrus Duo wiggles enough that it disconnects even with different IEC cables. I've had to wrap some electrical tape around the plug body to get it to be less flaky. Asus Armoury Crate is a terrible buggy and bloated piece of software that runs about a dozen background processes to deliver a "gamer" UI to...control fans, RGB lights, and usually fail to provide updates. They also have utilities like https://www.asus.com/us/content/screenxpert3/ and "ROG ScreenPad Optimizer" that are largely buggy garbage, but sometimes required to get their proprietary hardware to work properly.

Does Apple gouge users for extra RAM and SSD space? Absolutely, but you're paying for the R&D as much as the actual hardware. I wish they'd just price that into the base models and make upgrades cheaper, but their pricing strategy seems to be lowering the base entry point to something more appealing with "it barely works" levels of spec, while making increasingly ridiculous margins on higher specs -- an additional $4,600 to go from 1TB -> 16TB on the Mac Studio is pretty bold considering consumer QTY=1 pricing on a fast M.2 SSD is around $600 for 8TB, and I'm sure their BOM costs are around the same for 16TB worth of silicon in huge quantities.

overfeed 6 days ago

> Macbooks have been, for 15+ years now, the only laptops that I can trust to actually sleep and conserve battery when I close the lid and slip into a backpack for a few-hr flight.

Even the cheapest of Chromebooks sleep and resume reliably. I suspect the reason is not purely R&D, but limiting the number of supported devices/chipsets and testing the supported configuration thoroughly. Chromebook OEMs can only manufacturer specific hardware combinations blessed by Google, and in exchange Google updates the drivers during the support period.

tracker1 6 days ago

> the only laptops that I can trust to actually sleep and conserve battery when I close the lid

+1 on this one... I can close my lid (from on) and set my M1 air aside for a few weeks and still have plenty of battery left. I don't use it much when not traveling, it's mostly my desktop, work laptop or phone.

Also +1 on the hardware feel... it's got an above average stiffness, keyboard feel (for what little that's worth) and the best touchpad experience hands down. The screen is also on the higher end (I've seen slightly better in some really expensive laptops). All around, it's a pretty great value on the mid-high range. What I don't like is the aging UI/UX, the variance from other platforms (I use Linux and Windows pretty regularly) and some things that I just find harder on the platform in general.

I don't think I'd every buy a maxed out Apple product all the same, I don't use an iPhone or anything else but my laptop. That sometimes makes the ecosystem integrations slightly annoying. That said, my current laptop is still running well, and my prior laptop from over a decade ago is still running fine for my Daughter's needs... though she may get my m1 if/when I move to a Framework 13 (strix halo).

johnmaguire 6 days ago

Keep in mind you can't just upgrade a Mac Studio to 16 TB for $4,800. You can go to 8 TB for $2,400, but to move up to 16 TB you also need to upgrade to the Ultra chip for an additional $1,000, which also necessitates moving up to 96 TB RAM. So when all is said and done, you're looking at an additional cost of $6,599.

As a photographer, this is a bit maddening.

tracker1 6 days ago

For what it's worth, you do get a 10gb nic option and can just connect to a NAS with lots of fast storage and nvme caching drives.

johnmaguire 6 days ago

Yeah, for the Mac Studio, which is likely to stay in one place, this probably works well. In actuality, I use a Macbook Pro, which has the same pricing issue.

In my experience, the fastest option for this is NFS without encryption, which is only really viable on a local network as it's hecking insecure (sure, wrap it in Wireguard, but now you're slowing it down again) and over Wifi at least, it's definitely slower than using an NVMe drive plugged into the Macbook, at least for 40 MP files coming out of my Fuji.

The external NVMe drive w/ Thunderbolt works... OK. But it's annoying (both physically and in terms of sleep/wake causing dismount warnings, etc.)

makeitdouble 6 days ago

> the only laptops that I can trust to actually sleep

They don't actually sleep. Apple remarketed the concept of never sleeping as "Power Nap".

You can choose to have it actively updating the system or not, but it never actually sleep, just go into a ridiculously low power mode. You'll get the same on Surface Pro laptops or Chromeboks for instance.

Actual sleep only happens when the battery is about to die.

https://support.apple.com/guide/mac-help/turn-power-nap-on-o...

klausa 5 days ago

You're confusing sleep with hibernation.

Power Nap is just fancy name for scheduled wakeups; it was supposed to be more but my understanding is that this never really materialized.

makeitdouble 5 days ago

I'd want hibernation but it's not offered in most laptops any more, to my knowledge.

I might be confused on the name they chose to market never sleeping (never do full suspend to RAM with CPU shutdown except on special circumstances), as it was announced with Power Nap as the front facing feature.

entropicdrifter 5 days ago

Hibernation is still 100% an option on Windows. You can even set it to hibernate when you close a laptop's lid

makeitdouble 5 days ago

It's part of the OS but the option can be removed by the OEM. I still haven't found a way to get it on an ASUS laptop, same for Surface Pro.

From MS's doc:

> This option was designed for laptops and might not be available for all PCs. (For example, PCs with InstantGo don't have the hibernate option.)

https://support.microsoft.com/en-us/windows/shut-down-sleep-...

virtue3 6 days ago

counter point; as a gamer I don't want to waste even a penny on a built in microphone on my laptop -> maybe nice to have as a last resort; but even then I could just discord on my phone.

I just want a heatset aux port and I'm GTG. I want my money put into the GPU/CPU/Display/Keyboard.

Now my macbook pro for work? Yeah; high expectations there for AV quality in terms of joining meetings etc.

eptcyka 6 days ago

I hope you do not take notes or brush dust off the macbook whilst in a video call.

gabrielhidasy 6 days ago

Why, are they not able to reject these types of noise? My X1 doesn't even register typing in a video call

jrockway 6 days ago

Software noise cancellation is actually kind of amazing. During the pandemic when I was doing 8 hours of video calls a day, I paid for Krisp and it eliminated any background noise pretty much perfectly. One time a very loud fire truck was slowly driving by. It was so loud I couldn't even hear myself think and just stopped talking. People were confused because that noise was eliminated but I was just talking very weirdly ;)

In the interim, they raised the price and added a ton of bloat so I don't use it anymore. (The bloat killed it, not the price. And the popup that's like "you're so stupid that you can't even figure out how to enable Krisp Speaker, you idiot". I'm well aware of how to enable it, but I have chosen not to, as I do not want to heavily process the audio that I'm listening to. Only emitting. "Don't ask again" would have probably made them an extra $110 at least.)

nucleardog 6 days ago

Pretty much the same boat. Early 2020 I was spending so much time on calls headphones were just tiring. So it started as "get a microphone + speaker setup that doesn't echo" and just kind of spiraled into a half decade of incremental improvements.

Don't know that I've had anything as loud as a fire truck, but more than a few times I've had a 75lb dog a few feet away from me barking like mad, whining at me, playing by throwing a cow femur up in the air and letting it crash down on the vinyl floor, etc and apologized about the noise only to have people look at me funny and tell me they didn't hear anything but that explains why I seemed like I was having trouble speaking.

I think the only time I had anyone say anything about anything was when I accidentally had an air conditioner blowing directly on my microphone. They couldn't hear it, but my voice was coming through a little less crisp than usual as the noise cancellation was trying to remove the constant, high volume white noise.

Don't know what OS you're on, but on Linux I can definitely recommend Easy Effects (https://flathub.org/apps/com.github.wwmm.easyeffects). Been using RNNoise + Speex along with some other filtering for quite a while now to great effect.

One thing I found worked _really_ well if you're already using an external microphone of some sort--using the webcam microphone as part of a noise gate. On top of the filtering and existing gating, my audio only opens if my webcam _also_ picks up sound of sufficient volume. Lets me keep the microphone in front of my face fairly sensitive while still entirely eliminating echo and most off-axis sounds.

eptcyka 6 days ago

I constantly hear a harsh swoosh when people wipe stuff or drag their palms across their macbooks.

pantalaimon 6 days ago

Even on Linux?

JohnBooty 6 days ago

Wow not my experience at all.

The MBP mic is generally preferable to most headset boom mics in my experience with good noise reduction. You also get the benefit of not picking up extraneous mouth noises (gum chewing, coffee slurping, whatever)

I feel like 99% of people I conference with use regular headphones + MBP mic

Main problem with that setup is not being able to hear your own voice in the headphones (feedback, or whatever that's called) which can be annoying sometimes if using NC headphones

lloeki 6 days ago

> feedback, or whatever that's called

Monitoring.

There are umpteenth ways to do that, and I find headsets themselves do it the most poorly of all (if they have the feature at all).

> The MBP mic is generally preferable to most headset boom mics

Another benefit is not paying the '90s GSM handsfree BT profile codec pain (at the cost of A2DP having slightly higher latency)

arghwhat 6 days ago

> Monitoring

It's called sidetone. Headsets do it so your ears don't feel clogged and to avoid subconscious yelling.

Some headsets let you adjust it either through a regular Sidetone volume control or some dedicated app. Soundcards also often have this feature in the form of a Mic output volume control, done in hardware to reduce latency.

A significant difference in headset quality is in sidetone latency. The heavier the DSP processing required to get a reasonable mic output, the harder it is to hit latency targets. Headset SoCs have dedicated hardware for this - a user-space solution like Apple pulls on their laptops would not be able to meet a usable latency target.

> Another benefit is not paying the '90s GSM handsfree BT profile codec pain

LE Audio includes the LC3 codec, solving this once and for all.

In the meantime while this rolls out, various alternate codecs exist that are fairly widely supported. This is especially true when using fancier headsets with a dedicated bluetooth dongle as they have more flexibility when it comes to codecs and compatibility.

Aaronstotle 6 days ago

Actually my complaint relates to open office designs, the macbook mic picks up louder people from across the room. So if I do use headphones and the MBP mic, other people will hear random noise blurbs from anywhere in the office .

argsnd 6 days ago

If you click the orange microphone icon in the menu bar while it’s in use it lets you switch to a mode that only captures your voice

arghwhat 6 days ago

I don't think I recall having a meeting with anyone using plain headphones with the laptop mic instead of a headset of some kind. Wired headphones without a mic are somewhat unusual nowadays to begin with outside audio file circles.

AirPods of various versions is common, as is many other buds. Enterprise headsets like those from EPOS (the old Sennheiser Communication) and Jabra (with or without boom) and speakerphones are common in corporate settings, casual headsets (e.g., Sony, Bose) and wired gaming headsets are common at home.

rollcat 5 days ago

Well it is simple if you use the whole package as delivered (although Apple has been straying off the road it paved for quite a while now).

The point is, everything they make is vertically integrated. They want to deliver a feature (like Airdrop or Continuity), they will cut across the stack to get it done. If you go the DIY route (which is what Asahi is effectively all about), you get to also DIY the missing software pieces.

The upside is that the entire ecosystem gets to benefit from that work (see e.g. the new DSP in PipeWire). PC hardware is generally crap, and so is Apple's if you omit these extra bits. But "the whole package" sets the bar quite a bit higher. I want to see the FOSS ecosystem meet that bar.

zozbot234 6 days ago

The three-mic array is also found in Intel-based Retina MacBooks, so this might also be useful for proper audio support on that older hardware. (Some early Retina MacBook Pros have a two-mic array only, but most have the full three-mic array.)

ElijahLynn 6 days ago

Because most mics are still using Bluetooth 5.0 I use the microphone on my Mac even when I'm wearing a headset. Otherwise, it puts me into a weird codec mode of ancient history where I get downgraded to a low bit rate and even my audio input to my ears sounds horrible then. So I always use the Mac microphone when possible.

tracker1 6 days ago

It's more annoying on Linux where you have to manually switch... at least most apps in windows/mac will automagically put my headset in the correct mode.

egorfine 5 days ago

I always set my microphone to MacBook's even when wearing a headphones, because the quality is incredibly good even in noisy environments. In Zoom I also set "Original sound for musicians" on if in a quiet location. So much more natural sound.

beng-nl 6 days ago

I always prefer headset too, but I did find it striking how good the audio quality of the built in mic was compared to headset when I tried it once..

Hamuko 6 days ago

I exclusively use the built-in microphone for work meetings. I don't even have any other work-issued microphone unless we count my phone.