-
Notifications
You must be signed in to change notification settings - Fork 0
Commands
This page documents the XeCLI command surface by workflow area. Command examples use the installed terminal command rgh.
The Example output blocks on this page are representative results from the shipped CLI. Exact spacing, colors, and secondary detail lines can vary by flags, console state, and whether JSON mode is enabled.
Use this table when you know the job you need done but not the exact command namespace yet.
| Workflow | Start here |
|---|---|
| Check if the console is up |
rgh ping, rgh status, rgh title
|
| Find and connect to a console |
rgh start, rgh scan, rgh connect, rgh target
|
| Read or dump live memory |
rgh mem dump, rgh mem hexdump, rgh mem peek
|
| Change live memory |
rgh mem poke, rgh mem search --freeze
|
| Work with loaded modules |
rgh modules list, rgh modules info, rgh modules dump, rgh modules load, rgh modules unload
|
| Inspect threads or break execution |
rgh threads ..., rgh debug ...
|
| Pull files from the console |
rgh fs get, rgh ftp get, rgh xex dump, rgh screenshot
|
| Push files to the console |
rgh fs put, rgh ftp put, rgh save inject, rgh plugin enable
|
| Manage saves |
rgh save list, rgh save extract, rgh save inject
|
| Inspect or edit local CON/profile/GPD files |
rgh con ..., rgh profile ..., rgh xdbf ...
|
| Manage title content or DashLaunch plugins |
rgh content ..., rgh plugin ...
|
| Back up NAND or export XeLL keys |
rgh xell boot, rgh xell info, rgh xell kv export, rgh nand dump
|
| Inspect local XTAF/FATX disks or images |
rgh xtaf devices, rgh xtaf partitions, rgh xtaf scan, rgh xtaf info, rgh xtaf list, rgh xtaf find, rgh xtaf cat, rgh xtaf get, rgh xtaf extract, rgh xtaf dump
|
| Stage Original Xbox compatibility packs |
rgh ogxbox list, `rgh ogxbox install hacked |
| Browse or install avatar items from the local or hosted collection |
rgh avatar library ..., rgh avatar games, rgh avatar items, rgh avatar choose, rgh avatar browse, rgh avatar install
|
| Send visible console messages |
rgh notify, rgh notify-icons, rgh jrpc2 notify
|
| Analyze XEX files |
rgh xex strings, rgh xex decompile, rgh xex ida-decompile, rgh ghidra ..., rgh ida ...
|
| Convert retail ISOs |
rgh god info, rgh god build, rgh god watch
|
XeCLI is organized into a few major namespaces:
- Core commands: status, title, targeting, launch, reboot
- XBDM-backed commands: modules, memory, threads, debug, screenshot, file system
- JRPC2-backed commands: CPU key, temps, Title ID, dashboard, notifications, generic RPC
- XeLL-backed backup commands: XeLL inspection, keyvault export, and read-only NAND backup over the XeLL HTTP service
- FTP-backed commands: file access, saves, content, and plugin management
- Local content commands: CON package inspection, profile editing, and raw XDBF/GPD record access
- XTAF manager: local disk or image inspection, export, mutation, metadata, and repair workflows
- Analysis commands: XEX, Ghidra, IDA, metadata
- Packaging commands: Games on Demand conversion and watchdog mode
Shortcut equivalence:
-
rgh modules=rgh xbdm modules -
rgh module= alias ofrgh modules -
rgh mem=rgh xbdm mem -
rgh xex=rgh xbdm xex -
rgh fs=rgh xbdm fs -
rgh threads=rgh xbdm threads -
rgh debug=rgh xbdm debug -
rgh xtaf= primary FATX/XTAF manager for disks and images -
rgh fatman= compatibility alias ofrgh xtaf -
rgh fatx= compatibility alias ofrgh xtaf
High-traffic aliases:
-
rgh s=rgh start -
rgh c=rgh connect -
rgh discover=rgh scan -
rgh shot=rgh screenshot -
rgh run=rgh launch -
rgh xnotify=rgh notify -
rgh mem search=rgh mem find -
rgh mem read=rgh mem peek -
rgh mem write=rgh mem poke -
rgh module remove=rgh modules unload -
rgh module verify=rgh modules pending -
rgh avatar apply=rgh avatar install -
rgh fatman= compatibility alias ofrgh xtaf -
rgh fatx= compatibility alias ofrgh xtaf
For the exact top-level help screen and the exact help output of every top-level command group, see CLI Help Output.
| Option | Description |
|---|---|
--ip <IP> |
Console IP. Uses the saved target if omitted. |
--port <PORT> |
XBDM TCP port. Default: 730. |
--timeout <MS> |
Socket timeout in milliseconds. |
--json |
Emit JSON output when supported. |
| Option | Description |
|---|---|
--ip <IP> |
Console IP. Uses the saved target if omitted. |
--port <PORT> |
FTP port. Default: 21. |
--user <USER> |
FTP username. Default: xboxftp. |
--pass <PASS> |
FTP password. Default: xboxftp. |
--timeout <MS> |
FTP timeout in milliseconds. |
--json |
Emit JSON output when supported. |
| Option | Description |
|---|---|
--ports <PORTS> |
Comma-separated TCP ports to probe. Default: 730,731. |
--timeout <MS> |
Discovery timeout. Default: 400. |
--no-nap |
Disable NAP broadcast discovery. |
--no-tcp |
Disable TCP scan discovery. |
--json |
Emit discovery results as JSON. |
| Option | Description |
|---|---|
--ip <IP> |
Console IP. Uses the saved target if omitted. |
--port <PORT> |
XBDM TCP port used while the console is still on the dashboard. Default: 730. |
--timeout <MS> |
Socket timeout in milliseconds. |
--json |
Emit JSON output when supported. |
--force-xell |
Skip the XellLaunch shortcut path and force the direct reboot-into-XeLL path. |
Notes:
- XeCLI always asks for confirmation before the first automatic reboot into XeLL.
- If the shell is non-interactive or XeLL cannot be launched automatically, XeCLI prints the manual eject-button fallback instead of guessing.
- Once XeLL is requested, XeCLI waits up to 30 seconds for the XeLL HTTP service on port 80 and then uses the detected XeLL IP.
Console summary view with XBDM identity, running XEX, JRPC-backed fields, drive layout, and sign-in information.
rgh status
rgh status --quick
rgh status --json
rgh status --no-drives --no-usersNotes:
-
--quickskips slower JRPC, drive, and sign-in probes. - Skipped fields are rendered as skipped instead of unknown.
- When a pending module load or unload is being tracked across a reboot,
statuscan surface that state.
Example output:
Status
IP 192.168.1.186
Execution State start
Title ID 0xFFFE07D1
Title Name Aurora
Signed In Yes
Gamertag ExampleUser
Enumerates sign-in and profile information gathered from XBDM, JRPC/XAM, FTP, and F3 when available.
rgh profiles
rgh profiles --json
rgh profiles --no-ftp
rgh profiles --no-f3Example output:
Signed-In Users
User 0 ExampleUser state=SignedInToLive xuid=0x<xuid>
Profiles (FTP)
72 profile containers found across Hdd1 and Usb devices
Resolve the active title or look up a specific Title ID from the bundled database.
rgh title
rgh title --json
rgh title 415608C3
rgh title 415608C3 2B7302D6
rgh title activeExample output:
Active Title
Title ID 0xFFFE07D1
Title Name Aurora
Media ID unknown
Source running xex path + bundled database
Show, set, or clear the saved default XBDM target.
rgh target
rgh target --set <console-ip>
rgh target --set <console-ip> --port 730
rgh target --clearExample output:
Default target
IP 192.168.1.186
Port 730
Fast XBDM connectivity check.
rgh pingExample output:
OK 21 ms
Cold reboot or title reboot.
rgh reboot
rgh reboot --title
rgh reboot --notifyExample output:
SUCCESS Reboot requested
cold reboot command sent to console
Power off the console through the JRPC power path.
rgh shutdown
rgh shutdown --notifyExample output:
SUCCESS Shutdown requested
power-off command sent to console
Launch a XEX with optional directory, arguments, title hint, and notification.
rgh launch Hdd1:\Aurora\Aurora.xex
rgh launch Hdd1:\Aurora\Aurora.xex --titleid FFFE07D1
rgh launch --xex Hdd1:\Aurora\Aurora.xex --args "debug=1"
rgh launch --xex Hdd1:\Aurora\Aurora.xex --dry-runExample output:
SUCCESS Launch requested
Hdd1:\Aurora\Aurora.xex
Target title: Aurora (0xFFFE07D1)
Arguments: debug=1
rgh language shows or changes the saved UI language XeCLI uses when no --lang override or XECLI_LANG environment variable is supplied.
rgh language
rgh language --set es
rgh language --set en
rgh language --clearExample output:
Field Value
Saved UI language Español (es)
Effective language Español (es)
CLI override Use --lang en|es for one command
For Windows installation and PATH registration, use the published setup executable. rgh language is only for the saved CLI language preference.
Download one or more public homebrew packages onto a USB drive, staging folder, or detected console drive.
rgh homebrew list
rgh homebrew install aurora --usb E:
rgh homebrew install all --usb E: --auto-confirm
rgh homebrew install aurora --device Hdd1 --ini-mode merge
rgh homebrew install all --device Hdd1 --ini-mode generated --auto-confirm
rgh homebrew install dashlaunch --usb A:\UsbStage --force-download
rgh homebrew install xm360 --usb E:
rgh homebrew install timefixer --usb E:
rgh homebrew install simple360 --usb E:
rgh homebrew install xelllaunch --usb E:Example output:
SUCCESS Homebrew install complete
4 package(s) 326 MB -> E:\
Package Installed To Files Size
Aurora 0.7b.2 E:\Aurora 167 38.69 MB
DashLaunch 3.21 E:\DashLaunch 8 2.52 MB
XeXMenu 1.2 E:\XeXMenu 1 203.37 MB
Freestyle Dash 3 E:\FreestyleDash 26 81.43 MB
Generated E:\launch.ini
Copied bundled console plugins into E:\Plugins
The current package catalog also includes XM360, TimeFixer, Simple 360 NAND Flasher, and XellLaunch.
Native read-only backup flows no longer depend on Simple 360 NAND Flasher. Use rgh xell ... and rgh nand dump when you want XeLL inspection, keyvault export, or a verified NAND backup directly from XeCLI.
Console install example output:
SUCCESS Console homebrew install complete
1 package(s) 2.52 MB -> Hdd1 on 192.168.1.186
Package Console Path Files Size
DashLaunch 3.21 /Hdd1/DashLaunch 8 2.52 MB
Bundled plugins copied to /Hdd1/Plugins
Updated existing launch.ini plugin entries /Hdd1/launch.ini
Important options:
-
--usb <TARGET>accepts a drive letter, removable-drive selection number, or folder path - omit
--usbto install directly onto the console through FTP -
--device <DEVICE>targets a detected console drive such asHdd1,Usb0,Usb1, orUsb2 -
--ini-mode <generated|merge|skip>chooses whether XeCLI creates a freshlaunch.ini, updates plugin entries in the existing file, or leaves it alone -
--ini <PATH>overrides the console-sidelaunch.inipath when using direct console install -
--cache <DIR>moves archive and staging storage to a different directory -
--force-downloadrefreshes cached archives -
--auto-confirmskips the confirmation prompt before staging or direct console install -
--jsonemits machine-readable package install output
Stage or install one of the public Original Xbox XeFu compatibility sets.
rgh ogxbox list
rgh ogxbox install hacked --usb E:
rgh ogxbox install hud --include-fixer --usb E:
rgh ogxbox install retailSet choices:
-
hacked- best default choice for modded consoles
- removes stock whitelist/restriction checks and targets wider compatibility
-
hud- same hacked base, but keeps the full Xbox 360 guide enabled during original Xbox titles
- can cost performance or compatibility in some games
-
retail- stock-style emulator files
- closest to the original Microsoft behavior
Example output:
SUCCESS Original Xbox compatibility install complete
Hacked XeFu Pack -> /HddX/Compatibility
Field Value
Mode console
XeFu Set Hacked XeFu Pack
Target 192.168.1.186
Compatibility Path /HddX/Compatibility
Compatibility Files Installed
Fixer Included No
Files 23
Size 31.42 MB
Important options:
-
--usb <TARGET>stages to a removable USB drive or folder instead of installing directly to the console - omit
--usbto connect over FTP and targetHddX:\Compatibility -
--include-fixeralso stages or installs HDD Compatibility Partition Fixer so you can createHddXon drives that do not have it yet -
--cache <DIR>moves archive and staging storage to a different directory -
--force-downloadrefreshes cached archives -
--auto-confirmskips the confirmation prompt -
--jsonemits machine-readable install output
If HddX is missing and --include-fixer is not used, XeCLI stops before writing anything and tells you to rerun with the fixer included.
These commands use XeLL Reloaded's HTTP services for read-only backup operations. XeCLI supports both older endpoint layouts such as /rawflash and the current XeLL Reloaded layout such as /FLASH, /FUSE, /KV, /KVRAW, /KVRAW2, /LOG, and /REBOOT.
Detect the current mode, prompt before the first dashboard-to-XeLL reboot, and attach to the XeLL web service when it comes up.
rgh xell boot
rgh xell boot --force-xell
rgh xell boot --jsonNotes:
- If the console is already in XeLL, the command reuses the active XeLL session.
- If the console is on the dashboard, XeCLI asks before launching XeLL automatically.
- If auto-launch is unavailable, XeCLI tells you to boot XeLL manually with eject and rerun the command.
- The standalone
XeCLI-XellFetchrepo can be used as the minimal XeLL-side bootstrap when you want the automated NAND flow without the broader desktop bundle. See XeCLI-XellFetch for the payload model and workflow boundaries.
Example output:
SUCCESS XeLL ready
XeLL IP: 192.168.88.99
Inspect the XeLL HTTP service and show which backup-related endpoints are currently exposed.
rgh xell info
rgh xell info --force-xell
rgh xell info --jsonExample output:
Field Value
XeLL IP 192.168.88.99
Flash Dump /FLASH
Key Vault /KV
Raw Key Vault /KVRAW
CPU Key E64E0C1D4E2D...
CPU Key Source /FUSE
Startup Log /LOG
Fuse Dump available
Reboot /REBOOT
Export the XeLL keyvault output, capture the CPU key, and package a verified backup set.
rgh xell kv export
rgh xell kv export --output kv_backup.bin
rgh xell kv export --rawNotes:
- Default mode downloads the decrypted keyvault from
/KV.--rawswitches to/KVRAWor/KVRAW2. - The export requires a CPU key. If XeLL does not expose one, XeCLI fails rather than producing an incomplete set.
- Host output includes your chosen KV filename,
KV+CPU KEY.txt, a sibling*.CPUKEY.txt, optional*.fuses.txt,*.sha256.txt, and a.zip. - The archive is normalized to stable names such as
KV.binorKV_RAW.bin,CPUKEY.txt,KV+CPU KEY.txt,fuses.txt, andmanifest.sha256.txt.
Example output:
SUCCESS Keyvault export complete
KV: A:\Backups\kv_backup.bin
CPU key: A:\Backups\kv_backup.CPUKEY.txt
Combined text: A:\Backups\KV+CPU KEY.txt
Archive: A:\Backups\kv_backup.zip
Manifest: A:\Backups\kv_backup.sha256.txt
Boot XeLL Reloaded, download a flash dump, verify repeated reads, and package the result as a safe backup set.
rgh nand dump
rgh nand dump --single
rgh nand dump --output nand_backup.bin
rgh nand dump --force-xellNotes:
- This workflow is read-only. XeCLI never writes to NAND.
- In v1.0.6 this is the single PC-side entry point for the automated NAND dump flow.
-
rgh nand dumptakes the first dump, reboots back into XeLL, and compares the next dump byte-for-byte against the reference. - If the verification dump differs, XeCLI retries the second dump up to three more times before failing hard with "Do not flash these files."
- After the bytes match, XeCLI verifies the copied output file, writes a SHA-256 manifest, builds a zip, and re-verifies every archive entry against the source files.
- Host output includes the NAND image, optional
*.cpukey.txt, optional*.startup-log.txt,*.sha256.txt, and a verified.zip. -
--singleand--no-verifyskip the repeated-dump loop, but the archive and manifest are still verified. - XeCLI stages the helper/linker assets required by the automated workflow so the operator does not have to assemble them manually.
Example output:
SUCCESS NAND dump verified
NAND: A:\Backups\nand_backup_20260323_024501.bin
Archive: A:\Backups\nand_backup_20260323_024501.zip
Manifest: A:\Backups\nand_backup_20260323_024501.sha256.txt
CPU key: A:\Backups\nand_backup_20260323_024501.cpukey.txt
NAND verified — safe to flash
Archive and manifest verified.
Fatman is XeCLI's read-only FATX manager for local Xbox 360 disks and images. The current release cut focuses on image recovery, partition dumping, inspection, search, and export, not on write, mount, format, or repair operations.
rgh fatman devices
rgh fatman partitions
rgh fatman scan
rgh fatman info
rgh fatman list
rgh fatman find
rgh fatman cat
rgh fatman get
rgh fatman extract
rgh fatman dump- use
--offsetto open a FATX/XTAF volume directly from a byte offset - use
--lengthwith--offsetwhen you want to clamp the manual partition size - both values accept decimal bytes or
0x-prefixed hex - use
rgh fatman scanfirst when you need candidate offsets for a nonstandard image
rgh fatman scan --image .\Unknown.img
rgh fatman info --image .\Unknown.img --offset 0xB6600000
rgh fatman list --image .\Unknown.img --offset 0xB6600000 --path /
rgh fatman dump --image .\Unknown.img --offset 0xB6600000 --length 0x10000000 --out .\partition-dump- detect FATX-capable disks or image sources
- inspect partitions and volume details
- browse directories and locate entries
- search by name or path
- recover data from
.imgand.binsources - print small files in the terminal
- dump partitions to a host directory
- export selected files or directory trees to the host
- the runtime has been verified against a synthetic FATX fixture image
- manual-open and scan flows were also validated against a nonstandard AMPED HDD image, where Fatman surfaced real
XTAFoffsets and opened the compatibility volume by bounded offset
- write files back to FATX volumes
- format or repartition disks
- mount a virtual filesystem
- repair damaged volumes
- modify security sectors or low-level disk metadata
Fatman Sources
0 Disk 0 932.51 GB Xbox 360 HDD
1 Disk 1 32.00 GB USB Flash Drive
Selected source: Disk 0 / Hdd1
Partitions:
Hdd1 419.41 GB FATX
HddX 1.00 GB FATX
rgh start is the manual version of the discovery flow that the installer can launch immediately after setup.
rgh start
rgh start --jsonExample output:
Detected Consoles
#1 192.168.1.186 Jtag 0037XXXXXXXX190
Default target updated to 192.168.1.186
rgh connect is the manual follow-up when you already know the discovery result you want to target.
rgh connect 1
rgh connect <console-ip>Example output:
SUCCESS Target updated
192.168.1.186:730
rgh scan is the discovery-only path. The installer uses a quieter variant of this flow after setup and only prompts when a console is found.
rgh scan
rgh scan --jsonExample output:
Detected Consoles
#1 192.168.1.186 Jtag 0037XXXXXXXX190 tcp+nap
rgh screenshot --out .\screen.bmp
rgh screenshot --out .\screen.bmp --forceThe command emits decoded frame-buffer metadata after a successful capture.
Example output:
SUCCESS Screenshot captured
1024x576 pitch=4096 format=0x00000012
.\screen.bmp
rgh xbdm info
rgh xbdm info --jsonExample output:
XBDM Info
Debug Name Jtag
DM Version 2.0.21076.11
Flavor Natelx did, of course
rgh xbdm raw --cmd "modules"
rgh xbdm raw --cmd "dirlist name=Hdd:\\"Example output:
(202) multiline response follows
name="xam.xex" base=0x82000000 size=0x001C0000
name="Aurora.xex" base=0x90F00000 size=0x00480000
rgh xbdm screenshot --out .\screen.bmpExample output:
SUCCESS Screenshot captured
.\screen.bmp
rgh modules list
rgh modules list --json
rgh modules list --sectionsExample output:
Modules
xboxkrnl.exe 0x80010000 0x005A0000
xam.xex 0x82000000 0x001C0000
Aurora.xex 0x90F00000 0x00480000
rgh modules info --name Aurora.xex
rgh modules info --name xam.xex --sectionsExample output:
Module Info
Name Aurora.xex
Base 0x90F00000
Size 0x00480000
Path \Device\Harddisk0\Partition1\Aurora\Aurora.xex
rgh modules dump --name xam.xex --out .\xam.bin
rgh modules dump --all --dir .\modulesExample output:
SUCCESS Module dump complete
xam.xex -> .\xam.bin
rgh modules load --path Hdd:\HvP2.xex
rgh modules load --path Hdd:\HvP2.xex --system
rgh modules load --path Hdd:\HvP2.xex --system --reboot-expected
rgh modules load --path Hdd:\HvP2.xex --dry-runImportant options:
-
--flags <N>kernel load flags, default8 -
--systemruns the load on a system thread instead of the default title thread -
--reboot-expectedpersists pending verification if the console disconnects as part of the load -
--notifysends the default console success notification
Example output:
SUCCESS Module loaded
HvP2.xex at 0x91340000
rgh modules unload --name HvP2.xex --force
rgh modules unload --handle 0x91340000 --force
rgh modules unload --name HvP2.xex --force --notifyImportant options:
-
--forceis required -
--skip-markdisables the sysdll unload marker write athandle+0x40 -
--dry-runresolves the target without modifying memory
Example output:
SUCCESS Module unloaded
0x91340000 HvP2.xex
rgh modules pendingUse this after:
rgh modules load --path Hdd:\HvP2.xex --system --reboot-expectedExample output:
SUCCESS Pending module load verified
HvP2.xex at 0x91340000
rgh mem dump --addr 0x82000000 --size 0x20000 --out .\mem.binExample output:
SUCCESS Memory dump complete
0x82000000 length=0x00020000 -> .\mem.bin
rgh mem hexdump --addr 0x30000000 --size 0x40Example output:
0x30000000 DE AD BE EF 01 02 03 04 05 06 07 08 09 0A 0B 0C ................
0x30000010 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................
rgh mem regions
rgh mem regions --jsonExample output:
Memory Regions
0x80000000 0x02000000 protect=0x00000020
0x82000000 0x01000000 protect=0x00000004
rgh mem peek --addr 0x82000000 --type u32
rgh mem peek --addr 0x82000000 --type ascii --len 32Example output:
0x82000000 = 0x12345678 (u32)
rgh mem poke --addr 0x82000000 --type u32 --value 0x12345678
rgh mem poke --addr 0x82000000 --type float --value 1337
rgh mem poke --addr 0x82000000 --type string --value "XeCLI"Type aliases include:
-
u8,u16,u32,u64 -
s8,s16,s32,s64 -
f32,f64 -
byte,int,uint,float -
ascii,string,hex,bytes
Example output:
SUCCESS Memory write complete
0x82000000 <= 0x12345678 (u32)
rgh mem watch --addr 0x82000000 --size 0x40
rgh mem watch --addr 0x82000000 --size 0x40 --interval 100 --count 10Example output:
watch 1 0x82000000 78 56 34 12 ...
watch 2 0x82000000 79 56 34 12 ...
rgh mem strings --addr 0x82000000 --size 0x20000 --min 6
rgh mem strings --addr 0x82000000 --size 0x20000 --jsonExample output:
0x82014020 ascii xam.xex
0x82014210 ascii XeKeysExecute
Alias of rgh mem find.
rgh mem search --addr 0x30000000 --size 0x1000 --pattern DEADBEEF
rgh mem search --addr 0x82000000 --size 0x20000 --ascii "xam.xex"
rgh mem search --addr 0x82000000 --size 0x20000 --pattern 00000000 --out .\hits.jsonFreeze options:
rgh mem search --addr 0x82000000 --size 0x20000 --pattern 00000000 --freeze --freeze-type u32 --freeze-value 305419896
rgh mem search --addr 0x82000000 --size 0x20000 --pattern 00000000 --freeze --freeze-all --freeze-count 5Example output:
Hits
0x82000120
0x820004A8
0x820019F0
rgh xex dump --out .\title.xex
rgh xex dump --path Hdd1:\Aurora\Aurora.xex --out .\aurora.xexExample output:
SUCCESS XEX dump complete
\Device\Harddisk0\Partition1\Aurora\Aurora.xex -> .\aurora.xex
rgh xex strings --running --unicode --min 6
rgh xex strings --ftp-path /Hdd1/Aurora/Aurora.xex --out .\strings.txt
rgh xex strings --in .\title.xex --jsonExample output:
XEX Strings
0x00000000 ascii XEX2
0x0005B8A0 utf16le Aurora
rgh xex decompile --in .\title.xex --out .\decomp
rgh xex decompile --running --out .\decomp --max 200Example output:
SUCCESS Ghidra decompile complete
200 function files written to .\decomp
rgh fs list --path Hdd:\
rgh fs get --path Hdd:\launch.ini --out .\launch.ini
rgh fs put --path Hdd:\launch.ini --in .\launch.ini
rgh fs cat --path Hdd:\launch.ini
rgh fs rm --path Hdd:\temp\old.txt
rgh fs mkdir --path Hdd:\temp\newdir
rgh fs mv --from Hdd:\old.txt --to Hdd:\new.txtExample output:
Directory
Aurora Dir
launch.ini File 12794
Target management:
rgh ftp target
rgh ftp target --set <console-ip> --user <ftp-user> --pass <ftp-pass>
rgh ftp target --clearrgh ftp list --path /Hdd1/
rgh ftp find --path /Hdd1/ --name *.xex
rgh ftp get --path /Hdd1/launch.ini --out .\launch.ini
rgh ftp put --path /Hdd1/launch.ini --in .\launch.ini
rgh ftp cat --path /Hdd1/launch.ini
rgh ftp rm --path /Hdd1/temp/old.txt
rgh ftp mkdir --path /Hdd1/newdir
rgh ftp mv --from /Hdd1/old.txt --to /Hdd1/new.txtExample output:
SUCCESS FTP upload complete
.\launch.ini -> /Hdd1/launch.ini (12.49 KB)
rgh threads list
rgh threads context --id 0xFB000008
rgh threads suspend --id 0xFB000008
rgh threads resume --id 0xFB000008Example output:
Threads
# ID Image Start Addr. End Addr. Stack Base Stack Limit
1 0xFB000008 xboxkrnl.exe 0x8012E3C0 0x801F0000 0x7A020000 0x7A010000
2 0xF9000004 Aurora.xex 0x82458C90 0x82BF0000 0x700A0000 0x70060000
threads list now resolves the thread start routine address and, when that address lands inside a loaded image, also shows the containing image name and end boundary. End Addr. is the containing image end boundary, not a recovered function end.
rgh threads list --json includes ImageName, StartAddress, and EndAddress for the same reason.
rgh debug stop
rgh debug go
rgh debug watchExample output:
execution stopped
execution started
rgh debug break add --addr 0x82001000
rgh debug break remove --addr 0x82001000
rgh debug break clearallExample output:
SUCCESS Breakpoint added
0x82001000
rgh debug databreak add --addr 0x82100000 --size 4 --type write
rgh debug databreak remove --addr 0x82100000 --size 4 --type writeExample output:
SUCCESS Data breakpoint added
addr=0x82100000 size=4 type=write
rgh jrpc2 cpu-key
rgh jrpc2 temps
rgh jrpc2 temps --sensor gpu
rgh jrpc2 title-id
rgh jrpc2 dashboard
rgh jrpc2 motherboard
rgh jrpc2 resolve --module xam.xex --ordinal 526
rgh jrpc2 notify --message "XeCLI"
rgh jrpc2 call --module xam.xex --ordinal 526 --ret int --arg int:0Example output:
CPU Key 587AC7...
Dashboard 17559
Motherboard Trinity
rgh notify "Success :)"
rgh notify "XeCLI connected" 14
rgh notify --message "XeCLI connected" --icon info
rgh notify-icons list
rgh notify-icons show 14
rgh notify-icons add --name success --logo 0x24
rgh notify-icons remove --name successFor the full XNotify explanation, icon IDs, direct numeric usage, and integration notes, see XNotify.
Example output:
SUCCESS Notification sent
message="XeCLI connected" logo=14 (Flashing happy face)
rgh notify-icons show 14
rgh notify-icons show success
rgh notify-icons show achievementExample output:
Input 14
Logo ID 14
Label Flashing happy face
Notes Common success/smiley icon
rgh signin state
rgh signin state --jsonExample output:
Signed In Yes
State Signed in locally
Gamertag ExampleUser
XUID 0x<xuid>
Slot 0
rgh led set --preset quadrant1
rgh led set --preset all-green --notify
rgh led set --tl green --tr off --bl off --br offExample output:
SUCCESS Ring light updated
TL=green, TR=off, BL=off, BR=off
rgh led state
rgh led state --jsonExample output:
Source Last XeCLI-applied ring-light state
Preset quadrant1
Top Left green
Top Right off
Bottom Left off
Bottom Right off
rgh fan set --speed 55 --channel both
rgh fan set --speed 45 --channel primary
rgh fan set --speed 60 --channel secondary --notifyExample output:
SUCCESS Fan command sent
50% requested for both
rgh fan show
rgh fan show --jsonExample output:
Source Last XeCLI-applied manual setting
Speed 50%
Channel both
rgh smc version
rgh smc version --jsonExample output:
SUCCESS SMC version
2.3
Read Hardware and System Controls for the deeper operational notes around sign-in state, LED presets, fan command behavior, and SMC version availability.
Open or close the physical disc tray through the JRPC/XAM path.
rgh tray open
rgh tray closeExample output:
SUCCESS Disc tray opened
SUCCESS Disc tray closed
Show a native Xbox 360 popup. This is the trainer-style popup path, not a standard XNotify toast.
rgh popup show --title "XeCLI" --body "Connected to console"
rgh popup show --title "Warning" --body "Module reload required" --preset warning
rgh popup show --title "Question" --body "Continue?" --preset question
rgh popup show --title "Raw Style" --body "Testing" --style 3Preset values:
noneerrorwarningquestion
Example output:
SUCCESS Popup requested
Title="XeCLI" Preset=warning Buttons=1
Reads or writes the current in-game gamertag for supported titles. gamertag and name remain compatibility aliases, but gt is the canonical command group.
Spoof confirmation notifications use the bottom position by default when --notify is supplied. The command also caches the original gamertag/XUID for the current target and title the first time you spoof, so rgh spoof reset can restore it later even if the signed-in user is no longer resolvable.
For BO2, this is the supported local spoof path. XeCLI keeps the visible name, the local XUID surfaces, and the deeper local account block aligned during a gamertag-only spoof.
rgh spoof gt
rgh spoof gt ExampleTag
rgh spoof gt set --value ExampleTag --notify
rgh spoof gamertag ExampleTagExample output:
Game Call of Duty: Black Ops II
Gamertag ExampleTag
Address 0x841E1B30
Write example:
SUCCESS Gamertag spoof applied
XeCliTmp
Reads or writes the current in-game XUID for supported titles.
Spoof confirmation notifications use the bottom position by default when --notify is supplied. The original local identity is cached per target and title before the spoof is applied.
rgh spoof xuid
rgh spoof xuid <xuid>
rgh spoof xuid set --value <xuid>Example output:
Game Call of Duty: Black Ops II
XUID <xuid>
Stored <stored-xuid>
Binary Addr 0x841E1B50
Text Addr 0x841E1B58
BO2 notes:
-
rgh spoof xuid showandrgh spoof xuid setare supported on BO2 - run them after BO2 has reached the multiplayer front-end or a live lobby
- XeCLI updates the visible local XUID surfaces plus the known BO2 account/persona caches
- this remains an in-title memory spoof, not a real signed-in Xbox Live account swap or entitlement change
Overwrites remote-player text slots for supported titles. The simple positional form applies the same text to every supported slot in the current title. This does not change the local in-game gamertag block.
Remote spoof confirmations also use the bottom position by default when --notify is supplied. If you later run rgh spoof reset, XeCLI will prefer the cached pre-spoof local identity for the same target/title when no explicit override is supplied.
BO2's verified remote layout is exposed as slots 2-12 because the first title-local slot is reserved.
Full feature notes, supported titles, and workflow examples are covered in Remote Spoofing.
rgh spoof remote XeCliRemote
rgh spoof remote list
rgh spoof remote apply --slot 1 --text HostName
rgh spoof remote apply --all --text XeCLI-{slot}Example output:
SUCCESS Remote spoof applied
Call of Duty: Black Ops II => XeCliRemote
Slot Verified Address
2 XeCliRemote 0x841E7334
...
12 XeCliRemote 0x8421E2E4
Restores the in-game identity from the signed-in user or explicit values. Use --clear-remote if you also want to clear supported remote slot names.
If no explicit --gamertag or --xuid is provided, XeCLI first tries the cached pre-spoof identity for the same target/title, then falls back to the currently signed-in user when available.
On BO2, reset is the supported path for restoring the local GT spoof state and optionally clearing the remote slots. It is not documented as a full BO2 account handoff, and on the live validation box it handed the session back out to Aurora after restoring the identity.
rgh spoof reset --current-user
rgh spoof reset --gamertag <gamertag> --xuid <xuid>
rgh spoof reset --current-user --clear-remoteExample output:
SUCCESS Spoof reset applied
Local identity restored and remote slots cleared
rgh save list --titleid FFFE07D1 --device Hdd1
rgh save list --titleid 415608C3 --profile E00012AA8D7879B4Example output:
Save Files
/Hdd1/Content/E00012AA8D7879B4/415608C3/00010000/savegame.svg
rgh save extract --titleid 415608C3 --out .\saves
rgh save extract --titleid 415608C3 --profile E00012AA8D7879B4 --device Hdd1 --overwriteExample output:
SUCCESS Save extract complete
3 file(s) 8.2 MB -> .\saves\Grand Theft Auto V (0x415608C3)
rgh save inject --titleid 415608C3 --in .\saves --device Hdd1
rgh save inject --titleid 415608C3 --profile E00012AA8D7879B4 --in .\save.bin --overwriteExample output:
SUCCESS Save inject complete
1 file(s) 128 KB -> /Hdd1/Content/E00012AA8D7879B4/415608C3
rgh content list
rgh content list --device Hdd1 --show-types
rgh content list --titleid 415608C3Example output:
Installed Content
415608C3 Grand Theft Auto V Game
415608C3 Grand Theft Auto V Title Update
rgh content delete --titleid 415608C3 --type "Title Update"Treat delete operations as destructive.
Example output:
SUCCESS Content delete complete
Title Update for 0x415608C3 removed
These commands operate on local files on the PC, not live console memory. A typical workflow is:
- Use
rgh profiles --jsonorrgh content listto locate the container on the console. - Pull it locally with
rgh ftp getorrgh fs get. - Inspect or edit it with
rgh con,rgh profile, andrgh xdbf. - Validate the result with
rgh con verifybefore copying it back anywhere else.
For profile packages, XeCLI writes changes back into the local container, refreshes STFS hashes, and preserves a valid CON signature when the package is a console-signed profile.
Use con for package-level metadata, verification, rehash, resign, and FATX-path derivation.
rgh con info .\E00012AA8D7879B4.con
rgh con verify .\E00012AA8D7879B4.con
rgh con rehash .\E00012AA8D7879B4.con
rgh con resign .\E00012AA8D7879B4-copy.con
rgh con magic-name .\E00012AA8D7879B4.con
rgh con fatx-path .\E00012AA8D7879B4.con --fix-nameExample output:
Path .\E00012AA8D7879B4.con
Signature Type Console
Content Type Profile
STFS valid
FATX Path Content\E00012AA8D7879B4\FFFE07D1\00010000\E00012AA8D7879B4
Use profile for decoded profile/package workflows: package summary, account extraction, embedded GPD extraction, title records, achievements, settings, and avatar colors.
rgh profiles and rgh profile are different:
-
rgh profilesdiscovers live console profiles over XBDM/JRPC/FTP/F3 -
rgh profileworks on one local pulled profile container such asE000xxxxxxxxxxxx.con
rgh profile info .\E00012AA8D7879B4.con
rgh profile extract .\E00012AA8D7879B4.con .\profile-files
rgh profile account show .\E00012AA8D7879B4.con
rgh profile account extract .\E00012AA8D7879B4.con .\Account
rgh profile account set-gamertag .\E00012AA8D7879B4.con XeCliTest
rgh profile gpd list .\E00012AA8D7879B4.con
rgh profile gpd extract .\E00012AA8D7879B4.con .\FFFE07D1.gpd --dashboard
rgh profile gpd extract .\E00012AA8D7879B4.con .\415607E7.gpd --titleid 415607E7
rgh profile titles list .\E00012AA8D7879B4.con
rgh profile achievements list .\E00012AA8D7879B4.con --titleid 415607E7
rgh profile achievements unlock .\E00012AA8D7879B4.con --titleid 415607E7 --achievementid 0x00000004
rgh profile achievements lock .\E00012AA8D7879B4.con --titleid 415607E7 --achievementid 0x00000004
rgh profile settings list .\E00012AA8D7879B4.con
rgh profile settings get .\E00012AA8D7879B4.con 0x10040006
rgh profile settings set .\E00012AA8D7879B4.con 0x10040006 1337
rgh profile avatar-colors get .\E00012AA8D7879B4.con
rgh profile avatar-colors set .\E00012AA8D7879B4.con --hair 0xFF112233 --face-paint 0xFF556677Notes:
-
profile account extractexports the rawAccountpayload without needing a full package extract. -
profile gpd listsurfaces the dashboard GPD plus each embedded title GPD found in the container. -
profile gpd extractis the targeted path when you only wantFFFE07D1.gpdor one game GPD. -
profile settings setcan update existing records or create missing records when--typeis supplied. -
profile avatar-colorsedits the dashboard avatar blob stored in setting0x63E80044. - Mutating commands are safest on a disposable copy until you are comfortable with the exact workflow.
Example output:
Profile Package
Profile ID 0xE00003608D3F513F
Signature Console
Gamertag ExampleUser
Dashboard GPD present
Account present
Titles 3
Gamerscore 50
Use xdbf when you want raw record-level access to a pulled *.gpd or other XDBF-backed file.
rgh xdbf list .\FFFE07D1.gpd --show-sync
rgh xdbf get .\FFFE07D1.gpd settings 0x0000000010040006
rgh xdbf get .\FFFE07D1.gpd settings 0x0000000010040006 --out .\gamerscore-setting.bin
rgh xdbf extract .\415607E7.gpd .\records
rgh xdbf sync-status .\415607E7.gpdNotes:
-
--origin profile|peccontrols how sync records are interpreted for profile-backed versus PEC-backed files. -
--show-syncandsync-statusare useful when you need to understand which records are dirty before or after a profile edit. -
xdbfis the low-level inspection path; preferprofile ...when XeCLI already exposes a higher-level decoded command.
Example output:
XDBF Records
Namespace Settings (0x0003)
ID 0x0000000010040006
Size 24
Offset 0x0000091C
Pending yes
The avatar surface now has three operator paths:
-
rgh avatar choosefor a terminal picker -
rgh avatar browsefor a Windows picker -
rgh avatar installfor direct one-item or full-title installs
All three use the same local or hosted Avatar-Item-Collection index, ownership patching, caching, and upload pipeline.
Validated behavior:
-
rgh avatar installpatches ownership for the target XUID before upload. -
rgh avatar applyis an alias ofrgh avatar install. - Standard avatar content layouts under
00009000are supported. - Irregular title-root payload layouts are also supported.
- If FTP is unavailable, install can fall back to XBDM upload and XBDM verification automatically.
-
--remoteswitches the browser/install flow to the hosted manifest and content cache. -
rgh avatar choose --remote --titleid 58410A5D --all --current-user --overwritewas validated live against192.168.1.186.
rgh avatar library show
rgh avatar library show --jsonExample output:
Mode local
Configured Library auto
Effective Library A:\Downloads\12\em\Avatar-Item-Collection
Configured Cache default
Effective Cache C:\Users\B\AppData\Roaming\XeCLI\avatar-index.v3.json
Manifest URL https://raw.githubusercontent.com/SaveEditors/Avatar-Item-Collection/main/avatar-manifest.json
Content Base URL https://raw.githubusercontent.com/SaveEditors/Avatar-Item-Collection/main/
rgh avatar library set --path A:\Downloads\12\em\Avatar-Item-Collection
rgh avatar library set --cache C:\Users\B\AppData\Roaming\XeCLI
rgh avatar library set --clearExample output:
SUCCESS Avatar library settings updated
Library: A:\Downloads\12\em\Avatar-Item-Collection
Cache: C:\Users\B\AppData\Roaming\XeCLI\avatar-index.v3.json
rgh avatar games
rgh avatar games --search "Black Ops"
rgh avatar games --remote --search "Black Ops"
rgh avatar games --limit 20
rgh avatar games --no-cacheExample output:
Avatar Games
0x415608C3 COD: Black Ops II 37 items 7.44 MB Activision
rgh avatar items --titleid 415608C3 --limit 10
rgh avatar items --search hoodie
rgh avatar items --titleid 58410A5D --limit 5
rgh avatar items --remote --titleid 415608C3 --limit 10Example output:
Avatar Items
0x415608C3 COD: Black Ops II COD: Black Ops II Logo Shirt White - Female 000000080DF3B242CAE65A52415608C3 00009000 116 KB
0x58410A5D Destination Arcade A cool hoodie 0000020800060102C383304058410A5D root 112 KB
rgh avatar choose --search "Black Ops" --current-user
rgh avatar choose --remote --titleid 58410A5D --all --current-user --overwriteWhat it does:
- resolves one title interactively or from
--titleid - lets you select items in terminal, unless
--allis set - hands the chosen set to the same install pipeline used by
rgh avatar install
Example output:
Avatar download 3 item(s) file 2/3 | Destination Arcade - 0000020800069131C14650A158410A5D: 21%
Current user: ExampleUser | XUID: 0x<xuid> | State: Signed in to Xbox Live
SUCCESS Avatar install complete
3 item(s) 512 KB -> /Hdd1/Content/0000000000000000/58410A5D/0000020800060102C383304058410A5D via FTP
rgh avatar browse --remote
rgh avatar browse --remote --titleid 415608C3 --search hoodieWhat it does:
- opens the Windows avatar picker
- shows title search, item search, tag filtering, multi-select, select-all, and clear
- displays the current signed-in user when that information can be resolved
- installs the selected set through the same pipeline used by
rgh avatar install
Notes:
-
browseis Windows-only. -
guiis an alias ofbrowse. - the picker shares the same hosted/local backend and download cache as the CLI commands.
rgh avatar install --contentid 000000080DF3B242CAE65A52415608C3 --current-user
rgh avatar install --contentid 0000020800060102C383304058410A5D --current-user
rgh avatar install --titleid 415608C3 --all --current-user
rgh avatar install --contentid 000000080DF3B242CAE65A52415608C3 --current-user --dry-run
rgh avatar install --remote --titleid 415608C3 --all --current-userNotes:
- Use
--current-useror--xuid <XUID>for ownership targeting. -
--gamertag <NAME>is only a local output label when--xuidis explicit. -
--overwritereplaces an existing remote item. -
--devicedefaults toHdd1. - When FTP is closed on the console, XeCLI can fall back to XBDM upload and XBDM verification automatically.
- Multi-item installs emit batch progress plus per-item transfer bars.
Validated install proofs:
- Standard layout:
- source item:
A:\Downloads\12\em\Avatar-Item-Collection\415608C3\00009000\000000080DF3B242CAE65A52415608C3
- verified remote path:
/Hdd1/Content/0000000000000000/415608C3/00009000/000000080DF3B242CAE65A52415608C3
- source item:
- Root layout:
- source item:
A:\Downloads\12\em\Avatar-Item-Collection\58410A5D\0000020800060102C383304058410A5D
- verified remote path:
/Hdd1/Content/0000000000000000/58410A5D/0000020800060102C383304058410A5D
- source item:
Example output:
Current user: ExampleUser | XUID: 0x<xuid> | State: Signed in to Xbox Live
SUCCESS Avatar install complete
1 item(s) 116 KB -> /Hdd1/Content/0000000000000000/415608C3/00009000/000000080DF3B242CAE65A52415608C3 via XBDM
rgh avatar apply is an alias of rgh avatar install.
rgh avatar apply --contentid 000000080DF3B242CAE65A52415608C3 --current-user
rgh avatar apply --titleid 415608C3 --all --current-userrgh plugin listExample output:
DashLaunch Plugins
slot1 Hdd:\xbdm.xex
slot5 Hdd:\XDRPC.xex
rgh plugin enable --slot 5 --path Hdd:\XDRPC.xex
rgh plugin enable --slot 5 --path Hdd:\XDRPC.xex --backupExample output:
SUCCESS Plugin enabled
slot 5 -> Hdd:\XDRPC.xex
rgh plugin disable --slot 5These commands edit launch.ini over FTP. Back up first when changing a live configuration.
Example output:
SUCCESS Plugin disabled
slot 5 cleared
rgh god info .\game.isoExample output:
ISO Info
Title ID 415608C3
Name Grand Theft Auto V
Media DVD1
rgh god build .\game.iso .\god
rgh god build .\game.iso .\god --trim end --threads 2Example output:
SUCCESS GoD build complete
output written to .\god\415608C3
rgh god watch .\incoming --dest .\god
rgh god watch .\incoming --dest .\god --recursive --move-done .\done --move-failed .\failed
rgh god watch .\incoming --dest .\god --onceThe watchdog waits for file stability before starting conversion and can process a directory once and exit for automation use.
Example output:
Watching .\incoming
queued game.iso
done game.iso -> .\god\415608C3
Ghidra is external and documented in the CLI as (Free). XeCLI does not bundle Ghidra or Java. After rgh ghidra config --path <dir>, XeCLI can install XEXLoaderWV into that Ghidra install with rgh ghidra install-loader.
rgh ghidra config --path "C:\Tools\ghidra" --java "C:\Java"Example output:
SUCCESS Ghidra config updated
path=C:\Tools\ghidra
java=C:\Java
rgh ghidra install-loader
rgh ghidra install-loader --archive .\ghidra_12.0_PUBLIC_20251209_XEXLoaderWV.zipExample output:
SUCCESS Ghidra XEX loader installed
XEXLoaderWV -> C:\Tools\ghidra\Ghidra\Extensions\XEXLoaderWV\lib\XEXLoaderWV.jar
rgh ghidra analyze --in .\title.xex
rgh ghidra analyze --running
rgh ghidra analyze --ftp-path /Hdd1/Aurora/Aurora.xexExample output:
SUCCESS Ghidra analysis complete
project=title loader=xex
rgh ghidra decompile --in .\title.xex --out .\decomp
rgh ghidra decompile --running --out .\decomp --max 200Example output:
SUCCESS Ghidra decompile complete
200 function files written to .\decomp
rgh ghidra verify --dir .\decomp
rgh ghidra verify --dir .\decomp --jsonExample output:
No flagged files found.
IDA is external and not bundled by XeCLI. The supported XeCLI baseline is pinned to IDA Pro 9.1.250226 with idaxex 0.42b. Do not broaden that claim to idaxex 0.43 or IDA 9.2 until that exact combination is validated.
rgh ida config --path "C:\Program Files\IDA Professional 9.1" --python python
rgh ida configExample output:
SUCCESS IDA settings updated
Stored IDA install, python, and backend settings were saved.
rgh ida check
rgh ida check --jsonExample output:
Install C:\Program Files\IDA Professional 9.1
Batch EXE C:\Program Files\IDA Professional 9.1\idat.exe
IDA build 9.1.25.0226 (supported)
idaxex 0.42b (supported)
TIL files present
idalib import ok
rgh ida install-loader
rgh ida install-loader --archive .\idaxex-0.42b.zipExample output:
SUCCESS IDA loader installed
idaxex 0.42b -> C:\Program Files\IDA Professional 9.1\loaders\idaxex.dll
rgh ida analyze --in .\title.xex --out-db .\title.i64 --overwrite
rgh ida analyze --ftp-path /Hdd1/Aurora/Aurora.xex --out-db .\Aurora.i64 --overwriteExample output:
SUCCESS IDA analysis complete
.\Aurora.i64 segments 7 functions 40129
rgh ida decompile --in .\Aurora.i64 --out .\ida-decomp --backend idalib --max 50
rgh ida decompile --running --out .\ida-decomp --out-db .\Aurora.i64 --keep-dbExample output:
SUCCESS IDA decompile complete
1 file(s) backend idalib output .\ida-decomp
rgh ida verify --dir .\ida-decomp
rgh ida verify --dir .\ida-decomp --jsonExample output:
No flagged files found.
rgh xex ida-decompile --ftp-path /Hdd1/Aurora/Aurora.xex --out .\ida-decomp --max 50 --out-db .\Aurora.i64 --keep-dbrgh ping
rgh status --quick
rgh titlergh xex dump --out .\title.xex
rgh xex strings --in .\title.xex --unicode --min 6
rgh ghidra decompile --in .\title.xex --out .\decomp
rgh xex ida-decompile --in .\title.xex --out .\ida-decomp --max 50 --out-db .\title.i64 --keep-dbrgh modules load --path Hdd:\HvP2.xex --system --reboot-expected
rgh modules pendingrgh xell info
rgh xell kv export --output .\kv_backup.bin
rgh nand dump --output .\nand_backup.binXeCLI documentation for the rgh command. For release downloads, use the latest release.