Xodus
The great gaming migration to Linux
[!CAUTION] This is an unofficial project - use at your own risk. It is not affiliated with, endorsed by, or sponsored by Microsoft or XBOX; all trademarks, product names, and company names or logos mentioned herein are the property of their respective owners.
Current state of the project
The project can now login, download packages and obtain licenses for games.
These parts are still quite scattered around.
- Device login
- User login
- XBOX authorization
- MSIXVC download
- On-demand .exe decryption #50
- MSIXVC2 support #53
FAQ
Q: What is Xodus
Xodus aims to bring XBOX PC games to Linux and possibly Mac devices.
Q: When can I play my Minecraft Bedrock?
While Xodus is quickly maturing, there is still a lot of work to support it from Wine standpoint to provide necessary XBOX Services to games.
TL;DR soontm
Q: How to get involved?
Start by joining our Discord or review any open GitHub issues .
Q: What games will be supported?
We hope to manage to support most of the catalog, the limitation is the game has to be GDK and in MSIXVC format.
So far Gears of War 4 is a prominent unsupported title for the time being.
Q: Will XBOX Backward Compatibility on PC work?
While Xodus is capable of downloading and running those titles. It's possible these games will work only after additional patches to wine, dxvk or vkd3d-proton.
Building
The project structure is as follows.
.
├── msixvc - [rlib] common rlib crate for utilities for parsing MSIXVC and XSP files
├── xodus - [rlib] common rlib crate that contains core xodus functionality, API calls abstractions and utilities
├── xodus-cli - [bin] CLI currently used for iterating over new xodus features
└── xodus-service - [bin] service process exposing a xodus.sock for IPC communication, it takes care of xgameruntime.dll integration.
[!NOTE] xodus-service aims to become a main point of integration. All xodus clients will connect to it to interact with games and XBOX services.
Prerequisites
- Rust version 1.98 or later
- Right now CLI relies on wry and tao to show a login page. Consult https://docs.rs/wry/latest/wry/#platform-considerations
- xodus-service relies on
protocto compileproto/definitions make sure to install it for your platform
Running
Building all crates in release mode
cargo build --release --workspaceRunning cli in debug
cargo run -- --help
Running xodus-service in debug
cargo run --bin xodus-service
Debug and profile xodus-cli or xodus-service with tokio-console
RUSTFLAGS="--cfg tokio_unstable" cargo run --features tokio_console
[!WARNING] For better performance when decrypting MSIXVC files, the
aesandssse3features are enabled onx86_64, and theaesfeature is enabled onaarch64. This means that the program will crash with an illegal instruction error when running on a CPU which doesn't support those instructions.See https://en.wikipedia.org/wiki/AES_instruction_set for a list of compatible CPUs (every processor from 2011 onwards should be supported).
CLI Usage
Usage: xodus-cli <COMMAND>
Commands:
download Download msixvc or xsp files for a given game
license Dump CIKs for use with XvdTool
extract Extract locally stored msixvc file
login
streaming Download and extract the game through streaming algorithm
clep Generate or decrypt base64-encoded CLEP challenge data
sp-license Decode SPLicenseBlock
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
Special Thanks
- XvdTool.Streaming and CikExtractor by LukeFZ