Ubuntu – Dell XPS 15 (9550) rebooting after suspend

16.04dellkernelsuspend

I have a dell XPS (9550 revision – this is essentially the same hardware as the Precision 5510 which is available with Ubuntu out-of-the-box) and amazingly it pretty much always worked properly out of the box with 16.04. In the last few days though, suspend has stopped working, when on battery power1.

Basically the laptop appears to suspend, but when I wake it up, it goes through the normal boot process.

Here are the last few lines from /var/log/syslog from the suspend logging:

Jan 14 13:06:10 xps15-laptop whoopsie[827]: [13:06:10] offline
Jan 14 13:06:11 xps15-laptop kernel: [   15.829125] IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready
Jan 14 13:06:11 xps15-laptop wpa_supplicant[1300]: nl80211: deinit ifname=p2p-dev-wlp2s0 disabled_11b_rates=0
Jan 14 13:06:11 xps15-laptop nm-dispatcher: req:3 'down' [wlp2s0]: new request (1 scripts)
Jan 14 13:06:11 xps15-laptop nm-dispatcher: req:3 'down' [wlp2s0]: start running ordered scripts...
Jan 14 13:06:11 xps15-laptop wpa_supplicant[1300]: nl80211: deinit ifname=wlp2s0 disabled_11b_rates=0
Jan 14 13:06:12 xps15-laptop systemd[1]: Reached target Sleep.
Jan 14 13:06:12 xps15-laptop systemd[1]: Starting Suspend...
Jan 14 13:06:12 xps15-laptop systemd-sleep[2271]: Failed to connect to non-global ctrl_ifname: (nil)  error: No such file or directory
Jan 14 13:06:12 xps15-laptop systemd-sleep[2273]: /lib/systemd/system-sleep/wpasupplicant failed with error code 255.
Jan 14 13:06:12 xps15-laptop systemd-sleep[2271]: Suspending system...

Does anything jump out there? The lines following that seem to just be what'd you'd expect from a cold boot:

Jan 14 13:06:54 xps15-laptop rsyslogd: [origin software="rsyslogd" swVersion="8.16.0" x-pid="923" x-info="http://www.rsyslog.com"] start
Jan 14 13:06:54 xps15-laptop rsyslogd-2222: command 'KLogPermitNonKernelFacility' is currently not permitted - did you already set it via a RainerScript command (v6+ config)? [v8.16.0 try http
://www.rsyslog.com/e/2222 ]
Jan 14 13:06:54 xps15-laptop rsyslogd: rsyslogd's groupid changed to 109
Jan 14 13:06:54 xps15-laptop rsyslogd: rsyslogd's userid changed to 105
Jan 14 13:06:54 xps15-laptop systemd-modules-load[228]: Inserted module 'lp'
Jan 14 13:06:54 xps15-laptop systemd-modules-load[228]: Inserted module 'ppdev'
Jan 14 13:06:54 xps15-laptop systemd-modules-load[228]: Inserted module 'parport_pc'
Jan 14 13:06:54 xps15-laptop systemd[1]: Started Apply Kernel Variables.
Jan 14 13:06:54 xps15-laptop loadkeys[220]: Loading /etc/console-setup/cached.kmap.gz
Jan 14 13:06:54 xps15-laptop systemd[1]: Started Set console keymap.
Jan 14 13:06:54 xps15-laptop systemd[1]: Started Create Static Device Nodes in /dev.
Jan 14 13:06:54 xps15-laptop systemd[1]: Starting udev Kernel Device Manager...
Jan 14 13:06:54 xps15-laptop systemd[1]: Started udev Kernel Device Manager.
Jan 14 13:06:54 xps15-laptop systemd[1]: Starting Remount Root and Kernel File Systems...
Jan 14 13:06:54 xps15-laptop systemd[1]: Started Remount Root and Kernel File Systems.
Jan 14 13:06:54 xps15-laptop systemd[1]: Reached target Local File Systems (Pre).

Not too much has changed lately except that the kernel hit version 4.4.0-59 (previously was 4.4.0-57), and I tweaked a BIOS option to disable my embedded sound device (since restored with no change).

Finally, here's what a successful suspend/wakeup looks like (when on battery power):

Jan 14 13:15:49 xps15-laptop kernel: [  540.190809] IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready
Jan 14 13:15:49 xps15-laptop wpa_supplicant[1298]: nl80211: deinit ifname=p2p-dev-wlp2s0 disabled_11b_rates=0
Jan 14 13:15:49 xps15-laptop dbus[803]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service'
Jan 14 13:15:49 xps15-laptop systemd[1]: Reached target Sleep.
Jan 14 13:15:49 xps15-laptop systemd[1]: Starting Suspend...
Jan 14 13:15:49 xps15-laptop systemd[1]: Starting Network Manager Script Dispatcher Service...
Jan 14 13:15:49 xps15-laptop dbus[803]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Jan 14 13:15:49 xps15-laptop systemd[1]: Started Network Manager Script Dispatcher Service.
Jan 14 13:15:49 xps15-laptop nm-dispatcher: req:1 'down' [wlp2s0]: new request (1 scripts)
Jan 14 13:15:49 xps15-laptop nm-dispatcher: req:1 'down' [wlp2s0]: start running ordered scripts...
Jan 14 13:15:49 xps15-laptop wpa_supplicant[1298]: nl80211: deinit ifname=wlp2s0 disabled_11b_rates=0
Jan 14 13:15:54 xps15-laptop whoopsie[931]: [13:15:54] Cannot reach: https://daisy.ubuntu.com
Jan 14 13:15:54 xps15-laptop whoopsie[931]: [13:15:54] offline
Jan 14 13:15:54 xps15-laptop whoopsie[931]: [13:15:54] Cannot reach: https://daisy.ubuntu.com
Jan 14 13:15:59 xps15-laptop systemd-sleep[2690]: Selected interface 'wlp2s0'
Jan 14 13:15:59 xps15-laptop systemd-sleep[2690]: 'SUSPEND' command timed out.
Jan 14 13:15:59 xps15-laptop systemd-sleep[2696]: /lib/systemd/system-sleep/wpasupplicant failed with error code 254.
Jan 14 13:15:59 xps15-laptop systemd-sleep[2690]: Suspending system...
Jan 14 13:16:52 xps15-laptop kernel: [  550.254337] PM: Syncing filesystems ... done.
Jan 14 13:16:52 xps15-laptop kernel: [  550.268354] PM: Preparing system for sleep (mem)
Jan 14 13:16:52 xps15-laptop kernel: [  550.268979] Freezing user space processes ... (elapsed 0.002 seconds) done.
Jan 14 13:16:52 xps15-laptop kernel: [  550.271751] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
Jan 14 13:16:52 xps15-laptop kernel: [  550.273159] PM: Suspending system (mem)
Jan 14 13:16:52 xps15-laptop kernel: [  550.273197] Suspending console(s) (use no_console_suspend to debug)
Jan 14 13:16:52 xps15-laptop kernel: [  550.486068] brcmf_fil_cmd_data: bus is down. we have nothing to do.
Jan 14 13:16:52 xps15-laptop kernel: [  550.613975] nouveau 0000:01:00.0: DRM: resuming kernel object tree...
Jan 14 13:16:52 xps15-laptop kernel: [  550.717482] nouveau 0000:01:00.0: priv: HUB0: 10ecc0 ffffffff (1d40822c)
Jan 14 13:16:52 xps15-laptop kernel: [  550.764382] nouveau 0000:01:00.0: DRM: resuming client object trees...
Jan 14 13:16:52 xps15-laptop kernel: [  550.764397] nouveau 0000:01:00.0: DRM: evicting buffers...
Jan 14 13:16:52 xps15-laptop kernel: [  550.764398] nouveau 0000:01:00.0: DRM: waiting for kernel channels to go idle...
Jan 14 13:16:52 xps15-laptop kernel: [  550.764412] nouveau 0000:01:00.0: DRM: suspending client object trees...
Jan 14 13:16:52 xps15-laptop kernel: [  550.765770] nouveau 0000:01:00.0: DRM: suspending kernel object tree...
Jan 14 13:16:52 xps15-laptop kernel: [  551.638247] PM: suspend of devices complete after 1155.310 msecs
Jan 14 13:16:52 xps15-laptop kernel: [  551.654829] PM: late suspend of devices complete after 16.561 msecs
Jan 14 13:16:52 xps15-laptop kernel: [  551.656867] xhci_hcd 0000:00:14.0: System wakeup enabled by ACPI
Jan 14 13:16:52 xps15-laptop kernel: [  551.671878] PM: noirq suspend of devices complete after 17.027 msecs
Jan 14 13:16:52 xps15-laptop kernel: [  551.672619] ACPI: Preparing to enter system sleep state S3
Jan 14 13:16:52 xps15-laptop kernel: [  551.695080] ACPI : EC: EC stopped
Jan 14 13:16:52 xps15-laptop kernel: [  551.695082] PM: Saving platform NVS memory

Note that some of the messages "after" the wakeup (starting at 13:16:52) seem to actually be related to actions leading up to the suspend. I guess the logging facility shuts down at some point during the suspend so that messages after that point show up only after wakeup (so I don't get to see these in the failed case).


1 In particular, suspend works fine if the laptop is on AC power during the entire suspect process – at the point of suspension, at the point of wake and all the time in between. Simply unplugging the AC adapter, even for a second, while the host is sleeping will cause the failure described above.

Best Answer

Here is what worked: Completely powering off my laptop, then turning it back on. Note: don't just reboot... fully power down.

The only side effect is that Wifi stops working (as in the wireless interface is not recognized at all). A simple sudo systemctl restart NetworkManager solves that... and if you don't want to have to do that after ever suspend you could make a script this script:

/lib/systemd/system-sleep/99restartnm

That contains:

#!/bin/sh
case "$1" in
    post)
        systemctl restart NetworkManager
    ;;
esac

and make it executable:

sudo chmod +755 /lib/systemd/system-sleep/99restartnm

(I know that answer was in the comments of the question but its kinda easy to miss... thanks @BeeOnRope, I really did just about try anything else out except for fully powering down... facepalm)