In case of an update to the Windows client being not working on Wine / Proton even with patched versions of them, don’t panic. There’s still some hope to play Roblox on desktop Linux, if you’re willing to run a Roblox Android Client and this works best if you’re running a Wayland display server and also using Intel and AMD GPUs. No VT-d compatible CPU/Motherboard and more than one GPUs required.
Things that are not covered:
- Windows / macOS VMs. Virtualizing Linux kernel is much better & faster than Windows or macOS, thanks to native KVM and virtio-gpu support. Also since Windows and macOS doesn’t have a proper virtio-gpu support (virtio-win’s PR #943 is still WIP), GPU passthrough is required and remember that, officially, Skylake/Zen or higher is required for VT-d in consumer motherboards. (Anything older officially requires enterprise Q-series motherboard to do so, else support will be hit-and-miss e.g. improper IOMMU grouping)
- Multi-booting (dual/triple booting, etc) such as running Android x86 (or it’s distributions) on real hardware. Defeats the purpose of this post.
- Anything about running Roblox on Cloud / remote servers. Also defeats the purpose, and it’s basically playing Roblox on another computer but done remotely.
Those methods mentioned above should have their own separate instructions.
These are 3 methods you could take to get the Roblox Client (although it’s designed for Android) back running on your desktop Linux again.
Method 1 - WayDroid (Highest Performance - Requires an AMD, Intel, Adreno, or other GPUs with compatible drivers included in upstream Mesa)
The most native way is running the android client through Waydroid, which is a compatibility layer for Android on desktop Linux. In some distributions like Arch, this requires you to use a separate Linux kernel with Android support enabled such as linux-zen and xanmod.
Installation is pretty straightforward considering there’s already a collection of scripts for Waydroid, including for the ARM64 libraries for running ARM-only apps, available on GitHub by casualsnek. For the images though you can choose between GAPPS that includes core Google services, or VANILLA which doesn’t include Google services (if you’re going vanilla, you might need to install microG with adb force-queryable option to prevent the Play Services popup every time you start Roblox).
This does require you to use Wayland display server (or if you’re still more comfortable using X11, a separate Wayland compositor like weston although with workaround-able clipboard issues) for it’s core operation, and a Mesa-compatible driver for hardware acceleration, which points to Intel, AMD, older pre-Kepler Nvidia (if nouveau works fine for you though) as another part of the requirements to run Waydroid smoothly.
- For GCN and RDNA AMD GPUs, if you choose to enable Vulkan (which results in better stability and performance), set
ro.hardware.gralloc=minigbm_gbm_mesa
in the waydroid configuration to prevent black screen issues.
These instructions related to Intel GPUs below are deprecated since recent Waydroid updates have fixed these issues and are kept here for historical purposes.
Check your Intel GPU generation first! If it’s Broadwell or older (ix-5xxx series or older), PLEASE READ EVERYTHING BELOW!
The reason is because the new Crocus driver, a replacement for the former i965 driver designed for pre-Skylake GPUs released in 2021, are included in latest Waydroid images and is currently known to be buggy. Roblox will turn into a black screen after the loading screen.
If you can’t use the latest Waydroid images for some reason, here’s the solution: You need to copy the
i965_dri
andi965_drv_video
driver from a BlissOS 14.3 image and paste them into Waydroid Vendor Image. More instructions can be found in Waydroid forums due to how long the instructions would take.FOR HASWELL (ix-4xxx) AND OLDER: You’re also required to disable Vulkan by commenting out the
ro.hardware.vulkan
section in/var/lib/waydroid/waydroid_base.prop
due to buggy implementations in pre-Broadwell Vulkan drivers.
Method 2 - Android inside QEMU/KVM (Performance depends on RAM and CPU Cores, most GPUs should work including NVIDIA)
If you either don’t want to run Wayland and still choose X11, or you do have an NVIDIA GPU (especially Maxwell and newer), you still have an option. You can install an Android x86 distribution such as BlissOS inside a QEMU virtual machine with KVM and virtio-gpu acceleration enabled. For better experiences make sure it includes the latest kernel and Mesa, and for the installations you can follow the instructions you can find around the Internet.
Performance depends on how your GPU driver works with QEMU’s virtio-gpu. Better driver means better experience.
Method 3 - The Traditional Way (Mediocre Performance & Experience)
If all the methods above didn’t work, the only ways to run Roblox on Linux is by using a so-called “Android Emulator” software, some of them which are paid (sometimes even for essential functions to run Roblox) or infected by bloatware and advertisements. Main catch is that you will no longer have a native mouse and keyboard input anymore in most emulators, and you might end up resorting to keymappers and mobile UIs instead.
You can also try a cloud service, but it’s kind of cheating since you’re basically running Roblox over a rented server. Other than that, no more ways other than straight-up dual-booting Windows, or setting up an isolated Windows VM in such complex ways.
These instructions related to ARM64 translation below have been deprecated since recent v635 client updates have fixed these issues and are kept here for historical purposes.
- Before v635 the Roblox’s Android client doesn’t support x86 (and x64) natively, it also requires you to install a proprietary ARM64 translation layer, between libndk_translation for AMD CPUs, and libhoudini for Intel CPUs.
- For Method 2, make sure the distribution you want to install includes a translation layer for ARM such as libhoudini/libndk first,
Known Issues for running Roblox Android Client on Desktops and Laptops
- You need to use Waydroid in fullscreen mode due to mouse-lock issues. This is necessary for experiences with a lot of first person or shift-lock operations, such as those FPS and Obby ones.
- A distribution, image, or emulator with ARM translation layer is required for non-ARM CPUs (e.g. x86)
- You have to adapt with the Roblox mobile UI if you’re navigating through the Roblox website for day-to-day basis
- WayDroid only works properly if it’s being rendered by the same GPU as the one used by the Wayland compositor it uses, aka. it doesn’t have a proper multi-GPU support. In most cases you can only use the integrated graphics on any dual-GPU (or so-called “hybrid graphics”) laptops or AIO PCs without a mux-switch.
- Experiences with badly implemented “device platform checks” (e.g. only checks for
TouchEnabled
value. NotMouseEnabled
,KeyboardEnabled
, or evenLastInputType
) will always give you a mobile UI since Android is primarily designed for touchscreen devices. - Following the issue above, Experiences that encourages the use of touch-only events (e.g.
TouchTap
,TouchPan
,TouchSwipe
, etc) on mobile UIs will prevent any interactions with physical mouse cursors. For Method 1, you need to use QtScrcpy or XtMapper which will give touch events but adds some input latency. For Method 2, BlissOS already has the “force fake touchscreen events” in the settings but there’s a catch: you must turn them off for unaffected experiences, and turn them back on for affected experiences which is kinda annoying. For Method 3 however, most emulators are not affected by this issue, but you will be mostly stuck for not having native right-clicking anyway.
Conclusion
All is not lost. There are still some ways we can do to keep Roblox working on Desktop Linux. While compatibility layers or even virtual machines and emulators are required, the hope is not lost. The Desktop Linux community keeps growing. Especially while Microsoft are still doing their own things inside their Windows 11 and after major companies in the gaming market keep pushing Linux forward. Eventually the good thing will always come for us.