Post Metadata Information
-
[openEuler Version]: openEuler 22.03 LTS / 24.03 LTS (适用于各 SP 版本)
-
[Hardware/Resource Configuration]: Intel Core Ultra (Meteor Lake) platform laptop, Intel AX211 / BE200 wireless NIC (CNVi architecture, chip ID
ma-b0-gf-a0) -
[Issue Symptoms and Impact]:
- System defaults to CLI only, no graphical interface available;
ip linkfails to detect wireless interface (nowlan0/wlp...);- Kernel log
dmesgreportserror -2(missing firmware) orFailed to run INIT ucode: -5(hardware initialization failure).
-
[Previously Tried but Ineffective Methods]: Downloading only a single
.ucodedriver file from the internet and copying it to/lib/firmware/, without adding the.pnvmRF calibration file or rebuildinginitramfs.
1. Prerequisites: Emergency Internet via Mobile USB Tethering
When no Ethernet adapter or Wi-Fi driver is available, use your smartphone’s USB tethering to install packages:
-
Connect your phone to the computer via USB cable.
-
On your phone: Go to
Settings ➔ Personal Hotspot / Connection & Sharing ➔ Enable USB Tethering. -
On the computer: Verify connectivity in the openEuler terminal:
Bash
ping -c 4 baidu.comReceiving ICMP replies indicates successful network connection.
2. Phase One: Install Graphical Desktop (DDE or UKUI — Choose One)
Option A: Install DDE Desktop (Deepin Desktop Environment)
Bash
# 1. Update package sources and install DDE suite
sudo dnf update -y
sudo dnf groupinstall -y "DDE"
# 2. Set default boot to graphical mode and start display manager
sudo systemctl set-default graphical.target
sudo systemctl start lightdm
Option B: Install UKUI Desktop (Kylin UKUI)
Bash
# 1. Update package sources and install UKUI suite
sudo dnf update -y
sudo dnf groupinstall -y "UKUI"
# 2. Set default boot to graphical mode and start display manager
sudo systemctl set-default graphical.target
sudo systemctl start lightdm
3. Phase Two: Fix Intel Wireless NIC Driver (Fully Resolve Wi-Fi)
Step 1: Check Kernel Logs to Identify Failure Type
Bash
sudo dmesg | grep -i iwlwifi | tail -n 10
- Error
error -2: Missing.ucodefirmware file. - Error
INIT ucode: -5: Missing.pnvmRF calibration file required for Intel CNVi architecture.
Step 2: Download Full Linux Firmware Package
Bash
cd /tmp
sudo dnf install -y wget tar
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-main.tar.gz
tar -zxvf linux-firmware-main.tar.gz
Step 3: Complete .ucode and .pnvm Firmware Files
Bash
# 1. Create hardware mapping directory
sudo mkdir -p /usr/lib/firmware/intel
# 2. Copy wireless NIC main firmware (.ucode)
sudo cp -v linux-firmware-main/iwlwifi-ma-b0-gf-a0* /usr/lib/firmware/ 2>/dev/null || true
# 3. Copy critical .pnvm RF configuration files (keep one copy in root and one in intel/ subdir)
sudo cp -v linux-firmware-main/*.pnvm /usr/lib/firmware/ 2>/dev/null || true
sudo cp -v linux-firmware-main/intel/*.pnvm /usr/lib/firmware/intel/ 2>/dev/null || true
# 4. Set proper file permissions
sudo chmod 644 /usr/lib/firmware/iwlwifi-ma-b0-gf-a0*
Step 4: Reload Driver Module and Verify
Bash
# 1. Stop NetworkManager to free up driver
sudo systemctl stop NetworkManager
# 2. Unload and reload modules in reverse dependency order
sudo modprobe -r iwlmvm mac80211 2>/dev/null || true
sudo modprobe -r iwlwifi
sudo modprobe iwlwifi
# 3. Restart network service
sudo systemctl start NetworkManager
# 4. Check network interface
ip link
If wlp0s20f3 or wlan0 appears in the list, the wireless card is successfully activated.
Step 5: Make Changes Persistent (Prevent Boot Failure)
Bash
# 1. Disable power saving to prevent network disconnection
echo "options iwlwifi power_save=N" | sudo tee /etc/modprobe.d/iwlwifi.conf
# 2. Enable NetworkManager to start at boot
sudo systemctl enable NetworkManager
# 3. Force rebuild initramfs boot image (MUST be executed)
sudo dracut --force
4. Phase Three: Common Pitfalls and Troubleshooting Guide
| Issue Category | Symptom / Error | Root Cause | Standard Solution |
|---|---|---|---|
| Path Misunderstanding | Moving files to /lib/firmware still doesn’t work |
openEuler uses UsrMove architecture; actual path is /usr/lib/firmware/ |
Always write to absolute path /usr/lib/firmware/, preserving /intel/ subdirectory |
| Firmware Missing | dmesg shows error -2 |
Missing .ucode file for corresponding API version (59~83) |
Extract and install correct .ucode from official firmware repository |
| Calibration Missing | Failed to run INIT ucode: -5 |
AX211/CNVi NIC strongly depends on .pnvm hardware calibration file |
Extract all .pnvm files and copy them to both /usr/lib/firmware/ and /usr/lib/firmware/intel/ |
| Module in Use | modprobe -r reports Module in use |
iwlmvm module or NetworkManager is actively using the driver |
Stop NetworkManager first, then unload modules in reverse dependency order |
| Reboot Failure | Works manually, but disappears after reboot | New firmware not included in initial boot image (initramfs) |
After adding firmware, always run sudo dracut --force to rebuild the initramfs |
5. Phase Four: How to Seek Help in Community or Ask AI
When encountering unknown errors, follow the standard format below when posting on forums or submitting prompts to AI:
1. Question Template Structure
[System & Hardware]: openEuler version + hardware model (CPU/WiFi card)
[Reproduction Steps & Commands]: Full list of executed terminal commands
[Log Output]: Complete output from
dmesg | grep -i <keyword> | tail -n 15[Request]: Need specific diagnostic guidance and ready-to-run terminal commands for fixing
2. Example Question
Plaintext
[System & Hardware]: openEuler 22.03 LTS SP1, Intel Core Ultra 7 (AX211 wireless NIC)
[Reproduction Steps & Commands]: Ran `sudo modprobe iwlwifi`, but the Wi-Fi card did not activate.
[Log Output]:
[ 9709.463463] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-ma-b0-gf-a0-66.ucode failed with error -2
[ 9709.463540] iwlwifi 0000:00:14.3: no suitable firmware found!
[Request]: Please analyze the cause of this `error -2` and provide exact terminal commands to obtain and install the correct firmware on openEuler.
If you encounter any other errors while following this guide, please reply below with terminal logs. We will continuously update and improve this post.