Fedora CoreOS and Wifi

Background: I run a k0s cluster on Four RPi4. I currently use ubuntu but want to switch over to fedora CoreOS. I’m using an isolated switch for cluster communications and I use wifi on each device for network egress/ingress.

Question: What is the best way to get wifi support in FCOS? Do I have to use coreos assembler? The instances won’t have access to the internet without wifi so I can’t just script installing the NM-wifi plugin with rpmostree.

Similar Questions: Is there any live iso with Ignition and WiFi support? - Fedora Discussion

1 Like

Currently FCOS for ARM does not provide wifi modules. Your use-case is similar to mine save for the fact that I don’t use wifi on my raspberry pi 400 or 4Bs.

For a mostly “stock” FCOS ARM save for pre-loading and running microshift here is my ip addr output for the master node:

⬢[core@toolbox ~]$ 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
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether e4:5f:01:19:17:b3 brd ff:ff:ff:ff:ff:ff
    inet <SNIP> brd <SNIP> scope global dynamic noprefixroute eth0
       valid_lft 76042sec preferred_lft 76042sec
    inet6 <SNIP> scope link noprefixroute
       valid_lft forever preferred_lft forever
3: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
    link/ether 36:dc:dc:13:be:9f brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.0/32 brd 10.42.0.0 scope global flannel.1
       valid_lft forever preferred_lft forever
    inet6 fe80::34dc:dcff:fe13:be9f/64 scope link
       valid_lft forever preferred_lft forever
4: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
    link/ether 12:1e:bf:39:82:73 brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.1/24 brd 10.42.0.255 scope global cni0
       valid_lft forever preferred_lft forever
    inet6 fe80::101e:bfff:fe39:8273/64 scope link
       valid_lft forever preferred_lft forever
5: veth71086f53@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
    link/ether f2:77:e2:62:b0:0f brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::f077:e2ff:fe62:b00f/64 scope link
       valid_lft forever preferred_lft forever
6: veth92e5db72@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
    link/ether 42:07:f5:4e:5c:50 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::fc75:18ff:fe2d:b1aa/64 scope link
       valid_lft forever preferred_lft forever
7: veth2ce75233@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
    link/ether 12:c3:81:ac:d6:27 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    inet6 fe80::10c3:81ff:feac:d627/64 scope link
       valid_lft forever preferred_lft forever

If you’re interested in customizing your FCOS ARM installation, you can take some inspiration from this repo where I customize the FCOS image via some Ansible playbooks. If you wanted to enable wifi post-installation, you could simply write a playbook that uses the rpm-ostree Ansible module to layer the necessary wifi packages, such as bcm2711-firmware.aarch64, bcm283x-firmware.aarch64, and NetworkManager-wifi.aarch64 at a minimum.

From there, you should be able to load up k0s, k3s, microshift, or another preferred minimal k8s distribution and use the wifi devices for egress/ingress as intended.

2 Likes

Thanks for the helpful reply. I’m probably missing something but how can I use rpm ostree to install layers on the image after I run coreos-install but before I’ve actually booted up on the RPI where I’ll have no network connectivity? I’ve done this a bit for U-boot but what I’m not grasping is how the unpacked RPM make it to the correct place when I’m just coping them to the ESP Partiition. Provisioning Fedora CoreOS on the Raspberry Pi 4 :: Fedora Docs

What I meant was that as a post-installation playbook (when you’ve booted up the pi with the bare FCOS image) you could use Ansible to layer your wifi packages. This requires that you use ethernet in order to connect to the pi so that the playbook has a connection to the pi.

My build machine isn’t on that isolated network but I get the picture. I’ll either do that or try and use coreos-assembler

Sorry for resurrecting this old thread. Wouldn’t Fedora IoT edition be a good use-case here?

Fedora IoT comes with Wifi support built-in.

We now have a dedicated page for Wifi configuration on Fedora CoreOS.

You can also look at uCore from the Universal Blue project as it should include Wifi support.