Plugin-less Xbox 360 network ISO launcher with Aurora dashboard integration.
Stream games from a PC or NAS over your local network. Aurora sees each game as a normal installed title — with boxart, metadata, and title update support — no dashboard plugin or modified Nova.xex required.
- A stub generator (Python, runs on your PC) creates a small
.xexper game with the correct Title ID and Media ID baked into the header - Aurora scans the stub like any local title — fetches cover art, associates DLC/title updates
- When you launch the stub, it connects to a netiso server on your network, mounts the ISO, locates
default.xexinside it, downloads it, and boots the game - The server is tuxuser/netiso-srv, used as-is
Requirements: RGH/JTAG console running Aurora dashboard.
proto/ Shared wire protocol definitions (C header)
stub/ libxenon stub source — the .xex that runs on Xbox 360
generator/ Host-side Python tool to produce per-game stubs
server/ Docker Compose config for netiso-srv
The stub is cross-compiled for Xbox 360 using the libxenon toolchain.
make docker-buildThis runs the build inside a free60/libxenon:latest container. Output: stub/netiso-stub.elf32.
Install the libxenon toolchain to /usr/local/xenon (or set DEVKITXENON):
export DEVKITXENON="/usr/local/xenon"
export PATH="$DEVKITXENON/bin:$DEVKITXENON/usr/bin:$PATH"
make stubOutput: stub/netiso-stub.elf32.
Place your .iso files in a directory and start the server:
cd server
mkdir -p isos
# copy/symlink your ISOs into isos/
docker compose upThe server listens on TCP port 4323 and recursively scans for .iso files. You can also run it natively — see server/README.md.
For each game you want to appear in Aurora, run the generator:
cd generator
python generate.py \
--title-id 4D5307E6 \
--media-id AABBCCDD \
--server 192.168.1.100 \
--iso Halo3.iso \
--stub ../stub/netiso-stub.elf32 \
--output ./output| Flag | Description |
|---|---|
--title-id |
8-character hex Title ID (e.g. 4D5307E6 for Halo 3) |
--media-id |
8-character hex Media ID |
--server |
IP address of the machine running netiso-srv |
--port |
Server port (default: 4323) |
--iso |
ISO filename as it appears on the server |
--stub |
Path to the compiled stub binary |
--output |
Output directory (default: ./output) |
This creates:
output/4D5307E6/
00007000/
4D5307E6.xex ← patched stub
netiso.cfg ← server + game config
You can find Title ID and Media ID for your games on sites like xboxunity.net.
-
Copy the generated folder to your Xbox 360 HDD via FTP:
output/4D5307E6/ → Hdd1:\Content\0000000000000000\4D5307E6\ -
In Aurora, scan for new content (or restart the dashboard)
-
The game appears with cover art and metadata
-
Launch it — the stub connects to your server and boots the game
Repeat the generator step for each game. You can script it for batch generation.
DLC and title updates stay on local storage in the standard Content directory structure. Aurora associates them with the stub by Title ID automatically.
Each stub reads a netiso.cfg placed next to it. The generator writes this automatically, but you can edit it manually:
[server]
host=192.168.1.100
port=4323
[game]
iso=Halo3.iso
title_id=4D5307E6
media_id=AABBCCDDTo point a game at a different server, just edit the config — no rebuild needed.
- After chain-loading
default.xex, the game cannot read additional disc sectors (levels, textures, audio) without a kernel-level virtual DVD driver. This is inherent to the bare-metal/plugin-less approach. Games that fit mostly in the executable will work; games that stream heavily from disc will not boot past initial loading. - The stub locates
default.xexin the ISO root directory only — games with non-standard executable paths are not supported. - No XBLA / GOD container support — ISO images only.
MIT