Hi there!
I recently switched from Arch Linux after a decade and now settled on Void Linux. So far so good. However sometimes I gather minor things here and there. My current issue is, the proprietary drivers of Nvidia still seeking systemd for some parts and not sure how to walk around this.
I cannot suspend my PC because when I wake it up I always see something about nvidia-sleep.sh. Probably it cannot wake the GPU up properly.
This is nvidia-sleep.sh:
#!/bin/bash
if [ ! -f /proc/driver/nvidia/suspend ]; then
exit 0
fi
RUN_DIR="/var/run/nvidia-sleep"
XORG_VT_FILE="${RUN_DIR}"/Xorg.vt_number
PATH="/bin:/usr/bin"
RestoreVT() {
#
# Check if Xorg was determined to be running at the time
# of suspend, and whether its VT was recorded. If so,
# attempt to switch back to this VT.
#
if [[ -f "${XORG_VT_FILE}" ]]; then
XORG_PID=$(cat "${XORG_VT_FILE}")
rm "${XORG_VT_FILE}"
chvt "${XORG_PID}"
fi
}
case "$1" in
is-suspend-then-hibernate-supported)
# suspend-then-hibernate only works correctly if $SYSTEMD_SLEEP_ACTION
# is supported, which was added in systemd 248.
systemd_version=$(systemctl --version | head -n1 | cut -d' ' -f2)
if [ "$systemd_version" -gt 247 ]; then
exit 0
fi
echo "systemd version $systemd_version is too old to support suspend-then-hibernate with NVIDIA." 2>&1
echo "Please upgrade to systemd 248 or newer." 2>&1
exit 1
;;
suspend|hibernate)
mkdir -p "${RUN_DIR}"
fgconsole > "${XORG_VT_FILE}"
chvt 63
if [[ $? -ne 0 ]]; then
exit $?
fi
echo "$1" > /proc/driver/nvidia/suspend
RET_VAL=$?
#
# If suspend/hibernate entry fails, switch back to the active VT
#
if [[ $RET_VAL -ne 0 ]]; then
RestoreVT
fi
exit $RET_VAL
;;
resume)
echo "$1" > /proc/driver/nvidia/suspend
RestoreVT
exit 0
;;
*)
exit 1
esac
I’m using Niri so no desktop environment here if that helps. My driver is nvidia580. Also using greetd (w/ tuigreet). So, what can I do here?
Linux void 6.18.38_1
pkgver: runit-2.3.1_1
Nvidia 580.159.04
Edit: Tried nouveau and suspend works with it. However because Nvidia didn’t provide firmware blobs for my card (GTX 1080) I cannot use the open drivers well.
Edit 2: Tried to give power management from acpid to elogind, thinking it might help to fool this script since it’s systemd’s standalone part here. Currently elogind both handles my seat and power management. I actually had some hope here, but sadly didn’t work. Here are my elogind config files anyway:
/etc/elogind/logind.conf.d/logind.conf
[Login]
KillUserProcesses=no
HandlePowerKey=poweroff
HandlePowerKeyLongPress=poweroff
HandleRebootKey=reboot
HandleRebootKeyLongPress=poweroff
HandleSuspendKey=suspend
RemoveIPC=yes
/etc/elogind/sleep.conf.d/nvidia-sleep.conf
[Sleep]
AllowSuspend=yes
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no
#SuspendMode=deep
SuspendState=mem standby freeze
HandleNvidiaSleep=yes
Nvidia, this is for you:



Mine is 1080 and already dropped to legacy driver.
By the way, just installed nouveau and on my first try, got bunch of DATA_ERROR but it’s fine now. Though haven’t tried a game yet, will try soon and report back.
While doing this, found out about this: nouveau doesn’t have support for power management for some cards and apparently mine is one of them.
Check yoursudo dmesg | grep -i nouveauand if you seepmu: firmware unavailablethat’s why your suspend or hibernate don’t work (mine probably won’t too, will see).Thanks again. :)
Oh man, that sounds like not so much fun. Keep me posted! I will help if I can if there is anything I can do.
I did run sudo dmesg | grep -i nouveau and nothing came up.
I did look into different idle parameters for /sys/power/mem_sleep
But I didn’t end up trying to switch from s2idle deep to just s2idle.
From Void handbook:
So it seems there is no hope for my card for nouveau? The gaming performance is terrible because it cannot reclock once in the game apparently. One positive side, suspend works now. :`)
Edit: It was worth the try but no joy. Went back to no suspend state. :) At least it was easy thanks to
dracut.Edit 2: No wonder why I didn’t have a good performance on Arch too. It’s because Nvidia didn’t provide blobs for my card. :(
Well I say what Linus said to Nvidia.
Thanks again though!
Thanks for sharing your findings! Can’t say I have ever used dracut. Only ever mkinitcpio
Well, both do the same I guess. At least I didn’t manually run it. That’s some convenience.
And, no problem! Thank you too!