Using a MacBookPro11,1

Background

About a year ago I was given a MacBookPro11,1 (A1502 EMC 2678). This is a mid-2014 model. Its original owner considered it no longer useful to him, as Apple supposedly has dropped support for it in all current macOS releases.

For the first year I ended up using it with FreeBSD while concurrently running alpine linux in a bhyve, because that is how pragmatic problem solving works. This setup broke for me when upgrading to FreeBSD-14.2p3. Or rather, I didn't redo the few required additional steps. I figured the better path surely must be to fully switch to linux. So switched I did.

These are my thoughts from this experience. Please consider most of the text to describe an art project with limitied practical utility. A beautiful thing which will unfortunately never materialize.

Options

While there are literally hundreds of operating systems for intel machines in general, the remaining options drastically reduce when targetting specifically Apple hardware. Many might say macOS, which these computers come with, would be the natural choice. Yet I'm quite sure it is not for me. Apple software is far too opinionated for my taste. Not to mention failing at non-functional aspects such as respecting user privacy and what not. Maybe some versions of Microsoft Windows would run on the machine. I have not investigated that, since it practically becomes uninteresting for the same reasons as macOS. Windows might arguably even be worse than macOS.

With the most limiting factor being wifi, the only remaining kernels to consider are XNU and Linux. That might be a confusing statement, given that macOS was just ruled out as an option for me — Here are rabbit holes to dive down into. What one needs to initially understand is that the contract between Apple and Broadcom appears to have been that the latter license their wifi solution to the former and "take full responsability" from a business perspective. While I don't have actual insight in this, I would say it is fair to assume that only Broadcom has ever had legal access to the wifi driver source code. Neither Apple nor anyone else are likely to ever have had it. Broadcom have compiled and released drivers to platforms of their choice. Contractual obligations and other business reasons has of course influenced their selected platforms to cover the majority of the market. Still, unless one downloads a binary for one of their selected platforms, their wifi interfaces are fully useless.

Drivers for some interfaces have been reverse engineered and I might be sloppy in expressing where the boundaries of firmware and drivers are. Possibly also being technically incorrect about other details, but the main point here is that the laptop model I received fully lacks networking without Broadcom's driver blob.

FreeBSD

As mentioned above in the background section, I did run FreeBSD for about a year. With wifibox(8) providing an alpine based router in a bhyve. Installation is as simple as merely installing the wifibox packages from ports. That setup apparently the only way to the any networking under FreeBSD with these Broadcom BCM4360 (14e4:43a0) equipped laptops. Even though it required running Linux in a virtual machine, wifi actually worked quite well. So did most other things I tried. The internal speakers stayed silent, but sound did work when having headphones connected. As I have a separate dedicated laptop for video conferencing, I never did try the camera nor any other stuff I never needed. The thing which I noticed to not work was suspend/resume. When rebuilding the kernel without SMP I could get to a state where the machine actually woke up, but it was acting all weird after doing so. This lead to me having the laptop turned on for weeks, awake while I was asleep myself. It naturally also limitied the practical portability of the machine. Laptops just are better when suspend and resume are working than when not.

Darwin

Being mostly new to the Apple ecosystem, I assumed it ought to be possible to run some Darwin distribution on this machine. That is however a very faulty assumption. Just to make sure all readers are on track, XNU is the kernel used in Darwin. A detailed understanding can be found by reading the Wikipedia pages linked in the previous sentence, but in summary: OpenDarwin was shut down in 2006 and PureDarwin about a decade later. To the best of my understanding, the only currently alive Darwin derivatives are macOS and its siblings which Apple maintains for their other product lines.

In theory one could probably revive an open source Darwin distribution. It would be a lot of work. Way too much work to be realistic for me to engage in it. But since the "correct" kernel for this hardware is XNU, and that kernel should ideally deserve a life outside of macOS, its a fun thought experiment to entertain for a bit. As none of the open Darwin distributions ever included drivers for the closed broadcom wifi adapters, one may assume that was a huge factor in why the projects failed. When Apple hardware effectively was lacking network, macOS naturally became the only viable option.

If one were to build Darwin this year, to use it on an old macbook, would it be technically feasible to somehow yank the wifi drivers from a macOS installation and shoehorn them into a working state for that system? Unlikely, is my answer. Sure — in the sense that anything is possible, it should be doable. It wouldn't be fun though. Legally sketchy too. Not fun at all!

Something which seems like a more fun path to take appears when realizing there is a derivative of bhyve called xhyve. What if one could mimic the environment I ran for a year, but replacing FreeBSD with a Darwin. Wouldn't that be fun? Resurrecting Open/Pure-Darwin into its third incarnation seems like a suggestion to bring forward. Timely now with it being easter and all. Unfortunately that idea quickly falls flat due to:

xhyve is equivalent to the bhyve process but gains a subset of a userspace port of the vmm kernel module. SVM, PCI passthrough and the VMX host and EPT aspects are/[is] dropped.

Having PCI passthrough is of course absolutely essential. The requirement to implement that would be a bridge too far, to put it mildly. Especially considering how bringing back Darwin would need a huge amount of work, and that running xhyve on that rather than macOS probably already would be quite a project in itself.

macOS

While actually running macOS as it is intended is out of the question, one idea would be to boot it with a heavily modified configuration. With so intrusive changes that it would be unrecognizable as macOS, even if it would technically still be it. I'm imagining taking it to a state where it essentially only hosts a hypervisor running something more sensible operating system. It is a mad idea, which I will not pursuit. A quick search turned up these links on how to run macOS without a gui or reenable >console login, which seem to say that one actually could be able to disable everything unwanted on macOS and use it like a real unix system. Apple doesn't make it easy though. As is apparent from the content reachable by following those links, one might say Apple are even actively making it increasingly harder to turn their consumer devices into actual computers.

alpine linux

In the end I went with installing alpine linux, for at least two reasons. It is a nice distribution, and it is what I have experienced already working for this wifi hardware inside of bhyve. Getting working wifi turned out to still be a bit of a journey, which will likely be part of an upcoming text soon. Suspend and resume worked pretty much out of the box though!


2025-04-20 20:02:25 +0000
Thoughts and feedback may be directed at me using the channel listed on my contact page.

Previous post