Is wifi on ARM64 officially supported?

Hi there,
I’m very new to FCOS. I’m trying to make it run on my Raspberry Pi.
It boots (but without Device Tree support).
Currently, I struggle with WiFi.
Before I start tinkering, can you tell me if it should work out of the box?

Here I read
Fedora CoreOS and Wifi:

and there is quite a long troubleshooting discussion that was too detailed for me

Yes WiFi is supported on arm. You will need a chip that the linux kernel supports.

I’m guessing your links are to people that have unsupported chips maybe?

Hello @packelend and welcome to :fedora: !

Here are the instructions for Provisioning Fedora CoreOS on the Raspberry Pi 4 :: Fedora Docs and Enabling Wi-Fi :: Fedora Docs.

Wow that was quick response

I guess I have to use one of those three broadcom drivers but which one?

How to figure out on fcos which WiFi hardware is installed?

As described in the docs I provided links to in my previous post, you can try to inspect your wireless card to determine what driver you need by running lspci (provided by the pciutils package) inside a Toolbx container.

2 Likes

FCOS and Fedora Server are both a pain to use wifi on an RPi.

The wpasupplicant packages are not installed on either of those AFAIK, ( I tested on Server) and so none of the wifi pieces are installed by default.

I gave up trying with Server and decided to use workstation on my RPi instead and the aarm64 image does seem to support wifi on the RPi 4B.

1 Like

I’m not sure for Fedora Server as I don’t use it, but Fedora CoreOS works just fine on Raspberry Pi 4. Enabling Wi-Fi should be straightforward if you follow the docs from my previous post.

1 Like

admin@CoreOS:~$ toolbox create
Image required to create Toolbx container.
Download registry.fedoraproject.org/fedora-toolbox:41 (348.7MB)? [y/N]: y
Created container: fedora-toolbox-41
Enter with: toolbox enter
admin@CoreOS:~$ toolbox enter
first toolbox enter
Welcome to the Toolbx; a container where you can install and run
all your tools.

 - Use DNF in the usual manner to install command line tools.
 - To create a new tools container, run 'toolbox create'.

For more information, see the documentation.

⬢ [admin@toolbx ~]$ lspci
bash: lspci: command not found
⬢ [admin@toolbx ~]$ sudo dnf install pciutils
Updating and loading repositories:
 Fedora 41 openh264 (From Cisco) - aarch64                                                                                                     100% |   6.9 KiB/s |   6.0 KiB |  00m01s Fedora 41 - aarch64                                                                                                                           100% | 942.5 KiB/s |  34.3 MiB |  00m37s Fedora 41 - aarch64 - Updates                                                                                                                 100% | 980.6 KiB/s |   7.5 MiB |  00m08sRepositories loaded.
Package                                                       Arch            Version                                                       Repository                             SizeInstalling:
 pciutils                                                     aarch64         3.13.0-5.fc41                                                 fedora                            488.6 KiBInstalling dependencies:
 pciutils-libs                                                aarch64         3.13.0-5.fc41                                                 fedora                            215.1 KiB
Transaction Summary:
 Installing:         2 packages

Total size of inbound packages is 152 KiB. Need to download 152 KiB.
After this operation, 704 KiB extra will be used (install 704 KiB, remove 0 B).
Is this ok [y/N]: y
[1/2] pciutils-libs-0:3.13.0-5.fc41.aarch64                                                                                                    100% | 253.0 KiB/s |  50.6 KiB |  00m00s[2/2] pciutils-0:3.13.0-5.fc41.aarch64                                                                                                         100% | 383.4 KiB/s | 101.2 KiB |  00m00s---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------[2/2] Total                                                                                                                                    100% | 264.0 KiB/s | 151.8 KiB |  00m01sRunning transaction
[1/4] Verify package files                                                                                                                     100% | 400.0   B/s |   2.0   B |  00m00s[2/4] Prepare transaction                                                                                                                      100% |   2.0   B/s |   2.0   B |  00m01s[3/4] Installing pciutils-libs-0:3.13.0-5.fc41.aarch64                                                                                         100% |   2.0 MiB/s | 216.2 KiB |  00m00s[4/4] Installing pciutils-0:3.13.0-5.fc41.aarch64                                                                                              100% | 173.0 KiB/s | 491.0 KiB |  00m03sComplete!

gives no result:

⬢ [admin@toolbx ~]$ lspci
⬢ [admin@toolbx ~]$ 

but wifi was ok, during fcos installer on Raspiberry OS

same hardware only swapped OS (SDCard).
On Raspberry OS:

raspi@raspberrypi:~ $ lspci
00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2711 PCIe Bridge (rev 20)
01:00.0 USB controller: VIA Technologies, Inc. VL805/806 xHCI USB 3.0 Controller (rev 01)

it looks like the wifi chip is: General features
although not officially documented, I find it here:

so only the

brcmfmac-firmware - Firmware for Broadcom/Cypress brcmfmac WiFi/Bluetooth adapters

can be used.
Same as on Raspberry OS

It works for me.

lspci
core@fcos-41-test-day-rpi4:~$ sudo rpm-ostree status 
State: idle
Deployments:
● fedora:fedora/aarch64/coreos/stable
                  Version: 41.20241109.3.0 (2024-11-25T04:48:48Z)
                   Commit: dde295efd7c27b354e0fb6acda8b379f1df01e3c9d0180633393c7c7f224b71d
             GPGSignature: Valid signature by 466CF2D8B60BC3057AA9453ED0622462E99D6AD1
core@fcos-41-test-day-rpi4:~$ toolbox enter
⬢ [core@toolbx ~]$ lspci 
00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2711 PCIe Bridge (rev 10)
01:00.0 USB controller: VIA Technologies, Inc. VL805/806 xHCI USB 3.0 Controller (rev 01)

all good now,

  1. uninstalled

    sudo rpm-ostree uninstall -y --allow-inactive \
       NetworkManager-wifi iwlwifi-dvm-firmware
    
  2. installed

admin@CoreOS:~$ sudo rpm-ostree install -y --allow-inactive \
    NetworkManager-wifi brcmfmac-firmware
Checking out tree 4c2285b... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2024-03-11T19:22:31Z solvables: 3
rpm-md repo 'updates' (cached); generated: 2024-12-31T03:06:35Z solvables: 13717
rpm-md repo 'fedora' (cached); generated: 2024-10-24T13:55:58Z solvables: 67029
rpm-md repo 'updates-archive' (cached); generated: 2024-12-31T03:14:05Z solvables: 19844
Resolving dependencies... done
Will download: 1 package (10.0 MB)
Downloading from 'updates'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Added:
  NetworkManager-wifi-1:1.50.0-1.fc41.aarch64
  brcmfmac-firmware-20241210-1.fc41.noarch
  iw-6.9-2.fc41.aarch64
  wireless-regdb-2024.01.23-2.fc41.noarch
  wpa_supplicant-1:2.11-3.fc41.aarch64
Changes queued for next boot. Run "systemctl reboot" to start a reboot
  1. reboot

    admin@CoreOS:~$ ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host noprefixroute 
           valid_lft forever preferred_lft forever
    2: enabcm6e4ei0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether e4:5f:01:54:1a:55 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.81/24 brd 192.168.1.255 scope global dynamic noprefixroute enabcm6e4ei0
           valid_lft 86380sec preferred_lft 86380sec
        inet6 fe80::9bb8:2411:c38f:9615/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
        link/ether 6a:dd:82:8f:ee:d4 brd ff:ff:ff:ff:ff:ff permaddr e4:5f:01:54:1a:56
    

but lspci is still empty :thinking: :question:

but how to connect to an Wi-Fi?

now I need a fix for Enabling DeviceTree on Pi 4 8 GB causes boot to fail (even Keyboard is not regoniced anymore) · Issue #1856 · coreos/fedora-coreos-tracker :rofl: :

got it working:

ip add
admin@CoreOS:~$ sudo nmcli connection up id ssid.2ghz  
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
admin@CoreOS:~$ ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enabcm6e4ei0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether e4:5f:01:54:1a:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.81/24 brd 192.168.1.255 scope global dynamic noprefixroute enabcm6e4ei0
       valid_lft 80689sec preferred_lft 80689sec
    inet6 fe80::9bb8:2411:c38f:9615/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether e2:c4:76:cb:96:b9 brd ff:ff:ff:ff:ff:ff permaddr e4:5f:01:54:1a:56
    inet 192.168.1.78/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
       valid_lft 86395sec preferred_lft 86395sec
    inet6 fe80::148d:194:59bc:7522/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:01:03:06:94 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

Networking/CLI - Fedora Project Wiki helped me a lot, you may want to add that to your tutorial (or Network Manager Quick Reference :: Fedora Docs the other is easier to read due to more space between paragraphs) + nm-settings-nmcli: NetworkManager Reference Manual

despite the fact, that I can ssh via WiFi

lspci

admin@CoreOS:~$ toolbox enter
⬢ [admin@toolbx ~]$ lspci
⬢ [admin@toolbx ~]$ sudo lspci
⬢ [admin@toolbx ~]$

is still empty.

Could that be an bug?
(related to Enabling DeviceTree on Pi 4 8 GB causes boot to fail (even Keyboard is not regoniced anymore) · Issue #1856 · coreos/fedora-coreos-tracker?)

Likely you have a usb wifi adapter. Try lsusb to find it.

nope, built-in adapter of the Raspberry Pi 4 - Raspberry Pi 4 modèle B

lsusb
admin@CoreOS:~$ toolbox enter

⬢ [admin@toolbx ~]$ lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub

Bus 001 Device 003: ID 14cd:1212 Super Top microSD card reader (SY-T18)

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Oh right its on the mmc bus(?).

I run Fedora Minimal (I think) on my RPi4 and it’s Wifi shows up as wlan0 when I run ip link. Since I do not use WiFi this is not something I configure, it is default.

I found the driver from looking in the /sys/class/net/wlan0 tree is brcmfmac.
Then I looked at dmesg add see this:

dmesg |grep brcm
[    0.662126] irq_brcmstb_l2: registered L2 intc (/soc/interrupt-controller@7ef00100, parent irq: 14)
[    0.667083] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[    0.667114] brcm-pcie fd500000.pcie:   No bus range found for /scb/pcie@7d500000, using [bus 00-ff]
[    0.667159] brcm-pcie fd500000.pcie:      MEM 0x0600000000..0x0603ffffff -> 0x00f8000000
[    0.667177] brcm-pcie fd500000.pcie:   IB MEM 0x0000000000..0x007fffffff -> 0x0400000000
[    0.667986] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[    0.776887] brcm-pcie fd500000.pcie: clkreq-mode set to default
[    0.778946] brcm-pcie fd500000.pcie: link up, 5.0 GT/s PCIe x1 (SSC)
[    2.709497] brcmstb-i2c fef04500.i2c:  @97500hz registered in polling mode
[    2.711473] brcmstb-i2c fef09500.i2c:  @97500hz registered in polling mode
[   11.220709] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
[   11.221619] usbcore: registered new interface driver brcmfmac
[   11.320845] brcmfmac mmc0:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin failed with error -2
[   11.691973] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)
[   11.692724] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Apr 15 2021 03:03:20 version 7.45.234 (4ca95bb CY) FWID 01-996384e2
[   11.702524] Bluetooth: hci0: BCM: 'brcm/BCM4345C0.raspberrypi,4-model-b.hcd'
[   11.702527] Bluetooth: hci0: BCM: 'brcm/BCM4345C0.hcd'
[   11.702530] Bluetooth: hci0: BCM: 'brcm/BCM.raspberrypi,4-model-b.hcd'
[   11.702533] Bluetooth: hci0: BCM: 'brcm/BCM.hcd'

If you do not have a wlan0 you could modprobe brcmfmac and see if the wlan0 shows up.

is empty but WiFi connection is working

  1. sudo ip link show wlan0
    admin@CoreOS:~$ sudo ip link show wlan0
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DORMANT group default qlen 1000
        link/ether e2:c4:76:cb:96:b9 brd ff:ff:ff:ff:ff:ff permaddr e4:5f:01:54:1a:56
    
  2. sudo dmesg |grep brcm
    admin@CoreOS:~$ sudo dmesg |grep brcm
    [   24.681936] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
    [   24.682470] usbcore: registered new interface driver brcmfmac
    [   24.696764] brcmfmac mmc0:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.Raspberry Pi Foundation-Raspberry Pi 4 Model B.bin failed with error -2
    [   25.160525] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)
    [   25.160975] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Apr 15 2021 03:03:20 version 7.45.234 (4ca95bb CY) FWID 01-996384e2
    
  3. sudo modprobe brcmfmac
    admin@CoreOS:~$ sudo modprobe brcmfmac
    admin@CoreOS:~$ sudo modprobe brcmf*
    modprobe: FATAL: Module brcmf* not found in directory /lib/modules/6.11.8-300.fc41.aarch64
    

Great you have wlan0!

Don’t worry about the modprobe as the module is being loaded automatically for you.