Skip to content

Commit

Permalink
Add missing wifi firmware checks
Browse files Browse the repository at this point in the history
Some wifi-firmwares will be split into sub-packages in fedora 40
We will keep them in until fedora 41, but display a warning message
in the console if NetworkManager-wifi is layered without the most
popular the wifi firmwares.

See coreos/fedora-coreos-tracker#1575

Also link to FAQ entry.
see coreos/fedora-coreos-docs#629
  • Loading branch information
jbtrystram committed Apr 22, 2024
1 parent 0566985 commit 85c7c1b
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 0 deletions.
3 changes: 3 additions & 0 deletions overlay.d/15fcos/usr/lib/systemd/system-preset/45-fcos.preset
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ enable coreos-check-ssh-keys.service
enable coreos-check-cgroups-version.service
# https://fedoraproject.org/wiki/Changes/EnableFwupdRefreshByDefault
enable fwupd-refresh.timer
# Check if wifi firmwares are missing when NetworkManager-wifi is installed
# https://github.com/coreos/fedora-coreos-tracker/issues/1575
enable coreos-check-wireless-firmwares.service
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
[Unit]
Description=Check if cgroupsv1 Is Still Being Used
ConditionControlGroupController=v1
Before=systemd-user-sessions.service
[Service]
Type=oneshot
ExecStart=/usr/libexec/coreos-check-cgroups-version
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ ConditionKernelCommandLine=ignition.firstboot
Before=systemd-user-sessions.service

[Service]
Before=systemd-user-sessions.service
Type=oneshot
ProtectHome=read-only
ExecStart=/usr/libexec/coreos-check-ssh-keys
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# This service is used for printing a message if
# some wireless firmwares are missing
[Unit]
Description=Check For Wireless Firmware Packages
Before=systemd-user-sessions.service
[Service]
Type=oneshot
ExecStart=/usr/libexec/coreos-check-wireless-firmwares
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
63 changes: 63 additions & 0 deletions overlay.d/15fcos/usr/libexec/coreos-check-wireless-firmwares
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#!/usr/bin/bash
# This script checks if
# and will prints a message to the serial console
# to warn the user about missing wifi firmware messages
# and provide remediation steps
# See https://github.com/coreos/fedora-coreos-tracker/issues/1575

set -euo pipefail

# List of wifi-firmwares
# SOURCE: https://pagure.io/fedora-comps/blob/main/f/comps-f41.xml.in#_2700
firmwares=(
atheros-firmware
b43-fwcutter
b43-openfwwf
brcmfmac-firmware
iwlegacy-firmware
iwlwifi-dvm-firmware
iwlwifi-mvm-firmware
libertas-firmware
mt7xxx-firmware
nxpwireless-firmware
realtek-firmware
tiwilink-firmware
atmel-firmware
bcm283x-firmware
zd1211-firmware
)
# Get firmware names into `a|b|c|d` regex string
regex=$(IFS='|'; echo "${firmwares[*]}")

layered_packages="$(rpm-ostree status --json -b | jq -r '.deployments[0]."requested-packages"[]')"

if grep -q "NetworkManager-wifi" <<< "$layered_packages"; then
if grep -qP $regex <<< "$layered_packages"; then
exit 0
fi
else
exit 0
fi

# Change the output color to yellow
warn=$(echo -e '\033[0;33m')
# No color
nc=$(echo -e '\033[0m')

motd_path=/run/motd.d/30_wireless_firmwares_warning.motd

cat << EOF > "${motd_path}"
${warn}
##########################################################################
WARNING: The NetworkManager-wifi is a requested layered package on this
system, but no Wi-Fi drivers are requested. The Wi-Fi drivers will no
longer be included by default in the future.
More context and remediation steps are available in the following FAQ entry:
https://docs.fedoraproject.org/en-US/fedora-coreos/sysconfig-enabling-wifi/
To disable this warning, use:
sudo systemctl disable coreos-check-wireless-firmwares.service
##########################################################################
${nc}
EOF

0 comments on commit 85c7c1b

Please sign in to comment.