I basically followed this article and some other instructions.
First, just whether your device is in the "suspend to RAM" using:
cat /sys/power/mem_sleep
If it returns "s2idle [deep]", then it's supported. If it's not. First check whether your device supports this suspend mode, if so, run:
echo 'deep' > /sys/power/mem_sleep
and check again.
Now your device has the correct suspend mode, but it doesn't necessarily enter this mode when you suspend. To check, first suspend your device, then wake it up. Then open a terminal and run:
sudo journalctl | grep "PM: suspend" | tail -2
You can find the log of your suspension, which is something similar to below. Note that the log I attached shows that I correctly enter the "suspend to RAM" mode, in your case, it may appear "suspend entry (s2idle)" instead of "suspend entry (deep)".
$ sudo journalctl | grep "PM: suspend" | tail -2
Feb 16 21:35:05 Zephyrus kernel: PM: suspend entry (deep)
Feb 17 09:36:24 Zephyrus kernel: PM: suspend exit
If this is the case, you have to modify your bootloader. Here I use the gedit. Make sure it's installed first by:
sudo apt update
sudo apt upgrade
sudo apt install gedit
Then modify the bootloader file:
sudo -H gedit /etc/default/grub
Locate the line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
in the file and replace it with:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mem_sleep_default=deep"
To have these changes take effect you need to update the parts of GRUB that are responsible for booting by running:
sudo update-grub
and then restart your computer.
It should work now! Try to suspend and wake up your device and check the log using the command above again!