ROL with Waydroid Guide

โ€”

by

in

This includes WMs as it uses weston.
NVIDIA GPUs are not supported(they will use software rendering by default, expect terrible performance). AMD GPUs with libndk requires more testing for accurate results.
At the current state, iGPUs run the game on best performance.

Performance is now great on both AMD and iGPUs thanks to x86 builds.

Though it is a terrible workaround, if youre tied to linux, this is still somewhat a hacky solution.
Keep in mind you wont be able to join PC-only games with this.

Guide

Setting up Waydroid

1) Install Waydroid
Arch

Nix

-Fedora:

sudo dnf install waydroid

-Ubuntu/Debian/anything based on it:

sudo apt install curl ca-certificates -y
curl https://repo.waydro.id | sudo bash
sudo apt install waydroid -y

Anything else

1.1) Run waydroid for the first time
Then open the GUI app, and paste the links for OTAs
System OTA: https://ota.waydro.id/system
Vendor OTA: https://ota.waydro.id/vendor
Pick variant as GAPPS, install. Then run waydroid show-full-ui once its complete.

2) Setup play store certification

sudo waydroid shell
ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"

Paste the ID into:
https://www.google.com/android/uncertified
Then wait for a few minutes and restart waydroid

3) Disable GUI keyboard

Waydroid by default shows the Android virtual keyboard when selecting an input field. To disable that, and only use the physical keyboard, turn off the following setting: Settings > System > Languages & input > Physical keyboard > Use on-screen keyboard

Required extra stuff

Translation layer is NO LONGER NEEDED!!! Starting from 635, roblox gives native x86 apk bundles(and they run great)! Skip the striked steps.

1) Prepare script to install the translation layer

git clone https://github.com/casualsnek/waydroid_script
cd waydroid_script
python3 -m venv venv
venv/bin/pip install -r requirements.txt

2) Get libhoudini(Intel):
Don’t do this if youre using an AMD CPU!!!

sudo venv/bin/python3 main.py install libhoudini

2.1) Get libndk(AMD):

Don’t do this if youre using an Intel CPU!!!

sudo venv/bin/python3 main.py install libndk

Then, follow this repo
Otherwise you will get a white screen.
“Please mention that using any script tools to edit the .prop file AFTER manually setting libndk_fixer will cause the prop file to revert the change.”
– trulysc

Libndk users has to use an arm64 v8 version of roblox. arm64 v7 will not work.

3) Disable splitlock detection

Disabling splitlock increases performance slightly, and usually stops those constant sudden freezes that happens for 1-5 seconds, at least from my experience on an Intel CPU.

Disabling it is very easy, you just need to add a parameter to the grub(or sysdboot, or whatever youre using. This guide is only for grub).

Open grub config by
sudo nano /etc/default/grub

Find “GRUB_CMDLINE_LINUX_DEFAULT”, and at the end of it, add
split_lock_detect=off
And save the file. Then update grub by sudo update-grub

Once its complete, run
sudo sysctl kernel.split_lock_mitigate=0
Now splitlock is disabled. No reboot required. It will be applied on every boot.

!>(original message: https://discord.com/channels/1069506340973707304/1211849775675080845/1229368978762104862)

4) Mouselock fix;

sudo apt install pynput xdotool
git clone https://github.com/no-venv/LockRblxCursor_Linux
cd LockRblxCursor_Linux
python3 main.py

https://github.com/no-venv/LockRblxCursor_Linux/tree/main
But you need to be running waydroid through weston for this to work(as the script works only under x11), which is a nested wayland client.
This also doesn’t “fix” the mouselock, it makes it so that your mouse can’t go out of waydroid’s window instead. Just like mouse being broken under wayland for vinegar. You can play fps games, yes(if you can even find any besides arsenal that allows mobile users)

4.1) Mouselock fix(wayland):

I personally never tried this, and didn’t look to it. You’re on your own.
https://gitlab.com/manoel-linux1/LockRblxCursor_Linux-on-Xwayland

5) Unlocking FPS

Thanks to hoodb0 for letting me know where FFlags are on android!
These FFlags will unlock performance alongside forcing graphics to low in order to get high performance.
You are required to enable freeform mode on waydroid. For some reason, when you use it normally it limits the fps back to 60.

Guide:
Run

sudo waydroid shell
cd /data/data/com.roblox.client/files/exe
mkdir ClientSettings
cd ClientSettings
nano ClientAppSettings.json

And paste:

{
"DFIntTaskSchedulerTargetFps": 1000,
"DFIntDebugFRMQualityLevelOverride": 1,
"FFlagDisablePostFx": true,
"DFFlagDebugPauseVoxelizer": true,
"DFFlagDisableDPIScale": false,
"DFFlagDebugRenderForceTechnologyVoxel": true,
"FFlagFastGPULightCulling3": true,
"FFlagDebugDisableTelemetryEphemeralCounter": true,
"FFlagDebugDisableTelemetryEphemeralStat": true,
"FFlagDebugDisableTelemetryEventIngest": true,
"FFlagDebugDisableTelemetryPoint": true,
"FFlagDebugDisableTelemetryV2Counter": true,
"FFlagDebugDisableTelemetryV2Event": true,
"FFlagDebugDisableTelemetryV2Stat": true,
"FFlagAdServiceEnabled": false,
"FIntDebugForceMSAASamples": 0,
"FIntFRMMaxGrassDistance": 0,
"FIntFRMMinGrassDistance": 0,
"FFlagCloudsReflectOnWater": false,
"FIntRenderLocalLightUpdatesMax": 1,
"FIntRenderLocalLightUpdatesMin": 1,
"DFIntDebugFRMQualityLevelOverride": 1,
"FFlagRenderCheckThreading": true,
"FIntRenderShadowIntensity": 0
}

Tip:if you want even more performance, add these fflags at the top as well:

"DFFlagTextureQualityOverrideEnabled": true,
"DFIntTextureQualityOverride": 0,
"FFlagDebugSkyGray": true,
"DFIntTextureCompositorActiveJobs": 0,
"DFIntCSGLevelOfDetailSwitchingDistance": 0,
"DFIntCSGLevelOfDetailSwitchingDistanceL12": 0,
"DFIntCSGLevelOfDetailSwitchingDistanceL23": 0,
"DFIntCSGLevelOfDetailSwitchingDistanceL34": 0,

These will make the gui icons low-res, make the sky gray, remove player textures, and make models low-quality.

You should be good to go.
!>(original message: https://discord.com/channels/1069506340973707304/1211849775675080845/1234586113004535929)

My additions

These are just a few things to make all Waydroid apps feel more integrated to desktop. Not required to follow.
1)Enable multiwindow
waydroid prop set persist.waydroid.multi_windows true

2)Enable hotplug devices
waydroid prop set persist.waydroid.uevent true

3)Hide status and navbars to get the full screen space on multiwindow
Go back to waydroid script, then run
sudo venv/bin/python3 main.py hack hidestatusbar
To hide navbar;
Open waydroid prop config by:
sudo nano /var/lib/waydroid/waydroid_base.prop
And add at the end as a new line;
qemu.hw.mainkeys=1

4)Use an empty launcher
Use a launcher that has no way to launch extra apps so that you cant click other apps and accidentally launch them on multiwindow mode, since waydroid’s multiwindows are buggy. I recommend Nova Launcher alongside disabling everything and removing every shortcut.

5)Sync notifications with desktop
Two words: KDE Connect.

!>(original message: https://discord.com/channels/1069506340973707304/1211849775675080845/1228796890112327712)


Comments

4 responses to “ROL with Waydroid Guide”

  1. meow www Avatar
    meow www

    VERY NICE ๐Ÿ™‚๐Ÿ‘

  2. cool

  3. a guy that says thanks Avatar
    a guy that says thanks

    thanks

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.