This guide documents the suspend/resume Wi-Fi failure observed on a Lenovo IdeaPad running Ubuntu 25.10 desktop and walks through the exact remediation steps that were validated on October 27, 2025. Use it after a fresh OS install or kernel update if the problem reappears.
- Hardware: Lenovo IdeaPad Pro 5-14IAH10 with Intel BE200 (Wi-Fi 7) controller at PCI address
0000:01:00.0(device id8086:272b). - Kernel Symptom: After resuming from suspend (
s2idle), the wireless adapter stays in PCI power state D3cold and never returns, leavingwlp1s0f0unavailable. Logs show:Unable to change power state from D3cold to D0, device inaccessibletimeout waiting for FW reset ACKfollowed by repeated firmware crashes.
- User Experience: NetworkManager lists the device as unavailable; Wi-Fi toggle remains disabled until reboot.
- Root Cause: Intel iwlwifi firmware/driver combo for BE200 mishandles D3cold entry, especially on s2idle platforms. Preventing the device from entering D3cold avoids the failure.
nmcli device statusshowswlp1s0f0as unavailable after resume.journalctl -b | grep -i iwlwificontains D3cold errors./sys/bus/pci/devices/0000:01:00.0/d3cold_allowedreads1.
If all three conditions match, proceed with the fix below.
Create a oneshot systemd service that forces the Wi-Fi device out of D3cold during boot:
cat <<'EOF' > /etc/systemd/system/disable-wifi-d3cold.service
[Unit]
Description=Disable D3cold for Intel BE200 Wi-Fi
After=systemd-udevd.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo 0 > /sys/bus/pci/devices/0000:01:00.0/d3cold_allowed'
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now disable-wifi-d3cold.serviceInstall a system sleep hook that re-disables D3cold immediately after every suspend cycle:
cat <<'EOF' > /usr/lib/systemd/system-sleep/disable-wifi-d3cold.sh
#!/bin/sh
sysfs_path=/sys/bus/pci/devices/0000:01:00.0/d3cold_allowed
if [ "$1" = "post" ] && [ -w "$sysfs_path" ]; then
echo 0 > "$sysfs_path"
fi
exit 0
EOF
chmod 755 /usr/lib/systemd/system-sleep/disable-wifi-d3cold.shEnsure hotplug events keep the flag cleared (covers PCI rescans):
cat <<'EOF' > /etc/udev/rules.d/80-disable-wifi-d3cold.rules
# Disable D3cold for Intel BE200 Wi-Fi to prevent resume issues
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x272b", ATTR{d3cold_allowed}="0"
EOF
udevadm control --reload
udevadm trigger -v -p add /sys/bus/pci/devices/0000:01:00.0- Confirm the sysfs flag sticks:
Expected output:
cat /sys/bus/pci/devices/0000:01:00.0/d3cold_allowed
0. - Run a suspend/resume cycle (10-second rtcwake shown):
rtcwake -m mem -s 10
- After wake, check that Wi-Fi remains connected:
Device
nmcli device status
wlp1s0f0should stay connected. - Inspect recent logs for regressions:
There should be no new D3cold errors.
journalctl -b --since "$(date --iso-8601=minutes -d '-5 minutes')" | grep -i iwlwifi
- If
/usr/lib/systemd/system-sleepdoes not exist, create it before writing the hook (mkdir -p /usr/lib/systemd/system-sleep). - Reboot once after installing the service to verify everything happens automatically during boot.
- If the Wi-Fi device disappears from
lspciafter manual tinkering, runrebootinstead of attempting PCI rescans. - Adjust the PCI address in the scripts if hardware changes; confirm with
lspci -nn.
To undo the workaround:
systemctl disable --now disable-wifi-d3cold.service
rm -f /etc/systemd/system/disable-wifi-d3cold.service
rm -f /usr/lib/systemd/system-sleep/disable-wifi-d3cold.sh
rm -f /etc/udev/rules.d/80-disable-wifi-d3cold.rules
systemctl daemon-reload
udevadm control --reloadReboot afterwards to restore default power-management behavior (which will likely reintroduce the resume failure).
- Intel community reports on BE200 D3cold resume failures under Linux kernels 6.6–6.18 as of October 2025.
- Ubuntu 25.10 testing performed on October 27, 2025.
Keep this document with your backup scripts so you can reapply the fix quickly after OS reinstalls or kernel upgrades.
I have a new Lenovo Yoga Pro 7 14IAH10 laptop with the same Wi-Fi card. On a fresh Fedora 43 install with the latest iwlwifi firmware, I was experiencing a similar issue to you, except that I didn't see any D3cold errors in the journalctl logs, although I did see this: "timeout waiting for FW reset ACK followed by repeated firmware crashes." I've been trouble-shooting this all night and thought I'd try your fix, even though it didn't exactly match my symptoms. I'm pleased to say that it worked for me too - Wi-Fi now works after resuming from standby! I didn't implement your third (and optional) fix since it gave me a syntax error. But so far so good.
Thanks for posting this.