Nmtui <Radio> Wi-Fi Hardware: Missing

I have Rocky Lunix 9.5 minimal installed on my Mac Mini. Overall, it’s working exactly as I wanted.
The Bluetooth is up, the USB attached 5Gbps wisdPi WP-UT5 wired Ethernet is running, 1Gbps wired Ethernet is running, and it’s running 2 docker containers (MariaDB & phpMyAdmin) with no problems.

The last item on my list is to get the WiFi radio on and connected to my WiFi (because… reasons)
Using the “nmtui” tool, I see that in “Radio”,


The WiFi and WWAN shows “Hardware: Missing”.

Everything I’ve looked at seems like the OS detected the hardware and loaded drivers to run it.
But the WIFI-HW isn’t showing up.
What am I missing?

Debug (so far):

[root@rocky-mini-02 etc] lspci -nn | grep Wireless
02:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4360 802.11ac Dual Band Wireless Network Adapter [14e4:43a0] (rev 03)
[root@rocky-mini-02 etc] lspci -k
blah
blah
02:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4360 802.11ac Dual Band Wireless Network Adapter (rev 03)
        Subsystem: Apple Inc. Device 013b
        Kernel driver in use: bcma-pci-bridge
        Kernel modules: bcma
blah
[root@rocky-mini-02 ~] lshw -C network
  *-network
       description: Network controller
       product: BCM4360 802.11ac Dual Band Wireless Network Adapter
       vendor: Broadcom Inc. and subsidiaries
       physical id: 0
       bus info: pci@0000:02:00.0
       version: 03
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list
       configuration: driver=bcma-pci-bridge latency=0
       resources: irq:18 memory:a0600000-a0607fff memory:a0400000-a05fffff
  *-network
       description: Ethernet interface
       product: NetXtreme BCM57766 Gigabit Ethernet PCIe
       vendor: Broadcom Inc. and subsidiaries
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: enp3s0f0
       version: 01
       serial: 98:5a:eb:d9:76:ed
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm vpd msi msix pciexpress bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=tg3 driverversion=5.14.0-503.33.1.el9_5.x86_64 duplex=full firmware=57766a-v1.15 ip=192.168.123.17 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
       resources: irq:19 memory:a0700000-a070ffff memory:a0710000-a071ffff
  *-network
       description: Ethernet interface
       product: USB 5G Ethernet
       physical id: 6
       bus info: usb@2:1
       logical name: enp0s20u1c2
       serial: 34:c8:d6:b1:0c:03
       capabilities: ethernet physical
       configuration: autonegotiation=off broadcast=yes driver=cdc_ncm driverversion=5.14.0-503.33.1.el9_5.x86_64 duplex=half firmware=CDC NCM link=no multicast=yes port=twisted pair
[root@rocky-mini-01 ~]

I installed the NetworkManager-wifi and wpa_supplicant packages successfully.

Installed:
  NetworkManager-wifi-1:1.48.10-8.el9_5.x86_64      iw-6.9-1.el9.x86_64      wireless-regdb-2024.01.23-1.el9.noarch

Installed:
  wpa_supplicant-1:2.10-5.el9.x86_64

The “systemctl status wpa_supplicant.service” shows it running and enabled
And the nmcli has an entry for wifi now, but it doesn’t do the trick:

[root@rocky-mini-02 etc] nmcli r wifi on
[root@rocky-mini-02 etc] nmcli r
WIFI-HW  WIFI     WWAN-HW  WWAN
missing  enabled  missing  enabled
[root@rocky-mini-02 etc]

Rebooted several times just to check some other things, but has been no changes.

I can’t find anything in dmesg that seems related, but I may grep’ing for the wrong string.

[root@rocky-mini-02 etc] dmesg | grep iwl
[root@rocky-mini-02 etc]

The rfkill doesn’t show anything related to wifi:

[root@rocky-mini-02 ~] rfkill
ID TYPE      DEVICE      SOFT      HARD
 0 bluetooth hci0   unblocked unblocked
[root@rocky-mini-01 ~]

I check the “journalctl -u NetworkManager” and found what it looks like the HW starting successfully:

Apr 02 19:19:53 rocky-mini-02.us.org NetworkManager[789]: <info>  [1743646793.2510] manager: rfkill: Wi-Fi enabled by radio killswitch; enabled by state file
Apr 02 19:19:53 rocky-mini-02.us.org NetworkManager[789]: <info>  [1743646793.2513] manager: rfkill: WWAN enabled by radio killswitch; enabled by state file

And it looks like the drivers are running:

Apr 02 19:50:48 rocky-mini-02.us.org NetworkManager[789]: <info>  [1743648648.9916] audit: op="radio-control" arg="wireless-enabled:on" pid=1673 uid=0 result="success"
Apr 02 19:50:48 rocky-mini-02.us.org NetworkManager[789]: <info>  [1743648648.9923] audit: op="radio-control" arg="wwan-enabled:on" pid=1673 uid=0 result="success"

I found a GitHub for the Broadcom Linux hybrid wireless driver (v6.30.223.271, released Sep '15).
It has a driver for “4360” dual band chip (the Mac Mini has a BCM4360) and the lspci Device ID matches PCI Device ID listed for a “4360” chip (0x43a0)

[root@rocky-mini-02 etc] lspci -n | grep 14e4
02:00.0 0280: 14e4:**43a0** (rev 03) 
03:00.0 0200: 14e4:1686 (rev 01)
03:00.1 0805: 14e4:16bc (rev 01)
[root@rocky-mini-02 etc]#

Based on what I’ve found so far (and a relase date of Sept '25), I think they are already part of Rocky Linux.

[root@rocky-mini-02 etc] lsmod  | grep "brcmsmac\|b43\|ssb\|bcma\|wl"
bcma                   86016  0
[root@rocky-mini-02 etc]

Besides, I really don’t want to take a chance on building this code and having it break the OS because it is running okay now. I could live without the WiFi.

I did not install the GitHub Broadcom Bluetooth drivers because they seem to be built into the latest version of Rocky Linux (9.5).

It seems there used to be a package named “broadcom-wl” on rpmfusion.org, but that package name does not show up in a search on that site.
And, there was a package named broadcom-bt-firmware on that site; regardless, it was removed:

Removed 32_33 nonfree   broadcom-bt-firmware

But I doubted a BT package they would be related to getting the WiFi radio online.

Thanks for making it this far.

A wild guess here but maybe you have to disconnect ethernet and then try makeing a wifi connection.

nmcli device wifi connect <ssid> password <...>

Still no joy:

[root@rocky-mini-02 etc] nmcli device wifi connect anywifi  password junkpassword
Error: No Wi-Fi device found.
[root@rocky-mini-02 etc]

I confirmed this error mesaage comes with or without the wired Ethernet cable connected.

The odd thing I discovered (and posted at the top) was that the “nmcli r wifi on” shows no error message. But it doesn’t help either.

The comparison I’m making is like a Windows PC:
If the WiFi is “disabled” in the Device Manager, the PC will never show the WiFi neighborhood and any software trying to manage WiFi is going to fail because there is no WiFi hardware discovered. But the hardware’s drivers are fully loaded, and Windows “knows” the HW can be “enabled” any time.
Once the WiFi device is “enabled”, the wired network seems to take precedence over the WiFi, but WiFi still shows the WiFi neighborhood

Is there something in Rocky Linux that can Disable (and Enable) the WiFi HW (but still let the deeper levels of the OS know the HW is there and alive) so that programs like nmtui and nmcli can’t find the HW, and can’t manage it?

Regards

Some computers (laptops, anyway) have a special key combination that will enable and disable the onboard wifi. And others that will change the screen brightness, etc.

So did you disable it with a key combination?

It’s an Apple Mac Mini.
I did use an Apple 101-key USB attached keyboard to do the initial setup. But the keyboard hasn’t been connected since I put the Mini on my network (I ssh only). And it has no WiFi button.
I used that Apple keyboard because it had an key that would get it into the EFI boot menu ( + r). It turns out I didn’t need that key anyway because, I ended up doing the installation using a NVMe SSD USB-attached to a PC and then moved the NVMe SSD to the internal NVMe SSD slot of the Mac Mini.

I don’t know of any key combination on the Apple 101-key keyboard that would be interpreted by Rocky that would disable the WiFi hardware.

Yesterday was the first day I went looking for the BT and WiFi.
The BT was easy and everything came together just by adding the BT package.

[duser@rocky-mini-02 docker.compose]$ bluetoothctl
Waiting to connect to bluetoothd...[bluetooth] hci0 new_settings: powered bondable ssp br/edr le secure-conn
[bluetooth] Agent registered
[bluetooth] [CHG] Controller 18:81:0E:EE:6B:75 Pairable: yes
[bluetooth]

The WiFi is a mystery because it looks like all the drivers are installed, but there is something missing that allows the various networking tools to see it.

I don’t think those special key combinations are “interpreted by” any operating system. They are built into the firmware – the os, whichever it may be, doesn’t know or need to know anything about them. The keypresses are intercepted and acted on before they get to where the os would see them.

Now whether such a thing as these magic keypresses exist on an Apple Mac Mini is beyond the extent of my knowledge.

If the hardware is shown as missing, it would kinda make me believe that either the incorrect kernel module is loaded for it, or that particular kernel module doesn’t support the device in the machine because the particular one in this machine is newer than the one the kernel module was built for.

The minimal install does not include NetworkManager-wifi. If you have the entire, as opposed to boot system, you can sometimes install it that way, off the DVD, though I’ve found that often, that doesn’t work, due to the DVD having outdated packages. The other solution is to temporarily hook up an ethernet connection, and then install NetworkManager-wifi through that. And yes, it does work during install. Personally, I think it’s a bad choice to have it work during install but not have the option to actually install it, but I doubt that RH cares about what I think.

If you can get it working from the install DVD, you will first need to install wpa_supplicant, iw, and and wireless-regdb.

1 Like

The Apple Mac Mini’s 1Gbps wired Ethernet is not a problem. It’s been on the network since the beginning.
All packages were installed and updates done via the net, and not via the Rocky-9-5-boot.iso image.

I know my first post was pretty long, mainly because I supplied a lot of debugging details.
Those debug details included that I already installed those WiFi packages and their dependencies.
I did that before I posted here.

One of teh points in the 1st post is that there is a GitHub package from 2015 that has Broadcom drivers for this WiFi device (BCM4360).
And Rocky loaded a version of those when it was installed:

It may not have been the right version, but it’s supposed to be an “official” Broadcom release and it’s been on GitHub since 2015.
The hardware is missing in nmtui and nmcli, rfkill and some other tools.

But, according to all the debug info in the 1st post, it looks like the drivers are loaded, there are no error messages in the journal, dmesg or any of the low level details.

It looks like the kernel initilized the hardware properly.

I was really hoping someone would look at the debug info I posted and see if I’ve misinterpreted the details.

The GitHub for a Broadcom WiFi driver package was created in Sept '15 and last updated in July '24. It still lists the BCM4360 device in the release notes. I would have thought that would have been the basis for the Rocky dev team’s inclusion of a bcma.driver.
It’s certainly possible the hardware needs a different version than Rocky is using.
But I hesitate to go through the process of building the Github source code and potentially breaking something else to see if the WiFi hardware comes online, and then find out it was wasted time and effort if it doesn’t.

My apologies, I missed it in your post.

Not really that simple. Rocky is direct 1:1 with RHEL, so if RHEL don’t provide it then Rocky doesn’t have it either. The problem is, and you’ll find this with a lot of other projects like ddwrt or openwrt as well - a lot of them are not providing support where broadcom stuff is closed-source and difficult to get working. Sometimes on the ddwrt or openwrt projects, the devs will try to get something working if someone donates routers to them to use for developing and getting drivers working. Therefore, unless a Rocky Dev or any other Dev has the same device/hardware as you to be able to find a way forward to make their own driver and provided it, then it’s unlikely to be done.

If you haven’t tried already, take a look at ELREPO or RPMFUSION in case any of those repositories has a kernel module for your particular card. Or perhaps even kernel-ml or kernel-lt from elrepo instead of the 5.x kernel with Rocky since both of those are 6.x kernels and may have the support you need to get it working.

Also, according to pkgs.org - https://pkgs.org/search/?q=broadcom-wl there is broadcom-wl package in EPEL.

I enabled epel-next-release-9-9.el9.noarch and epel-release-9-9.el9 and did a search for broadcom-bt, but nothing showed up.

[root@rocky-mini-01 stuff] dnf --enablerepo="epel" search broadcom-wl
Extra Packages for Enterprise Linux 9 - x86_64                                                                   12 MB/s |  23 MB     00:02
Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64                                            2.6 kB/s | 2.5 kB     00:00
Extra Packages for Enterprise Linux 9 - Next - x86_64                                                           510 kB/s | 611 kB     00:01
No matches found.
[root@rocky-mini-01 stuff]

But, it would be nice to know what version the driver that is currently installed.

The driver bmca is one Broadcom drivers.

The package from pkgs.org looks like it has 30 dependencies to install “broadcom-wl-6.30.223.271-21.el9.noarch.rpm”
Just a trying to install it after I downloaded it started a chain of error messages that the was one more package missing for each package I downloaded.

Error:
 Problem: conflicting requests
  - nothing provides wl-kmod >= :6.30.223.271 needed by broadcom-wl-6.30.223.271-21.el9.noarch from @commandline

So, I found “kmod-wl-6.30.223.271-56.el9.x86_64.rpm” and tried to install that:

Error:
 Problem: conflicting requests
  - nothing provides akmod-wl = 6.30.223.271-56.el9 needed by kmod-wl-6.30.223.271-56.el9.x86_64 from @commandline

This went on for 2 more rpm packages, each with a similar error that it needed another package.

  • akmods-0.5.7-8.el9.noarch.rpm
  • kmodtool-1.1-4.el9.noarch.rpm
    I have no idea how much farther this will go.

Thanks for the suggestions.

My mistake, I read it wrong on the pkgs.org link - it’s in rpmfusion for the broadcom-wl with the nonfree enabled. But then I have a feeling you said it maybe disappeared from there, so perhaps pkgs.org is not up-to-date.

But just in case, perhaps try the elrepo kernels I mentioned just in case they have that module built into the kernel, as well as it being newer and potentially supporting a wider range of that model’s hardware. Both kernel-ml and kernel-lt in elrepo are 6.x kernels.

Sadly that’s all I can think of right now.

I did that in the last reply - and it couldn’t find a “broadcom-xl” package.

Thanks.

But did you try what I said instead, was to add elrepo and try kernel-ml or kernel-lt? I don’t see anywhere that you tried it? I’m not asking you to install broadcom-wl in that particular entry - just the kernels.

Elrepo is not the same as epel or rpmfusion. It’s an entirely different repo to add.

Added it and got the same answers:

[root@rocky-mini-01 /] yum search kernel-ml
ELRepo.org Community Enterprise Linux Repository - el9                                                          141 kB/s | 330 kB     00:02
No matches found.
[root@rocky-mini-01 /] yum search kernel-ml
Last metadata expiration check: 0:00:26 ago on Sun 06 Apr 2025 12:26:51 PM PDT.
No matches found.
[root@rocky-mini-01 /] yum search broadcom
Last metadata expiration check: 0:00:41 ago on Sun 06 Apr 2025 12:26:51 PM PDT.
No matches found.
[root@rocky-mini-01 /]

Is there a more specific way to make sure elrepo is being included in the search?

Do:

dnf repolist --all

I expect epel-kernel repo is disabled by default. For example:

root@rocky9:~# dnf list kernel-ml --enablerepo=elrepo-kernel

Last metadata expiration check: 0:00:04 ago on Sun 06 Apr 2025 09:46:36 PM CEST.
Available Packages
kernel-ml.x86_64                                    6.13.9-1.el9.elrepo                                    elrepo-kernel

you can either then do:

dnf install kernel-ml --enablerepo=elrepo-kernel

or

dnf config-manager --enable elrepo-kernel
dnf install kernel-ml