Linux – How to find the differences between macOS and linux wifi drivers on mac hardware

arch linuxnetwork-interfacenetworkingosxwifi

I'm running macOS on a macbook pro from late 2013 but am reading the Arch wiki on wifi configuration and focusing on the first part:

the first part is to identify and ensure the correct driver for your wireless device is installed

My goal is to get a better understanding of how to figure out:

  1. What is the physical wifi device on my machine?
  2. What drivers do I need to make it work?
  3. Will it work with linux?

First I went into the "About this mac" menu to get some information about the network interface (is that the physical network device?):

en0:
  Card Type:  AirPort Extreme  (0x14E4, 0x112)
  Firmware Version: Broadcom BCM43xx 1.0 (7.21.171.68.1a5)
  MAC Address:  60:03:08:8b:96:9c
  Locale: FCC
  Country Code: US
  Supported PHY Modes:  802.11 a/b/g/n/ac
  Supported Channels: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165
  Wake On Wireless: Supported
  AirDrop:  Supported
  AirDrop Channel:  149
  Auto Unlock:  Supported
  Status: Connected

From the arch wiki it's recommended to use lspci -k to get information about the wireless driver installed. The following example is given:

$ lspci -k
06:00.0 Network controller: Intel Corporation WiFi Link 5100
  Subsystem: Intel Corporation WiFi Link 5100 AGN
  Kernel driver in use: iwlwifi
  Kernel modules: iwlwifi

I think the two important pieces of information are the Card Type and the Firmware Version.

  • What is the difference between the Card Type and the Firmware Version?
  • Is the Firmware Version another word for a Driver?
  • Which terms in the output of lspci -k correspond to the output from "About this mac"?

Looking through the existing Linux drivers and Cmd+f for BCM43xx turns up nothing.

However, following a link to the Comparison of open-source wireless drivers wikipedia page works:

enter image description here

There is some green and some red. Some questions are:

  • How do I use this information to figure out if my wifi card will work?
  • How do I know what driver to install?
  • Is there a macOS BCM43xx driver and a linux BCM43xx driver?
  • Why does about this mac say all the PHY modes are supported but not the wiki page? Is it because they are different drivers?

Best Answer

What is the difference between the Card Type and the Firmware Version?

The Card Type field shown in "About this mac" appears to be broken. It seems to be combining the card's vendor ID with the subsystem vendor ID, which may or may not uniquely identify the card, and even if it does, only to the system vendor's native operating system.

The firmware version is the version of the firmware running on the device. A wireless card is sufficiently complicated that it has it's own CPU inside (for example, a microcontroller). The firmware version identifies the software running on the card's CPU.

Is the Firmware Version another word for a Driver?

No. The operating system driver runs on the main CPU. It is responsible for interfacing the OS to the PCI bus. The firmware runs on the wireless card. It is responsible for interfacing the PCI bus to the actual wireless radio hardware. It is kind of like a "driver" in the end, except you don't want to call it that because it would cause more confusion.

You can think of the PCI bus as a telephone line between a house (OS) and a nearby shed (wireless card). The driver is in the house talking on the telephone with the firmware, which is in the shed. The driver is subordinate to a chain of command in the house, but the firmware is king of the castle in the shed.

The situation is further complicated by the fact that many cards do not include the firmware on the card itself; the card itself just has a kind of bootloader that can load the firmware over PCI and then execute it. So you have to have a compatible firmware file on the OS side and the OS driver needs to know how to feed it in to fully bring up the card. But the firmware does not run in the OS, it's just fed to the card without (too much) processing.

Which terms in the output of lspci -k correspond to the output from "About this mac"?

None of them. Intel Corporation WiFi Link 5100 should have PCI ID [8086:4232], and definitely not a match to PCI vendor 0x14E4 (Broadcom). You're hitting different hardware from MacOS as from Linux; the complete output of lspci -nn might reveal what is going on.

How do I know what driver to install?

The card you did find in Linux has already been claimed by iwlwifi. If you can get running with that it's probably better to do that as the Intel cards have better Linux compatibility than the Broadcom ones.

Related Question