Gaming

The Linux coders turning the ROG Ally and other handhelds into Steam Deck clones

image
As soon as I was done with my review of the Asus ROG Ally, I grabbed my best USB stick and started looking for ISOs to download. Windows is, of course, the main highway to most PC gaming, but it's also (as detailed in the review) not yet built to work well on a 7-inch gaming handheld. The ROG Ally ships with Windows (Home) installed and a bunch of Asus software, but it is still, at heart, a PC. With effort, you can get into the BIOS, disable Secure Boot, plug in a USB stick, and boot a USB stick with a live Linux distribution on it. It's a weird feeling, ignoring almost everything Asus has done to set up this device with gaming and power management software and starting over at the storage level. But, like the many Linux developers who see the Ally as the Steam Deck's potentially beefier cousin, I wanted to leave the comforts of the Start menu for wilder lands. OK, fine, I just wanted Steam OS. Is that so bad? I wanted the big game squares, and you click the square with your game, the game plays, and Steam does a bunch of stuff in the background to make it work. And it's impressive enough, given you can hold it in your hands. I did not get that far during a period of more than a month where I had a review unit and nobody who actually understands hardware drivers had an Ally. Earlier this month, ROG Ally units started showing up at buyers' doorsteps, and open source developers' work to Steam up this device has kicked into gear. The results at this moment are quite impressive, given the entirely unofficial, unsupported nature of the all-volunteer project. Fairly soon, you may be able to flash a USB stick and turn the Ally—or many other handheld PC portables likely to follow—into a Steam-Deck-like console. Here's how I attempted it, failed miserably, and how developers are making it possible, pushing through barriers at breakneck speed.

Doing Linux on the Ally the hard way

The ROG Ally will not make it easy for you to install a different OS. As with most PCs, you have to head into the BIOS and (at least for now) disable Secure Boot to boot from a USB drive or the resulting OS on your internal drive. Disabling Secure Boot doesn't always "stick" on the Ally, though, as seen in many Reddit and Discord posts. The most reliable way to make the change stick is to delete some or all of the signed keys loaded onto the Ally's firmware by Asus and other vendors. Once you do that, you'll trigger a BitLocker lock-out in Windows—and unless you installed that Windows yourself, you likely don't have the encryption recovery key to restore it. But on we go. After discovering the BIOS shortcut (hold the volume down button while powering up, must have power attached) and clearing the way, I first tried Nobara Linux, a distro based on Fedora (not a "spin") that packs in lots of gaming-related software and tweaks. I had to use a USB-C dongle to attach a keyboard while also keeping power supplied, but I did get Nobara installed. From the outset, there was no Wi-Fi or Bluetooth, which made installing Steam an issue. I tethered my phone and eventually used a tiny USB Wi-Fi dongle to get past this. I slowly, painfully installed a few small Steam games using 5G, launched one, and discovered the Ally's buttons weren't being picked up as even a generic controller. I installed a few utilities to try and work past this, then restarted the system.
I never got back into Nobara again. For reasons unbeknownst to me—or at least beyond the point where I cared to debug on a 7-inch screen—my installation refused to boot up again on the Ally, only showing a blank screen that I couldn't pass, even with the typical keyboard tricks. I moved on to the most recent release of Ubuntu. With Ubuntu 23.04 installed, I could run the Phoronix Test Suite and run glxgears, which showed that at least some kind of 3D acceleration was happening. I installed Cyberpunk 2077 through Steam's Proton compatibility tool, benchmarked it, and got, well, very sad numbers. Cyberpunk saw that my GPU was the Ally's key feature—an AMD Ryzen Z1 Extreme. But it ran at 17 and 23 frames per second averages on "Medium" and "Steam Deck" settings, respectively (at 720p resolution and 60 Hz refresh rate). With nothing to lose, I installed the latest AMD Linux drivers, ran those benchmarks again, and lo and behold, improvement: 30.8 and 27.32 fps on "Medium" and "Steam Deck." That's notably shy of the 38 and 34 frames per second I clocked on the same benchmark in Windows. Then again, I'm guessing at drivers, and I can't do much to control thermals or power draw. I couldn't get newer builds of the SteamOS-focused ChimeraOS or HoloISO loaded onto the Ally, at least back then. But a few enthusiasts with YouTube channels have done the work, and you can see how they were working—at least at the very moment they tried it.

Real-time hardware debugging in Discord

Deck Wizard, working with the latest stable build of ChimeraOS (42), posted a video on June 19 detailing its state at the time. It was difficult to navigate Steam OS because of the button mapping. The GPU seemed locked to 800 MHz, the power draw didn't typically go higher than 15 watts, and a lot of stuff plain didn't work: volume controls, fingerprint sensor, the speaker, Bluetooth, Wi-Fi, and rumble (haptic) feedback. In just the week or so since that video went up, a lot has changed. If you installed Chimera OS, changed to the unstable build, and applied some Ally-specific tweaks, you'd have Wi-Fi, Bluetooth, speaker audio, button mapping, and even a crude version of power management that involves holding the "Crate" button. Full TDP control is underway. In the time I was writing this section, an experimental refresh rate control system that works inside Steam's sidebar was baked into the newest image. "Development on this is going extremely fast," said Ruineka, a primary developer on Ally-specific tweaks to Chimera, in a Discord chat. The Ally, Ruineka said, is "honestly an amazing device when things are running with ChimeraOS. It feels so integrated compared to the Windows experience it comes with." As for why Ruineka, specifically, feels compelled to be pushing so hard to get Ally support ready for the next major release (43?). "The ChimeraOS community wanted it, so I can't say no," they said. "I've developed the necessary skills to adapt hardware to Linux, so this is just another handheld to tackle. It's more or less what I enjoy doing." Phillip Müller, project lead at Manjaro, has been helping, too. Müller told Ars all the things that explain how a small team got so far in two weeks. It involves working past the lack of Device Specific Data (DSD) offered for the Ally's speakers in the Differentiated System Description Table (DSDT), without which a kernel driver for the system's Cirrus Amp speakers won't load. Müller is working mostly to ensure that Chimera's work comes over to Manjaro, but also helping out with things like dumping a version of the Ally's DSDT for an older BIOS. Müller noted that several other gaming handhelds have been released recently and that ChimeraOS works to support them. But the Ally is an appealing target, having the horsepower, bright and high-resolution screen, and wider public interest behind it. "It will shake up the Linux gaming world for sure," Müller wrote. "And when Asus comes to their senses, it might even create more traction if they work together with us." Pastaq, another Chimera developer focused on user experience and UI, said the goal is to "get parity with Windows for all the functions of the controller" at the moment. They need to get a mouse mode working, similar to how the Ally's sticks work in Windows. And there are the back buttons, too. But it feels like if I check in later this week, it'll be a different story. Ruineka, like Pastaq and Müller, noted the team efforts they stand on to be able to focus on this one device. Samsagax, Shadow Apex, Luke Jones, the founder Alkazar, and many others are contributors who throw in tips and fixes in the Discord group.

So, how does it run?

After working through an installation process that is, at this moment, far from beginner-friendly (BIOS shenanigans, Ethernet dongles, tiny terminal commands), I got an experimental build of Chimera OS working on the ROG Ally, with all the fixes available as of this writing (mid-morning June 27). After a few updates, it is running, essentially, Steam OS. It boots directly into Big Picture mode, it offers the same kind of performance/settings sidebar as the Steam Deck, and there's even a desktop mode. I installed Cyberpunk 2077. I set the display to 720p and 60 Hz, loaded up the benchmark, and: not bad. On ChimeraOS's higher-power mode, I clocked 57.69 frames per second on the Medium settings, just short of the 62 fps I captured on Windows on the same device. On the lesser-power mode, I saw 41.59 frames per second, which is almost exactly how the actual Steam Deck performed on Medium. Here's an updated benchmark (the "Steam Deck" benchmarks were almost identical to "Medium" on both power modes).
Working with Ubuntu 23.04, a Linux 6.4 kernel, and bleeding-edge Mesa/Radeon drivers, the Phoronix blog saw something similar in Cyberpunk 2077 benchmarks: pretty close performance between Windows and Linux on the Ally, give or take a Proton compatibility layer. It got more complicated as different benchmark suites were incorporated. But if you wanted to justify wiping your $700 gaming handheld because you'd rather never see a Microsoft Teams notification again, the performance is, while not at parity, not drastically different. There's still time for Asus to remove the most annoying aspects of the Ally's Windows installation. And you could, with some effort, strip down or reinstall Windows on the Ally to where Steam's Big Picture mode launches on startup. But if, like me, you're up for an adventure, not just an OS, there are some exciting things ahead for handhelds—especially the ROG Ally.