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.

  • muhyb@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    1 hour 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.

  • glitching@lemmy.ml
    link
    fedilink
    arrow-up
    4
    ·
    2 hours 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.

  • data1701d (He/Him)@startrek.website
    link
    fedilink
    English
    arrow-up
    7
    ·
    5 hours 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.

  • eleijeep@piefed.social
    link
    fedilink
    English
    arrow-up
    1
    ·
    3 hours 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 .”

  • LeFantome@programming.dev
    link
    fedilink
    arrow-up
    15
    ·
    edit-2
    9 hours ago

    What year?

    I have several Mac laptops running Linux with hardware from 2012 to 2020. I find that EndeavourOS works best and WiFi works out of the box.

    It uses the wl drivers generally (NOT b43) with DKMS so the module is automatically rebuilt when you upgrade the kernel. You can just upgrade the kernel using the package manager and it “just works” when you reboot. I have been using Linux on MacBook Pro and MacBook Air systems for years and never had a problem (2012, 2013, 2017, 2020). Also iMacs back to 2008.

    If you have a T2 chip system, you need a special kernel and apple an wifi/bluetooth firmware blob. In most distros you have to extract the firmware from macOS yourself but it is available in the AUR so there is a special T2 addition of EndeavourOS that makes everything work out of the box. These are the 2019 or 2020 systems I think.

    • curbstickle@anarchist.nexus
      link
      fedilink
      English
      arrow-up
      6
      ·
      8 hours ago

      with DKMS

      Exactly what I was going to suggest here. This is the way to deal with it (and “it” is usually pain in the ass WiFi)

  • Foxfire@pawb.social
    link
    fedilink
    English
    arrow-up
    21
    ·
    10 hours ago

    If you’re having trouble with proprietary hardware networking and bluetooth, I wonder if the some USB hardware from ThinkPenguin would help you with that. Namely the wireless dongle and the bluetooth one, both of which don’t rely on proprietary blobs and work with fully free systems out of the box. Not exactly the cheapest thing to outfit on inherited, old systems at ~$50 each, however.

    • DetachablePianist@lemmy.mlOP
      link
      fedilink
      arrow-up
      11
      ·
      10 hours ago

      that’s a fair point I hadn’t really considered. it’s a kinda dumb reason to roll dual wifi hardware and I’d hate to give up one of only two usb ports, but that would technically solve my complaint. def worth considering!

  • Tramort@programming.dev
    link
    fedilink
    arrow-up
    7
    ·
    10 hours 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.

  • enbee@lemmy.blahaj.zone
    link
    fedilink
    arrow-up
    4
    ·
    9 hours 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?

  • non_burglar@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    10 hours 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.

  • anon5621@lemmy.ml
    link
    fedilink
    arrow-up
    4
    ·
    10 hours 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
      2
      ·
      10 hours 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
        1
        ·
        2 hours 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.

  • chrash0@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    9 hours ago

    man this brings back memories.

    i was able to install Arch on my 2012 Macbook Pro, but the networking was a huge issue. not only did the driver cause terrible screen tearing for some inexplicable reason, but i had the same problem even getting the dang thing installed. luckily i’m an Android developer and was able to share wifi over USB with an Android device.