# M.2

Similar to mini PCIe, we get into the fun little realm of manufacturer lock-in, specifically that your manufacturer may have a whitelist that only supports their brand of wireless cards. Do your research on your hardware to see if there's a whitelist.

The whitelist is as follows:

  • Lenovo (7th gen and older)
    • 6th and 7th gen systems should have a BIOS update that remove the whitelist

The other thing to keep in mind is that M.2 wireless cards come in 2 variants:

  • A Key
  • E Key

Do your research to see what slot your hardware has (and don't mix up E key with mini PCIe).

Asus and Lenovo users should also see the Bluetooth section with regards to support, as 7th gen chipsets make things a bit more complicated.

M.2 Interface (opens new window):

# Supported Cards

  • BCM94360NG:
    • Fenvi BCM94360NG (A+E Key, natively supported as based off of genuine Apple Airport card) (BT 4.0) (This card has problems with available Windows drivers, so may not be suitable for those wishing to dual-boot)
  • BCM943602:
    • Dell DW1830 (A+E Key, quite wide so make sure your laptop has room) (BT 4.1)
  • BCM94352Z:
    • Fenvi AC1200 (A+E Key, natively supported as based off of a genuine Apple AirPort card) (BT 4.0)
    • Dell DW1560 (A+E Key) (BT 4.0)
    • Lenovo Lite-On WCBN802B (04X6020) (E Key) (BT 4.0)
    • AzureWave AW-CB162NF (A+E Key) (BT 4.0)
  • BCM94350ZAE:
    • Lenovo Foxconn T77H649 (A+E Key) (BT 4.1)
    • Lite-On WCBN808B (A+E Key) (BT 4.1)
    • Dell DW1820A (A+E Key) (BT 4.1)

Note: The BCM94350ZAE chipset doesn't support power management correctly in macOS so it needs to be disabled via property injection. This is not guaranteed to fix support on laptops, so do not buy this just for a laptop:

pci-aspm-default | Data | <00>

To find the PciRoot, run gfxutil (opens new window) in terminal and look for 14e4:43a3(PCI ID for the BCM94350ZAE):

All cards presented here besides the Fenvi and Apple AirPort cards require the following:

  • AirportBrcmFixup (opens new window)
  • BrcmPatchRAM (opens new window)
    • BrcmBluetoothInjector
      • Do not use with macOS 12, use BlueToolFixup instead
      • If you dual boot both macOS 11 or under and macOS 12, MinKernel and MaxKernel under Kernel -> Add in your config can be used to load one kext or the other in a specific OS
    • BrcmFirmwareData
    • BrcmPatchRAM fix:
      • BrcmPatchRAM3 for macOS 10.14+ (must be paired with BrcmBluetoothInjector unless on macOS 12)
      • BrcmPatchRAM2 for macOS 10.11-10.14
      • BrcmPatchRAM for macOS 10.10 and older
    • BlueToolFixup:
      • Used in place of BrcmBluetoothInjector on macOS 12
      • See above dual booting note