This library provides the core foundation for the smartglass protocol that is used with the Xbox One Gaming console
For in-depth information, check out the documentation: https://openxbox.org/smartglass-documentation
NOTE: Since 29.02.2020 the following modules are integrated into core: stump, auxiliary, rest-server NOTE: Nano module is still offered seperately
- Power on / off the console
- Get system info (running App/Game/Title, dashboard version)
- Media player control (seeing content id, content app, playback actions etc.)
- Stump protocol (Live-TV Streaming / IR control)
- Title / Auxiliary stream protocol (f.e. Fallout 4 companion app)
- Trigger GameDVR remotely
- REST Server
Major frameworks used
- Xbox WebAPI https://github.com/OpenXbox/xbox-webapi-python
- construct - Binary parsing https://construct.readthedocs.io/
- cryptography - cryptography magic https://cryptography.io/en/stable/
- dpkt - pcap parsing https://dpkt.readthedocs.io/en/latest/
- FastAPI - REST API https://github.com/tiangolo/fastapi
- urwid - TUI app https://github.com/urwid/urwid
- pydantic - JSON models https://github.com/samuelcolvin/pydantic
pip install xbox-smartglass-core
See the end of this README for development-targeted instructions.
How to use
There are several command line utilities to check out::
Some functionality, such as GameDVR record, requires authentication with your Microsoft Account to validate you have the right to trigger such action.
To authenticate / get authentication tokens use::
Start the server daemon
# Serve on '127.0.0.1:5557' $ xbox-rest-server INFO: Started server process  INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:5557 (Press CTRL+C to quit)
Example local network:
192.168.0.100 is the IP address of your computer running the server:
xbox-rest-server --host 192.168.0.100 -p 1234 INFO: Started server process  INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://192.168.0.100:1234 (Press CTRL+C to quit)
Since the migration from Flask framework to FastAPI, there is a nice OpenAPI documentation available:
If your server runs on something else than 127.0.0.1:5557 or 127.0.0.1:8080 you need to register your own OAUTH application on Azure AD and supply appropriate parameters to the login-endpoint of the REST server.
Fallout 4 relay service
To forward the title communication from the Xbox to your local host to use third-party Fallout 4 Pip boy applications or extensions
Here you can see the SmartGlass TUI (Text user interface):
Ready to contribute? Here's how to set up
xbox-smartglass-core-python for local development.
- Fork the
xbox-smartglass-core-pythonrepo on GitHub.
- Clone your fork locally
git clone firstname.lastname@example.org:your_name_here/xbox-smartglass-core-python.git
- Install your local copy into a virtual environment. This is how you set up your fork for local development
python -m venv ~/pyvenv/xbox-smartglass source ~/pyvenv/xbox-smartglass/bin/activate cd xbox-smartglass-core-python pip install -e .[dev]
- Create a branch for local development::
git checkout -b name-of-your-bugfix-or-feature
Make your changes.
Before pushing the changes to git, please verify they actually work
- Commit your changes and push your branch to GitHub::
git commit -m "Your detailed description of your changes." git push origin name-of-your-bugfix-or-feature
- Submit a pull request through the GitHub website.
Pull Request Guidelines
Before you submit a pull request, check that it meets these guidelines:
- Code includes unit-tests.
- Added code is properly named and documented.
- On major changes the README is updated.
- Run tests / linting locally before pushing to remote.