Dual-boot Steam Deck with Ubuntu 24.04 and Windows

The hardware

I’ve always been a fan of handheld form factor. In the 2000s, Sony’s VAIO UX and Fujitsu Lifebook U were my dream gadget, but the hefty price tag were very out of reach for a college student.

Now, the Steam Deck is a gaming PC that fits in the palm of your hand, A 7″ 15W TDP AMD APU that goes for 3-12 hours battery life, depending on usage – it is just too good to be true for my younger self who is still stuck in 2000.

Thanks to Valve’s magic, it can run a wide range of Windows games right out of the box, all on top of its own custom OS called SteamOS – which is based on Arch Linux. It is also very affordable starting at $399. My younger self has gone crazy and after a long period of consideration – I finally got the second iteration – Steam Deck OLED.

From a gaming device point of view, Steam Deck is the perfect form factor, I enjoy the gaming experience. Valve have brought the experiences from developing the Steam Controller and transferred it to the Steam Deck.

To make it a good productivity tool (as a handheld computer) the obvious missing part is the keyboard and mouse. the Thinkpad Trackpoint gives me mouse (as the red dot) and keyboard functionality over bluetooth and a wireless USB dongle (the dongle is very useful – you’ll see soon). That’s Keyboard and 3 different pointing devices at my disposal – the touchscreen, the right touchpad, and the trackpoint.

Now that I’ve figured out the hardware part, the Steam OS, however, is very tailored to gaming, things I plan to install into the OS won’t survive an OS update. So I am gonna dual-boot this nice little thing.

Preparation

Proceed at your own risk…

  • ISO files
  • USB disk (larger than your ISO file)
    • BalenaEtcher, win32DiskImager, or dd to make bootable USB.
  • USB-C dock or hub
  • Keyboard (Wired or wireless with USB dongle, as bluetooth is not guaranteed to work)
  • Steam Deck Recovery Instructions, just in case if shit hit the fan.

Resize the partition

I am going to install it alongside with Steam OS, which means we’ll shrink the current partition steam OS uses to store game files. Use your favorite tool to prepare a bootable USB disk with Ubuntu 24.04 ISO, if your ISO does not ship with GParted, you’ll likely need that too.

First, turn off Steam Deck using “Power off” – you can listen to the vent, power is out once the fan fully stops.

Steam Power
Shutdown

After that, Plug in your USB, Hold volume up button, keep holding it, then press power button. You’ll see the boot menu, then boot from USB.

Once booted to Ubuntu Live CD, first thing you notice is the whole display is sideways. Go to settings > displays and make it not sideways.

Orientation settings

After that, search and start GParted, and we’re in business.

GParted in Ubuntu 24.04 Live CD

Below is how a Steam Deck 1TB NVMe disk partition table looks like out of the box, YMMV.

Initial State

Now I’ll resize the largest and leave 250GB of space on the right for Ubuntu and Windows 11, 125G each:

Resizing SteamOS partition

Commit the changes to disk:

Commit to disk

After resize, you see there’s 250G unallocated space on the right, now I’ll create a temporary 125G ext4 partition (which will be deleted and re-created by Ubuntu 24.04 installer), after that, proceed with install to the temporary partition, use custom install, put mountpoint root (/) and let the installer run.

After Ubuntu installation complete, the partition table should look like this:

Ubuntu Install complete

Now, turn off the Steam Deck, plug in the Windows 11 installer USB disk, repeat the volume up + power button trick, and boot to Windows 11 USB, install to the final 125G unallocated space.

The partition table should look like this after both Ubuntu and Windows 11 is installed:

Final Result - Steam OS, Ubuntu, and Windows 11

Restore Steam OS Boot Entry

You probably noticed the Steam OS boot entry disappeared. No need to panic – we’ll fix that really quick. Select “boot from file” when restarting, and boot from ESP (first entry) > efi >steamos > steamcl.efi, and you are back into the Steam OS. Now switch to Desktop Mode, put in the following command:

sudo efibootmgr -c -L "Steam OS" -l "\EFI\steamos\steamcl.efi" -d /dev/nvme0n1p1 -b0001

Shutdown, and Steam OS should be back to your boot menu again.

Now to switch OS, you’ll need to fully power off the Steam Deck, use the volume up & power button, and use the boot menu. You could probably use Clover or rEFInd to make it easier.

Windows 11 Drivers

Valve recently released Windows 11 drivers that resolved most of the issues. with Clover, sometimes the screen got the wrong resolution and garbled screen output. To fix that, simply connect an external monitor, reinstall AMD APU drivers.

Major issues

wifi is not working in Ubuntu 24.04.

Audio is half-working in windows (3.5mm and USB-C works, speaker doesn’t, bluetooth audio doesn’t either)

Bluetooth is not working in Windows 11 (seems fix is on the way) and no audio.

Minor issues

Reboot always goes into Windows, I fixed with Clover (which nuked Windows Boot Manager).

For Bluetooth devices, to prevent re-pairing bluetooth, here is a trick to reuse the pairing key from Windows Registry, I have tested it and it works with my keyboard, YMMV.

The installed Ubuntu is initially sideways, which is easy to fix with the settings (see above), however, the black screen right after boot (from GRUB) and the Ubuntu loading splash screen (from Plymouth) are still sideways. Using xrandr to find the display name, and EFI command line videoinfo to find the display default resolution is 800×1280, so we could fix 2 issues with one file:

Edit the following file:

/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=eDP-1:panel_orientation=right_side_up"
GRUB_GFXMODE=1280x800x32

The future versions of Steam Deck might use different components, when that happens, adjust the GRUB accordingly.

After saving the file, run update_grub and reboot.

Future Works

Test the Bluetooth Key hack and have all 3 OS use the same key.

Try to find drivers for Quectel FC66E-B (Wifi 6E & BT combo) shown in iFixit teardown, some sources claimed it is based on Qualcomm QCNFA765, which Lenovo uses in Thinkpad T14 Gen2. Might try some luck with their windows drivers.

For Linux, ath11k_pci might work (sans power saving).