I promise this isn’t a rant or cry for help; I’m just sharing an interesting observation that the Linux community might appreciate. Please know I’m comfortable and knowledgeable enough to be dangerous on any platform, though I generally prefer Unix/Linux and macOS over Windows. I inherited an obsolete, under-powered MacBook Air (Intel i5, 4G RAM, 128G SSD) and I’ve been testing virtually every popular distro on it for the last few months. I encountered the same Linux shortcoming across every distro, and I thought some of y’all might find this mildly interesting.

There seems to be an underlying issue running Linux on MacBooks, stemming from the fact that MacBooks require a kernel module with proprietary firmware blobs to support their Broadcom wifi & bluetooth hardware. Now, the Broadcom module is readily available in every standard package manager, but it will never be included in the mainstream kernel since it contains closed source software. For distros with a self-contained installer, this is not a huge problem at first - just download and install the appropriate Broadcom package separately to patch your kernel after installation and you should be good, right?

No. Trouble is the kernel and other packages (but mostly kernel) get updated constantly, seemingly without regard to existing kernel module compatibility. Depending on the distro, that Broadcom package might be weeks or even months behind the latest kernel release. The effect of this is that it’s never safe to just run software updates on a MacBook, because you’re playing roulette with your wifi hardware every time. Desktops with ethernet are easier to recover from because it’s easy to plug in, but for a laptop relying on wifi it’s a much bigger hassle when your wifi breaks.

Obviously you can just revert to a prior kernel then pin the working kernel version in place, but held packages like your kernel impact other software as well. Simply running Linux on MacBook hardware generates this ongoing cycle of issues over the proprietary software blobs required for the hardware. Typical designed-for-Windows devices face this issue far less frequently, so the added hurdle for MacBooks feels mostly ignored by the general Linux community.

This makes rolling release distros particularly problematic on MacBooks, which is really a shame. Even an atomic distro like Bazzite (which provides that Broadcom module right out of the box, by the way) breaks a MacBook’s wifi sooner or later if you install updates normally. I thought I was clever running Kali Linux for awhile. It runs really nicely on this meager hardware and KDE felt zippier than many other distros. I still had to manually install the Broadcom driver after installation, but with a Debian back-end I was really hoping it would pull delayed enough releases to keep the wifi working… it did not. Kali runs a rolling release based on Debian Testing, which still pulls recent enough kernel updates to break the wifi.

Many Arch-based distros won’t even install (btw), because the install images require a working networking stack, relying solely on the kernel’s built-in hardware support. I’m certain there are workarounds, but there’s no obvious, easy way for casual users to inject the required Broadcom module into the downloaded installer. Sadly, the best long term solution I’ve found is to just stick to annual, major LTS release distros like Debian Stable where enough time passes after most package updates that my cursed Broadcom module has had sufficient time for the dev to catch up.

Don’t get me wrong, I’ve been running Debian + KDE on my older-but-much-beefier MacBook Pro for years now, and it’s been a constant source of pleasure to use. I just thought I’d share a little about the unique challenges of a Linux fan who happens to own some aging Mac hardware. Someone here probably knows an obvious solution to make this far easier for the average user. I’m not begging anyone for help, though I certainly welcome your comments. In any case, I hope you enjoyed this read. Mac hardware would be really nice to run Linux if it weren’t for this module annoyance.

    • DetachablePianist@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      2 days ago

      Please do! For stability’s sake, I recommend installing a distro that follows an annual, stable release cycle such as Debian or Linux Mint. Mint famously has the required support for most hardware right out of the box, allowing for a easy experience.

      • BaroqueInMind@piefed.social
        link
        fedilink
        English
        arrow-up
        2
        ·
        2 days ago

        I’m old and dumb, and will attempt with a BSD distro first before I use a Linux distro. Have had better luck in the past with that route for dogshit driver support on various devices.

  • lowrads@lemmy.ml
    link
    fedilink
    arrow-up
    3
    ·
    2 days ago

    The only time I’ve had issues with these, was because of firmware whitelisting in the bios. It wasn’t with mac hardware though, because I don’t hate myself that much.

  • glitching@lemmy.ml
    link
    fedilink
    arrow-up
    13
    arrow-down
    1
    ·
    2 days ago

    what you describe would be an ardous journey… if the mentioned macbooks cost like $500. or $1000. truly, that sorta thing is nothing short of masochistic and no sane person should bother with that.

    you’re making broad statements based on very shitty hardware - 4 gig dual-core laptop isn’t a very representative experience when you can get solid workstations for pocket change.

    the macbooks I get are in the $20 region and for that kinda “money” I get absolute top-notch quality hardware, that, although dated, is more than adequate for the vast majority of uses. spending a coupla minutes to tweak it post-install isn’t a huge price to pay.

    here’s my headless 2014 MBP (i7-4770HQ with 16 GB, Intel Iris) doing its thing. was sold “for parts” due to busted screen for $25 ($40 asking).

    so, yeah, dicking around with broadcom’s stack is a thing, but it’s a thing that you do once and then it just works. I’m as bleeding edge as reasonably possible (F43) on all models I run and I haven’t got any issues, akmod builds the driver on every kernel install, which if you’re doing actual work on the thing isn’t something you’re doing often.

    as to how to install without LAN, you use your Android phone and tether its Wifi via USB. after five minutes (full system upgrade, install broadcom-wl via rpmfusion for e.g. Fedora) you’re done. or, use the netinstall thing the same way. there’s also a buncha stuff needed to make the experience better (undervolt, LID0 wake events, etc)

    not sure about Airs but MBP 2015 models (possibly 2013/14 as well) can be retrofitted with a $5 adapter board that lets you fit a regular Intel M.2 NGFF in there, eliminating the tainted kernel issue.

    • DetachablePianist@lemmy.mlOP
      link
      fedilink
      arrow-up
      5
      ·
      2 days ago

      you certainly make a good point, and replacing the hardware has definitely been a popular suggestion. fwiw, this MB Air was just a free hand-me-down, so I’m specifically using it to distro hop and fart around with different Linux distros on old Mac hardware that I have no attachment to

  • Tramort@programming.dev
    link
    fedilink
    arrow-up
    7
    ·
    3 days ago

    thanks for the tips! I am trying to run nixoa on an old Intel iMac and wireless and sounds are broken. I will search for the Broadcom driver you mentioned.

  • eleijeep@piefed.social
    link
    fedilink
    English
    arrow-up
    3
    ·
    2 days ago

    but held packages like your kernel impact other software as well

    Well… I’d be interested to hear what user-space impacts you’ve experienced from running a kernel that’s “weeks or even months behind the latest kernel .”

    • DetachablePianist@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      2 days ago

      Sorry, I think you misunderstood me. My point is that holding back the kernel indefinitely is an issue, especially in a rolling release distro. the broadcom module is always significantly behind the kernel, so allowing the kernel to upgrade in a rolling release cycle will frequently break wifi that relies on that module. However, another commenter has suggested that broadcom module might be replaced by the intel iwd driver, which I’m definitely going to try.

      • eleijeep@piefed.social
        link
        fedilink
        English
        arrow-up
        2
        ·
        2 days ago

        the broadcom module is always significantly behind the kernel

        Right, but if it’s not unmaintained then you only have to wait a finite amount of time before you get to update your kernel again yes?

        • DetachablePianist@lemmy.mlOP
          link
          fedilink
          arrow-up
          1
          ·
          2 days ago

          True. but you have to keep a much closer eye on when it’s safe to update. that was my solution while running Debian Sid (unstable) on my other MacBook for awhile (I really wanted KDE 6 before Trixie was officially released), but believe me this approach gets old. I eventually relented and set it to Debian Stable once Trixie was official. I’m looking for a more stable approach to a rolling release cycle that allows the kernel to upgrade when it’s available, without also breaking the wifi. another commenter suggested the broadcom module might be replaced by the intel iwd driver, which I definitely need to try.

    • nyan@sh.itjust.works
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      2 days ago

      So would I. I once ran a kernel a couple of years in arrears for a while, with everything else up-to-date, and had no userspace issues whatsoever. Granted, this was not on a Macbook, and I was using Gentoo.

  • anon5621@lemmy.ml
    link
    fedilink
    arrow-up
    6
    ·
    3 days ago

    I am running macbook air mid 2012 with Linux mint with installed closed source driver from mint driver manager and works fine without fearing me to update since mint based on Ubuntu LTS

    • DetachablePianist@lemmy.mlOP
      link
      fedilink
      arrow-up
      3
      ·
      3 days ago

      yeah, distros with LTS release cycles are exactly how to address this issue. I just wanna play more with rolling releases and atomic distros, lol

      • LeFantome@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        2 days ago

        See my other post. EndeavourOS works out of the box on MacBooks before 2019. This is with vanilla EOS.

        For 2019 and 2020 Intel MacBooks, there is a T2 version of EndeavourOS that includes a custom kernel that again makes everything work after a fresh install. You can just use the package manager after that and it all keeps working, even across kernel updates.

        • DetachablePianist@lemmy.mlOP
          link
          fedilink
          arrow-up
          1
          ·
          2 days ago

          Interesting. I actually tested Endeavour OS on this MB Air specifically (as well as my main MB Pro, but several years back) and the wifi was not natively supported out of the box. I was able to get it working by installing the broadcom module, but it still broke with the next kernel update. Another commenter has suggested replacing the broadcom driver with Intel iwd; I need to give that a shot. Endeavour seems a very approachable way to run Arch on MacBook hardware if I can solve this wifi problem more permanently.

  • TruePe4rl@lemmy.ml
    link
    fedilink
    English
    arrow-up
    2
    ·
    13 hours ago

    I was lucky enough to have a chip that’s compayible with brcfmac one. So on vanilla Arch it works out of the box. On some distros, they load a different module, that does not work with my chip, so I had to fix that way back when using Enedavour OS.

    • TruePe4rl@lemmy.ml
      link
      fedilink
      English
      arrow-up
      1
      ·
      13 hours ago

      2016 Macbook Pro btw

      Also, in all honesty, not having bios access or well documented UEFI settings is bigger pain. Searching how to disable autoboot on lid opening was fun.

  • ReverendIrreverence@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 day ago

    Maybe I’m lucky but my 2017-era MacBook Air (7,2) with i7 chip and 8GB RAM works great with Ubuntu. When I tried Debian I had to do the separate broadcom driver install and I didn’t really like Debian anyway and so went back to Ubuntu (now on 24.04.3 LTS) and this machine does everything I want/need it to do “out of the box.”

    • DetachablePianist@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      24 hours ago

      yeah, ubuntu’s good for that. annual LTS cycles (used by distros like ubuntu and debian) are exactly how to sidestep the issue I’m referring to

  • planish@sh.itjust.works
    link
    fedilink
    arrow-up
    2
    ·
    2 days ago

    This sounds like a bug in the distro packaging of the module, or maybe in Grub. You don’t want to try and install any kernel package, or make your default boot option any kernel package, that the wifi driver package doesn’t declare compatibility with.

    But nobody’s package manager knows to do this by default when the driver package is installed, and most packaging systems might not even be able to articulate that constraint.

  • non_burglar@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    3 days ago

    I’m also on not-quite-supported hardware (surface pro 6) and I feel your pain. We have a special kernel for most of the functionality, but neither camera.

    At this point, I’m grateful for a commodity x86_64 tablet with most everything else working perfectly, so it’s a small price.

  • enbee@lemmy.blahaj.zone
    link
    fedilink
    arrow-up
    5
    ·
    3 days ago

    Could you write a bash script that snags the latest module for Broadcom hw and alias it to run b4 any apt / yum / pacman runs?

    • DetachablePianist@lemmy.mlOP
      link
      fedilink
      arrow-up
      1
      ·
      2 days ago

      very possibly! I’m not 100% certain what is actually breaking there that seemingly gets solved after “some time” has passed. you might be on to something!

  • Eugenia@lemmy.ml
    link
    fedilink
    English
    arrow-up
    7
    ·
    2 days ago

    I own 3 Macbook Airs, running Linux. The solution was simple: buy a $6 TP-Link wifi usb stick, which is tiny, and it solved all my problems (same for BT). I used to have crashing problems with the linux AND the official broadcomm wifi driver, or the laptop wouldn’t wake up from sleep etc. I just blacklisted all that, and I use the tp-link one. Sure, it eats away 1 usb port, but it’s no biggie. No more crashes, or not waking up properly.

    • cevn@lemmy.world
      link
      fedilink
      arrow-up
      5
      ·
      edit-2
      2 days ago

      I was just coming to suggest this. Linux users are built different lol. My touchpad doesnt work. Buy a mouse. Display doesnt work. Its a headless server. Wifi is messed up. Buy a usb stick. If you can boot, that computer is golden

      • Samsy@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        1 day ago

        Just had to add: the PC is poverty of someone else and has encrypted win 11 on it. Use a 3.2-usb-stick with a shim compatible installed linux-distro on it (fedora/ubuntu).

  • muhyb@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    2 days ago

    It is indeed a pain to use on Linux. We have a similar (maybe the same) Macbook Air and recently I had to deal with the same thing to make it usable. I have tried many different distros, and most of the time I had to install the broadcom-wl driver via phone-tethering. Installing or even using dkms version is not the only problem too, the driver is also awful. The distro I settled was LMDE, surprisingly it was the only distro that came with Broadcom drivers, which was a plus at first. However it deteriorated so fast as you described, I had to find a permanent solution. My solution was completely ditching broadcom-wl drivers in favour of Intel’s iwd driver.

    iwd also has performance issues time to time, but at least disabling/re-enabling it solves the issue, unlike had to restart the Macbook with broadcom-wl.

    I also tried to replace the Broadcom Wi-Fi module by opening the back cover of Macbook since I had a Wi-Fi card laying around, but sadly the one on Macbook was not a nowadays’ standard M2 unit, so couldn’t done it.

      • muhyb@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        2 days ago

        No problem!

        Yeah, it took me kinda long to find about it as well. By the way, if you decide to install it, don’t forget to also install a GUI for it, something like iwgtk for example. Good luck!

  • data1701d (He/Him)@startrek.website
    link
    fedilink
    English
    arrow-up
    12
    ·
    2 days ago

    I just looked it up, and it seems a lot of the pre-Apple Silicon MacBook had swappable airport cards that used a completely standard mini PCIE slot. From a cursory google search, it looks completely possible to swap in something like an Intel Wi-Fi card that is supported natively by the kernel.

    A mini-PCIE Wi-Fi modem can be had for not too expensive, around the $30 range; in fact, if you have a good stack of old Wintel laptops, one of those might have a card that works well. In fact, I did that with my sister‘s laptop (although she was using Windowd) – her Realtek Wi-Fi card was causing endless misery, so I ripped the Intel modem out of an ultra book from circa 2016 and put it in her laptop. No more issues.