# FreeBSD on Mac Book Pro?



## lazarus long (Jan 8, 2021)

I have a 2011 17" Mac Book Pro (2.5 GHz Sandybridge i7, 16 GB RAM) with a dead AMD GPU. I disabled the dead GPU and am running on the integrated graphics.

It is no longer supported by macOS, so I installed linux (Mint 19) on it. Some things work well, some things not so well. I was pleasantly surprised that the hardware seems to be fairly well supported. However, when I run into a problem, researching for a fix seems to frequently show  a large number of partial and contradictory 'fixes'. Sometimes it feels like a half-baked hodge podge, where there are a multitude of different packages/tools that may work or may not play well together.

Since the BSDs are packaged as a complete os rather than a hodge podge of disjoint utilities and packages, I'm wondering if it might work better.

I tried researching supported hardware, but the lists I've found talk more about motherboards/chipsets, not complete machines. I'm unsure if it will work on my Mac, or if it will only sort of run in a crippled mode.

I am looking for a desktop replacement (not a server) with some sort of GUI, which I think FreeBSD includes. I don't really care if it isn't the prettiest desktop in the world, at this point I am just looking for something that will work without a lot of endless tweaking.


----------



## SirDice (Jan 8, 2021)

lazarus long said:


> Since the BSDs are packaged as a complete os rather than a hodge podge of disjoint utilities and packages, I'm wondering if it might work better.





lazarus long said:


> I am looking for a desktop replacement (not a server) with some sort of GUI, which I think FreeBSD includes.


FreeBSD is a complete OS, yes. But X, Gnome, KDE and everything else is NOT part of that OS. Those are considered third party software, you install them by using ports or packages. FreeBSD does not include a GUI as standard but you can install a GUI if you want. There's a limited choice included on the DVD images but I would recommend not using those unless you have a really bad internet connection. Those packages have been created when the -RELEASE was made and are not updated after that point in time. So typically when you install those they're already out of date and need to be updated (using pkg-upgrade(8) for example). Might as well install the latest versions from the repositories. In the repositories we have a very wide selection of window managers, desktops etc. 



lazarus long said:


> I tried researching supported hardware, but the lists I've found talk more about motherboards/chipsets, not complete machines.


It's the chipsets that are important, anyone can build a machine using any kind of chipset, including Apple. So if one chipset is supported it will be supported for _all_ machines/boards that use that chipset. Most of the time anyway, there could be some odd implementation differences but the most common variants are typically supported.



lazarus long said:


> I'm unsure if it will work on my Mac, or if it will only sort of run in a crippled mode.


As it's a somewhat older Mac I'm fairly certain most of the hardware is supported. But I'm not 100% sure. You can simply boot from the install media, drop to a shell and have a look with tools like dmesg(8) and/or `pciconf -lv`. You can do this without having to install anything yet.


----------



## lazarus long (Jan 12, 2021)

That's great I can test it without doing a full install. I haven't been able to get around to it yet, but I will definitely test it. I am guessing the install media creates a command-line only text environment?

One thing I guess I never quite understood about linux or BSD - is hardware detection done by the kernel, or the bundled processes that run on top of it? For example plugging in external drives, mice, keyboards, etc.

hardware recognition is mostly ok on linux, except it did not find my wireless hardware and I had to install that manually. My microphone also doesn't work. It did when first installed, but apparently I installed something that broke it. I'm hoping BSD will have less of this kind of mess.


----------



## SirDice (Jan 12, 2021)

lazarus long said:


> That's great I can test it without doing a full install. I haven't been able to get around to it yet, but I will definitely test it. I am guessing the install media creates a command-line only text environment?


Yes, it's a shell only (command line). But it's more then enough to look at dmesg(8) and `pciconf -lv` for example. You can also load additional kernel modules if needed. It's enough to figure out what kind of chips were used, based on that information you can make a good prediction if things will work or not. 



lazarus long said:


> One thing I guess I never quite understood about linux or BSD - is hardware detection done by the kernel, or the bundled processes that run on top of it? For example plugging in external drives, mice, keyboards, etc.


Hardware detection is done by the kernel, as far as I understood the process it uses ACPI to enumerate the hardware and based on various IDs found in that list it will load a particular driver. External devices like USB are handled a little different (because USB has its own bus and protocols) but the basic principle is the same, the bus is scanned and based on IDs or profiles drivers are attached. We do have a process called devd(8) that can react to state changes (things being plugged in or out) and it starts, for example, moused(8) if a USB mouse is plugged in.



lazarus long said:


> hardware recognition is mostly ok on linux, except it did not find my wireless hardware and I had to install that manually.


FreeBSD doesn't work that much different I think (don't know enough about Linux though), we have a GENERIC kernel that already has the most common hardware drivers included. Everything else can be loaded as a module if you need them (kldload(8)/kldunload(8)/kldstat(8)). Actually _every_ driver is a module, the kernel config just has a bunch of modules statically builtin.






						[base] Contents of /releng/12.2/sys/amd64/conf/GENERIC
					






					svnweb.freebsd.org


----------



## aponomarenko (Jan 18, 2021)

Try helloSystem LiveCD. It's pure FreeBSD + MacOS-like desktop included.

Check for BSD compatibility with the help of this article.


----------



## lazarus long (Feb 19, 2021)

I finally got around to installing FreeBSD on my MacBook Pro. It looks like it is working, except....

Wifi isn't working. After reading the FreeBSD Handbook, it appears that during installation, it should have detected my wifi hardware and guided me through its setup. It did find the ethernet port, but I didn't have a handy method to plug in, so I skipped it.

sysctl net.wlan.devices shows that both the ethernet and wireless interfaces were detected:
ethernet: Broadcom NetXtreme BCM 57765
WIFI: BCM 4331 802.11a/b/g/n

So I am a bit confused as to why the installer wouldn't set it up.
Next I tried to find instructions for setting up wifi after the fact, and I am greatly confused as to what I need to do.

I'm wondering if I can download a desktop environment on a different machine, sneakernet it over, and install it. Would the desktop environment have less cryptic tools for setting up wifi?


----------



## Machiaveli (Feb 21, 2021)

lazarus long said:


> sysctl net.wlan.devices shows that both the ethernet and wireless interfaces were detected:
> ethernet: Broadcom NetXtreme BCM 57765
> WIFI: BCM 4331 802.11a/b/g/n
> 
> ...


Tha network card isn't yet supported by FreeBSD.


----------



## lazarus long (Feb 22, 2021)

Machiaveli said:


> Tha network card isn't yet supported by FreeBSD.


Hmm, that's a bit of a show stopper. I looked at the supported hardware list for NetBSD, I didn't see it listed there either.


----------



## Machiaveli (Feb 22, 2021)

lazarus long said:


> Hmm, that's a bit of a show stopper. I looked at the supported hardware list for NetBSD, I didn't see it listed there either.


Grab an USB wifi dongle and you are set if that's the only thing preventing you from running FreeBSD (it's what I've done on my MBP mid-2012 until proper support is done)


----------



## Jose (Feb 22, 2021)

Machiaveli said:


> Grab an USB wifi dongle and you are set if that's the only thing preventing you from running FreeBSD (it's what I've done on my MBP mid-2012 until proper support is done)


What are the suggested USB dongles for this purpose? Is there a list somewhere?


----------



## kpedersen (Feb 22, 2021)

Jose said:


> What are the suggested USB dongles for this purpose? Is there a list somewhere?


Since the popularity of Raspberry Pi, I tend to just buy 2 or 3 different ones from i.e: https://thepihut.com/products/usb-wifi-adapter-for-the-raspberry-pi

Because they need to work out of the box with Raspbian, they are generally well documented and have open drivers already.


----------



## Machiaveli (Feb 23, 2021)

Jose said:


> What are the suggested USB dongles for this purpose? Is there a list somewhere?


FWIW, I'm using a TP-Link TL-WN725N which works great.


----------

