Skip to content

TheTsarDev/XNET

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

XNET v0.6.0.0 [STABILITY + PC CLIENT RELEASED]

End-to-end encrypted text, voice, file, and video communication for the original Xbox - and desktop PCs.

v0.6.0.0 public beta Β· Built with NXDK Β· Privacy by Design

XNET turns a retail original Xbox into a secure communicator. Up to four consoles - or a mix of consoles and PCs (Windows, macOS, or Linux) - can chat, talk, send files, and see each other on camera, all encrypted end-to-end and routed through a relay that cannot read message content.

βœ… Runs on a stock, unmodified 64 MB retail Xbox. No RAM upgrade, no developer hardware, no special revision required. If your console runs homebrew, it runs XNET - camera video included.


What's New in v0.6.0.0

This release adds a desktop PC client and stabilizes USB/camera behavior on the console at boot and in the menu.

  • XNET PC Client. A cross-platform GUI client (pc-client/) joins the same encrypted sessions as Xbox consoles - text chat, voice, Secure Transfer, and Secure Video. Windows: standalone release via build.bat (XNET-PC.exe). macOS and Linux: run from source with Python 3.10+ (see pc-client).
  • Deferred Secure Video camera init. The EyeToy / Xbox camera driver now claims the device at USB enumeration but does not start the sensor or isochronous stream until you enter a Secure Video session. Boot and the main menu stay quiet even with a camera plugged in.
  • USB stability at boot and in the menu. Fixes startup lockups with a camera connected but no Communicator present, and crashes when hot-plugging a Communicator after boot without one attached at power-on.
  • Settings cleanup (console). The development Camera Test entry was removed from Settings in v0.4.5.5; Secure Video is unchanged and is started from VIDEO CHAT on the main menu.

🌐 Connect out of the box (console). The Xbox release includes an xnet.cfg already pointed at a live public relay - flash, launch, and create or join a room. The relay blindly forwards encrypted packets and stores nothing. Prefer your own relay? Change it in Settings any time.

Compatibility: The PC client implements the same v0.5+ wire format as the console (AES-128-CBC + HMAC-SHA-256, synthetic IVs, anti-replay, relay-generated session nonces). Xbox consoles, the PC client, and the relay in a room must all be on v0.5.0 or later (v0.6.0.0 recommended). v0.4.x does not interoperate.


Features

  • Encrypted text chat - type from an on-screen keyboard (Xbox) or PC GUI.
  • Real-time voice chat - open-mic voice over an Xbox Communicator or Hawk adapter and headset (Xbox); PC microphone via PyAudio.
  • Secure video chat - live camera video from a PS2 EyeToy or Xbox camera (Xbox), or a PC webcam; up to four tiles.
  • Encrypted file transfer - send files console-to-console or PC ↔ Xbox.
  • Desktop PC client - full session client for chat, voice, transfer, and video on Windows (release build), macOS, and Linux (from source).
  • Authenticated encryption - AES-128-CBC with HMAC-SHA-256 (encrypt-then-MAC, verified before decryption).
  • Per-packet IVs + replay protection - a unique IV on every packet and a sliding-window sequence check that rejects replayed traffic.
  • Zero-knowledge relay - the server blindly forwards encrypted packets and stores nothing.
  • Zero persistence - rooms live only in memory and vanish when they end. No accounts, no friend lists, no cloud, no logs on the relay.
  • Built for the hardware - fits and runs on a stock 64 MB console at 640Γ—480.

Requirements

Console

  • An original Xbox capable of running homebrew (softmod, modchip, or TSOP).
  • 64 MB of RAM - i.e. a completely stock console. A 128 MB debug/dev console works too, but is not required.
  • A network connection (wired Ethernet; DHCP).

PC client

Platform Requirements
Windows Windows 10/11 (64-bit). Release build needs no Python install.
macOS / Linux Python 3.10+, Tk, PortAudio (for PyAudio). See pc-client.

All platforms: microphone and speakers (PyAudio) for voice; webcam (OpenCV) for Secure Video; same relay as the console (configurable in Settings).

Peripherals (optional, per feature)

Feature Hardware (Xbox) Hardware (PC)
Text + files Controller only Keyboard / mouse
Voice Xbox Communicator headset (045E:0283) - retail or Hawk; works with headsets like the Xbox 360 headset or a Logitech Pro X Microphone + speakers
Video PS2 EyeToy (silver US, 054C:0155) or the Japanese Xbox Video Camera (045E:028C) Webcam (Secure Video menu)

You can mix Xbox and PC peers in one room - a PC with only a headset can join video and participate by voice; a console with only a camera will be seen but silent.

Relay

XNET routes traffic between consoles through a relay (consoles never connect directly, so no one learns anyone else's IP). The release ships with a public relay already configured in xnet.cfg, so you don't need to set anything up to get started. You can point at a different relay or host your own any time - see Hosting a Relay below.


Installation

  1. Build default.xbe (see Building from Source) or grab a release build.
  2. FTP the XNET folder to your console (for example under E:\Apps\XNET\).
  3. The release includes an xnet.cfg next to default.xbe (the D: launch directory at runtime), already pointed at a public relay - keep it as-is to connect immediately, or edit it to use your own relay. See Configuration.
  4. Launch XNET from your dashboard.

PC client

Windows

  1. Open a terminal in pc-client/.
  2. Run run.bat (creates a venv, installs dependencies, launches the client) or build a standalone exe with build.bat.

macOS / Linux

  1. Open a terminal in pc-client/.
  2. Create a venv, install dependencies, and launch - see pc-client.

Use the same relay and room token as an Xbox peer. For Secure Video on Xbox, peers must use VIDEO CHAT β†’ JOIN (chat rooms ignore video packets).

On boot, XNET mounts the drives, brings up USB and networking, and drops you at the main menu. A log is written to E:\Dashboard\system\xnet.log.


Configuration

XNET reads xnet.cfg from its launch directory (D:\xnet.cfg) at boot. The release ships with this file already pointed at a public relay, so it works untouched - the example below just shows the format if you want to change anything. All keys are optional (anything omitted falls back to a built-in default), and everything here can also be changed in-app from the Settings screen, which writes the file back for you.

relay=your.relay.host.or.ip   # bundled cfg ships with a public relay pre-set
port=7777
mic_gate=50000
mic_gain=100
debug_log=0
Key Meaning
relay Relay hostname or IP (bundled cfg ships with a public relay)
port Relay port (default 7777)
mic_gate Voice activation threshold; 0 = open mic (always transmit)
mic_gain Mic input gain in percent (25–200); lower it if a hot mic distorts
debug_log 1 enables verbose per-frame logging for bug reports

Usage

From the main menu:

  • CREATE ROOM - generates a room token and waits for others to join.
  • JOIN ROOM - type a room token to enter an existing room.
  • VIDEO CHAT - start or join a Secure Video session (camera tiles + voice).
  • FILE TRANSFER - send or receive a file with another console.
  • SETTINGS - relay, mic, and diagnostics (below).
  • ABOUT - version and project info.
  • QUIT - return to the dashboard.

The room token is the secret. Anyone who has it can join the room and decrypt everything in it, so share tokens only over a channel you already trust, and prefer long, unpredictable ones.

Voice

Voice is open-mic - just talk; there's no push-to-talk. In a video session your own tile shows a live MIC ON / TALKING / NO MIC indicator so you can confirm you're transmitting.

Settings

  • RELAY IP / RELAY PORT - edit the relay you connect to (saved to xnet.cfg).
  • MIC SENSITIVITY - how loud you must be to transmit. A live meter shows your level against the gate; speak and watch the bar cross the line.
  • MIC GAIN - input volume (25–200%). If the meter shows CLIP while you talk normally, lower the gain. (Great for hot headset mics like a Pro X.)
  • DEBUG LOGGING - turn on a full diagnostic trace for bug reports, off for normal use.

Building from Source

XNET is built with the NXDK toolchain.

# install and set up NXDK first (see the NXDK docs), then:
export NXDK_DIR=/path/to/nxdk
cd _src
make

The build produces bin/default.xbe. The boot build: timestamp is regenerated automatically on every build, so it always reflects the current binary. The relay is a single Node.js file in _src_relay/. The PC client lives in pc-client/ (Python 3.10+, CustomTkinter).


Hosting a Relay

The relay (xnet-relay.js) is a small Node.js server. It is a blind forwarder: it moves encrypted packets between the consoles in a room and stores nothing.

node xnet-relay.js        # listens on port 7777 by default

Run it on any always-on host (a small VPS is plenty), point your consoles' relay/port at it, and you're done. See Recommendations for Relay Operators in the security docs for hardening notes. Please don't add content logging - the zero-knowledge design is the point.


Security

XNET encrypts all text, voice, video, and file content end-to-end with AES-128-CBC and authenticates every packet with HMAC-SHA-256 (encrypt-then-MAC, verified before decryption). As of v0.5+, every packet also carries a unique per-packet IV - derived deterministically from its authenticated header - and a sequence number checked against a per-sender sliding window that rejects duplicated or replayed packets. Session keys are derived locally from the room token and are never transmitted as keys; the relay forwards ciphertext only and does not hold a session key.

It is honest, hobbyist software for 24-year-old hardware - not an audited, high-threat tool. Please read the full details and limitations:

  • Security Policy - supported versions, threat model, and how to report a vulnerability.
  • Security Architecture - key derivation, packet framing, per-packet IV generation, the encrypt-then-MAC construction, the replay window, per-feature data paths, PC client parity, and the relay design.

Compatibility note: v0.5+ changed the wire format (sequence numbers, synthetic IVs, session nonces) and does not interoperate with v0.4.x. Every participant in a session - Xbox, PC client, and relay - must be on v0.5.0 or later.

Releases & SHA-256 Checksums

Xbox (v0.6.0.0)

File SHA-256
πŸ’Ώ XNET .iso b98ed39a7c1d20d3c277646d62f7024d5b985f90e23f9136df4c217a347cb247
πŸ’Ώ XNET .xiso 4aa28160f64ec929097bd5e92698393d1bff3800097a77413e7ff7609a1d0941
πŸ“ XNET .zip a5c7a5526615095c806871937e81cb66f0083bc2c59fa38f0050b2b13815159f

PC client (v0.6.0.0)

Platform SHA-256
XNET-PC-v0.6.0.0-win64.zip a4a2fef22036695db67843408c1c62ebe2f905283a0028142a4e95efdc137b64
XNET-PC.exe 9dd90f5437aad824cfba940f7f0ba22dead1621722e0dc0fbb7b02516f7e1785

Joins the same relay and room tokens as Xbox consoles. See pc-client for setup and usage.


Troubleshooting

  • A log is always written to E:\Dashboard\system\xnet.log (boot, device, and connection events). It truncates on every boot, so it stays small.
  • For a detailed report, enable DEBUG LOGGING in Settings, reproduce the issue, then grab the log over FTP. Verbose logging is memory-intensive on console - turn it on only to capture a specific problem, then turn it back off.
  • Can't connect on a fresh install? Make sure xnet.cfg is present next to default.xbe - the release ships with one pointed at the public relay. Without it, enter a relay in Settings before creating or joining a room.
  • No video tiles? Confirm the EyeToy enumerates in the log (camera: claimed … (init deferred) at boot; camera: init ok (streaming=1) after entering Secure Video). No audio? Confirm the Communicator enumerates (xblc: mic/spk streaming started).
  • PC client shows MIC: RUN SETUP.BAT (Windows)? Launch via run.bat, the venv Python, or the release XNET-PC.exe - not system Python. On macOS/Linux, use the venv from pc-client/README.md.

Known Bugs

  • xemu / disc builds: in-app config changes may not persist across launches on .iso / .xiso builds. A fix exists but is not folded into this build yet.

Source Availability and Documentation

  • XNET is intentionally written with extensive inline documentation and descriptive code structure. Comments, protocol notes, and implementation details are included throughout the source to promote transparency, simplify auditing, and make the project easier for others to understand, maintain, and contribute to. This level of documentation is deliberate and reflects the project's commitment to openness and long-term preservation.

Acknowledgments

XNET is built on tiny-AES-c, NXDK, camera and USB research from the original Xbox homebrew community, and the testers and contributors who keep the original Xbox alive online.

Special thanks to Team Resurgent and Darkone83 for their RXDK camera research project

Their work researching the original Xbox camera hardware and developing RXDK-based drivers for the OV519 chipset provided invaluable insight during the development of XNET's video subsystem. Their research greatly accelerated hardware bring-up, testing, and validation efforts.

Additional thanks to the contributors of the Xbox EyeToy project and ConsoleMods Wiki

  • Ryzee119 - discovering and testing OV519 hardware registers and device descriptors, and identifying camera device IDs within the original Xbox Video Chat software.
  • xbox7887 - research, testing, and documentation imagery.
  • Harcroft - research, testing, EEPROM patching, Xbox camera teardown, and guide development.
  • Libby - additional patching work.
  • Luke Usher - the original idea.
  • Evan Blax - English translation patch.

Their collective work preserving and documenting the original Xbox camera ecosystem made modern experimentation and compatibility efforts possible.

XNET would not exist without the collective knowledge shared by the original Xbox community over the past two decades.


β˜• Support Development

If you enjoy this project and would like to help support continued development, consider buying me a coffee.

Your support helps fund:

  • New features
  • Bug fixes
  • Original Xbox hardware for testing
  • Server infrastructure
  • Documentation and tooling
  • Future open-source projects

Buy Me A Coffee

Thank you for supporting independent development!

"Privacy by Design."

About

Secure communications for the original Xbox. XNET provides end-to-end encrypted text chat, voice chat, video chat, and secure file transfer on retail hardware. Built with NXDK, it uses a lightweight content-blind relay architecture and requires no accounts or centralized message storage.

Topics

Resources

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages