#
How to run modded Beat Saber on multiple Quest VR user profiles

Yes, running modded Beat Saber on the secondary profile of a Quest VR can be done. It's complete possible, and I've done it, it's just ridiculously overcomplicated. It also depends on no mod developers accidentally breaking a use-case that nobody knows exists, but so far it's not been too bad.
If you are a fan of BeatLeader, or even ScoreSaber, or if who you share the headset with does not have the exact same wrists as you and wants their own controller offsets, this tutorial is for you.

####
Note:

This tutorial was originally posted as a
GitHub Gist
, which I made in a rush, just to prove it could be done.
I am reformatting that post slightly to publish here.
This tutorial assumes you already know how to mod Beat Saber on the Quest VR on the main profile.

###
Setting up multi-user Beat Saber

•
Use ModsBeforeFriday to install mods on your normal profile
before
making a second profile (after
may
cause problems)
•
Make your second profile on the Quest,
•
•
Redo all of the steps required to enable developer mode on this second profile
•
If Beat Saber doesn't show up on the second profile 🏴‍☠ :^):
•
•
Run
adb shell pm list users
to get your second profile's ID (the first number next to the name of it)
•
•
Run
adb shell pm install-existing --user [user ID] com.beatgames.beatsaber

###
Modding your multi-user Beat Saber

Since your Beat Saber installation is already "modded", and the installation is now shared between profiles, it is already "modded", the problem is you have
no mods
. Mods are stored in the
/sdcard/ModData
directory, which is not, and cannot be automatically installed into your secondary user profile. How do we get it there?
Getting
the primary profile's mod files is easy. It can be reached by apps in
/sdcard/ModData
, and of course pulled with
adb pull /sdcard/ModData
. The difficult part is getting into the same place on the second profile.

####
What can't work

•
Using an app to copy files to the shared
obb
directory? No, not anymore. Nothing will have permission.
•
Copying using
adb
? No,
adb
can only access the primary user's files.
•
Adding support to ModsBeforeFriday? No, that works over
adb
(but a companion app could give it the ability to manipulate second-profile files, if they added this)

####
What can work

•
Installing Dropbox or better alternative on both profiles
•
Pulling the files, zipping them up, uploading them to any file-sharing website, and downloading on the second profile
•
Finding somebody who wants to make either a standalone app, or ModsBeforeFriday companion app to help streamline this process
•
Doing this opposite of what I did, running an FTP server on the second profile, and using a PC FTP client to copy the ModData there

###
Well here's what I did

This is an extremely ugly and messy way to do this, but I feel the need to document it regardless, in case this ends up being convenient for anybody else, or there are issues with other methods.
•
Pull all of your mod data from your primary profile (
mkdir ~/bs && cd ~/bs && adb pull /sdcard/ModData ./ModData
)
•
Delete all of your replays and songs out of your pulled mod data, for a
much
faster time copying
•
Acquire Python with
pyftpdlib
somehow (for me,
nix-shell -p 'python39.withPackages (ps: with ps; [pyftpdlib])'
)
•
Temporarily open port 21 on your firewall somehow (for me,
sudo nixos-firewall-tool open tcp 21
)
•
Run an FTP server hosting your mod data
cd ~/bs && sudo python3 -m pyftpdlib -p 21 -u q -P q
•
Install
Material Files
on the secondary profile of your Quest (I downloaded the apk from F-Droid, and used
adb install ./me.zhanghai.android.files_40.apk && adb shell pm install-existing --user 10 me.zhanghai.android.files
to get it on the second user profile)
•
Open "Material Files" inside the headset on the second user profile
•
Go to Add Storage -> FTP
•
Enter your computer's IP, and set username and password (both are set to
q
as in my example above)
•
Copy the ModData directory, and paste it in the root of your Quest's storage (
/sdcard
, but in the secondary user profile)
After all of these steps are completed, you should have fully modded Beat Saber on both profiles. The second profile will have all of your mod data, but do not be concerned, it is now entirely separate, and you can change any settings
without
it affecting your main profile.
Due to ADB not supporting multiple users, there is
no
way to add support for (the second part of) this to any PC modding tool. However, if nobody finds a universally easy way to copy the
ModData
directory, it would be possible to make a small online app to assist with it.