Ubuntu on Razer Blade 15 (2022, Advanced)

Setup for Ubuntu on a Razer Blade 15, Alder Lake, NVIDIA RTX 3070 Ti (updated 7/26/2022):

  • Ubuntu 22.04
  • You must run a very recent kernel or you’ll face loads of problems
  • Disable Secure Boot in the BIOS (so you can run an unsigned kernel)
  • Use
    sudo add-apt-repository ppa:cappelikan/ppa
    sudo apt update
    sudo apt install mainline

    To get mainline.  Update to 5.18.0.

  • NVIDIA 515 requires a kernel option. Edit /etc/default/grub and add “ibt=off” to GRUB_CMDLINE_LINUX_DEFAULT; so my full line looks like:
  • GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ibt=off"
    
    Then run:
    sudo update-grub
  • Install NVIDIA 515:
  • sudo apt install nvidia-driver-515
  • Run in on-demand PRIME mode.
  • I’m using Cinnamon with font scaling set to 1.4.  I find it very nice for the main screen. Xfce with DPI set to 120 also works well.
  • Right now the default OpenRazer does not support the laptop.  The main dev version just merged support.  Build a .deb from source and install.  Works great with Polychromatic.
  • Once you have installed your dev packages, hold them so Ubuntu doesn’t “upgrade” them out from under you:
  • sudo apt-mark hold openrazer-daemon
    sudo apt-mark hold openrazer-doc
    sudo apt-mark hold openrazer-driver-dkms
    sudo apt-mark hold openrazer-meta
    sudo apt-mark hold python3-openrazer

Suspend

S3 suspend does not work well. Touchpad is super jumpy after resume and video loses xrandr sources and ability to change screen brightness.

With S3 and s2idle, the system also immediately wakes during suspend.

To fix:
Make a new file /etc/systemd/system/acpi-wake-andy.service with:

[Unit]
Description=ACPI Wake Service

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo RP05 | sudo tee /proc/acpi/wakeup"

[Install]
WantedBy=multi-user.target

Enable with:

sudo systemctl start acpi-wake-andy.service
sudo systemctl enable acpi-wake-andy.service
sudo systemctl status acpi-wake-andy.service # check status

s2idle uses a lot of power by default.  To fix, tell the NVIDIA driver to go to sleep:

Add a file: /etc/modprobe.d/nvidia-s2idle.conf

options nvidia NVreg_EnableS0ixPowerManagement=1 NVreg_S0ixPowerManagementVideoMemoryThreshold=10000

s2idle is fine with this kernel and the NVIDIA options.  Earlier kernels would burn 10%/hour in s2idle.  I’m seeing 2%/hour now and Intel’s debug software suggests I can improve.

Microphone

By default the built-in microphone does not work. Thanks to ewfuentes we now have a solution!

  • Backup your sof topology file:
  • sudo cp /lib/firmware/intel/sof-tplg/sof-hda-generic-2ch.tplg ~/
  • Download this sof topology file
  • Extract it
  • Copy it over the existing one (note the filename in the zip is not the same as the target file)
  • sudo cp sof-hda-generic-2ch-pdm1.tplg /lib/firmware/intel/sof-tplg/sof-hda-generic-2ch.tplg
  • Reboot
  • sudo reboot

    dGPU power management

    Enable automatic NVIDIA GPU power management. See my PRIME Render Offload post for more information.
    Edit /etc/udev/rules.d/80-nvidia-pm.rules

    Put in:

    # Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
    ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
    ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"
    
    # Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
    ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
    ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"
    

    Remaining Issues

    • Left and right audio channels are swapped.
    • My best configuration for the screen/GPUs only runs the screen at 60hz. New kernels run at 240 Hz!
    • Suspend problems (see below)

    Suspend Problems

    The biggest problem right now is that the s2idle sleep is not always good. I’m trying to figure out why sometimes it stays hot and burns battery and sometimes it’s fine. I’m hoping this helps but haven’t tried it yet: Intel patch

    Other notes

    Openrazer works great for all the lights. I have not been able to do any fan control at all.

    One thing to consider is the Tensorbook from Lambda Labs. They have perfect support — I actually talked to them in person and they demoed suspend, on-demand mode on the NVIDIA GPU, mic, webcam, etc. Older CPU but once you factor in 64GB of ram it’s about the same price.

    They are the only vendor I’ve ever seen that actually understood Optimus much less made it work correctly.

    I’ve never had on-demand work for any NVIDIA laptop including my Blade 15. It works now!

    All the being said, the hardware build is great and it’s a pleasure to use.

    04/10/22