How to Fix WiFi detected but not working on macOS
This guide describes how to fix WiFi detected but not working on macOS. By following this guide, you'll be able to fix the WiFi device and restore it to a functional state. The guide applies to Broadcom, Intel, and Atheros. External WiFi models are not supported by this guide.Overview
With our previous guide for fixing Intel WiFi, there are a few cases where the WiFi is detected in the system but doesn't seem to work at all, regardless of the OS X/macOS versions. A very similar case was reported by the forum member @Funnyland. This is because, the WiFi Device was not initialized properly, and as a reason, while the Bluetooth worked, the WiFi did not function at all, despite being detected by the system. However, this isn't normal and doesn't usually happen but only in rare cases. This is because the WiFi module might have been swapped/changed with the original one which was shipped from the factory and therefore the newer card may not be simply compatible or may not initialize properly. Other reasons may include some sort of failure or corruption that occurred during the firmware upload or the hardware initialization.On macOS, no WiFi information will be reported under the Hardware>WiFi section in the System Report. However, on Windows and Linux, Bluetooth and WiFi function normally, as they should. On macOS, only Bluetooth seems to be functional. With the appropriate kexts injected, the Bluetooth will function normally and the supported features will also work.
However, even when the WiFi kexts are injected properly, the WiFi won't even initialize at all. The kext will simply not attach to the WiFi device at all. This can be verified using the IOReg as shown below:
Even when renaming the PCI Bridge device (WiFi) to ARPT and injecting a few other parameters via the SSDT method, the kext still doesn't attach to the device:
Some of you might suspect that it could be possible that the WiFi isn't detected but that's not the case. As you can see the Hackintool does recognize the WiFi and despite the WiFi kext being injected, the kext doesn't load and as a result, the WiFi does not even start on a hardware level. Unless the hardware is initialized properly, the kext won't load and the device will not work.
The Bluetooth seems to be always functional as the BT operates on the USB bus and as long as the BT is initialized correctly and ports are mapped, it is expected to work. However, unlike Bluetooth, the WiFi also must be initialized correctly so that the kext can attach to it.
While the WiFi will be functional on other Operating Systems (such as Windows and Ubuntu), it will never work on macOS unless the root cause is fixed.
To make everyone familiar with the issue, let's get to know the @Funnyland machine on which this problem was discovered. @Funnyland has and CDW-C9852BE-00 (RTL8852BE) was the factory original card shipped with the system. As Realtek WiFi chipsets aren't supported on macOS, the original Realtek WiFi was replaced with an Intel AX210 WiFi Card. As he was not willing to use OCLP to patch when using Sonoma. In addition, he had no requirements for AirDrop, it made more sense to replace it with the Intel WiFi. However, despite the numerous attempts from @Funnyland, the WiFi didn't work even after following the guide precisely. To ensure there was nothing wrong with the installation, he even did a clean install and made the EFI from scratch and alas, the WiFi did not work even this time. Considering there could be a problem with macOS Sonoma, he did a clean install of macOS Ventura and unfortunately, the result was the same. Thinking the AX210 could be a faulty card, he bought another supported WiFi Card i.e. Intel AX200, and one more time, he was out of luck!
When he was left with no option, he tried the same card on Windows and Ubuntu and they worked perfectly, which gave him a ray of hope that the physical slot on the machine and the WiFi card were not where the problem was coming from. It was something on the macOS side and he finally showed to us and asked us to look into the issue. As a part of the diagnosis, we deployed an EFI from scratch (for the sake of accuracy) and did a clean install of macOS Sonoma 14.4 and it was no surprise that with our files, the WiFi didn't work as well. Therefore, it was time to dive deep and find the root cause of the WiFi not being initialized. After checking the IOReg, it made more sense to investigate the ACPI to check where is the problem coming from. Upon our initial inspection, we found something really interesting.
The WiFi is usually on the PCIe bus and the BT on the USB bus. As the WiFi card was failing to initialize, it made more sense to check for the power related issues. To begin, when checking the IOPowerManagement values from IOReg, the WiFi device had the following values:
As you can see, the CurrentPowerState is 0x0 which indicates that the WiFi Card is not fully powered on which is why the WiFi isn't initialized under macOS. Note that macOS handles things differently than Windows and Linux and therefore, the driver side on the macOS could not force power on the card or change the power state. Usually, the PCIe power state is defined in the ACPI tables. Now, it was time to check the ACPI tables for the root cause.
Although, its recommended to dump the ACPI tables for analyzing as within the OS, the OEM tables could be different due to the certain parameters injected by the config.plist and the bootloader itself. However, as there was no need to patch the tables, opening the DSDT using MaciASL>File>New from ACPI option would work fine. As per the Hackintool, the WiFi Device path is PCI0.GPP4 and an empty PCI bridge which was not defined (a common problem with several AMD platforms). Checking the Power State (PS0), the OEM DSDT has the following values defined:
It was the moment, we figured out why the WiFi Card was not being initialized. This was due to the power state. Certain hardware have different power state and not all devices supports all kinds of power state. Although, the power state continued to work even after changing the original WiFi Card (from Realtek) to Broadcom as this was verified under Windows and Linux and the Broadcom card worked fine there. A simple fix was to disable the Power State (PS0) so that the card can be fully active and initializes properly. This was achieved by a simple ACPI rename (_PS0 to _XPS):
Code:
Find: 5F505330
Replace: 58505330
Comment: Rename _PS0 to XPS0 (credit: EliteMacx86)
Implementing the above rename patch in the config.plist and rebooting the system resulted in success. The Card was now fully powered on and immediately detected in Hackintool>Peripherals:
The itlwm.kext was attached to the WiFi Device and now the WiFi was working normally:
The Power Management also seems to be working. As you can see, the CurrentPowerState has also changed from 0x0 to 0x02:
The WiFi has proper brand, BSSID and the properties seems to be working properly:
Last edited: