6

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?
  • 1
    Would not be easier booting with a live distribution? – Rui F Ribeiro Mar 4 '17 at 21:02
  • 1
    Firmware is code that is embedded in the actual device, it is not executed with the computer's general-purpose CPU. An example of firmware would be your computer's BIOS. A driver is code meant to interface with a device, in many ways it's just a specialised program not "that" much different from your general purpose apps. Drivers are executed with your computer's main CPU. So those are different things in most contexts. – undercat Mar 4 '17 at 21:39
  • 1
    There may be two reasons why the wiki page shows fewer features. First, simply because the Linux driver does not support the feature that the Mac driver has. In that case, it will be shown as unsupported even if the device does support it with a proper driver. The open source driver simply wouldn't be able to "speak" that feature. Second possible reason is simply the because wiki may have obsolete data... it's seldom a good idea to look for specialised up-to-date technical information on Wikipedia. Try the distros' wikis for more up-to-date data, or (if available) the driver's readme file. – undercat Mar 4 '17 at 21:58
  • As for the kernel wiki not having the driver listed, see this: wireless.wiki.kernel.org/en/users/drivers/b43/developers – undercat Mar 4 '17 at 22:00
3
+50

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.

  • +1 Your analogies really helped me; please keep answering questions using that technique. – mbigras Mar 19 '17 at 0:53
  • Is the firmware that needs to be installed onto the wireless device by the host OS called a "firmware image"? – mbigras Mar 19 '17 at 1:01
  • 1
    @mbigras It can be called an image, depending on the format. Image means most parts of it are substantially the same as they will be in memory when they are executed. Sometimes it might not be an image because it is in bytecodes that must be further compiled by the bootloader on the card, and it ends up looking completely different by the time it is executed. – DepressedDaniel Mar 19 '17 at 1:47
3

According to Debian, Broadcom has added support in WL version 6.30.223.248 for both hardware versions of your card - PCI IDs 14e4:43a0 and 14e4:4360

If you still need to find out exactly what version do you have, boot into Linux and run

lspci -nn | grep 0280

If you are going for a fresh Debian install, make sure to add the non-free category to /etc/apt/source.list to get the proprietary Broadcom driver.

  • Why grep for 0280? – mbigras Mar 19 '17 at 1:38
  • 1
    PCI device class 02, subclass 80 = Network Controller. Not all kind of network controllers are under 0280, but this Broadcom is. – claudiuf Mar 20 '17 at 2:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.