# ShadowMount runtime config example # Place as: /data/shadowmount/config.ini # # This file is a template. # Nothing below is active until you remove the leading '#'. # # How to use this file: # 1. Uncomment only the parameters you really want to override. # 2. Lines that start with '# key=value' are real parameters you can uncomment directly. # 3. Lines that start with '##' are examples/templates only. Edit them before use. # Debug logging: # 1/true/yes/on -> enable log_debug output to console and /data/shadowmount/debug.log # 0/false/no/off -> disable log_debug output # Default: 1 # debug=1 # Quiet mode: # 1/true/yes/on -> only show the startup version popup and runtime errors # 0/false/no/off -> also show normal informational popups # Default: 0 # quiet_mode=0 # Notification language: # auto -> use the console system language # Or set a supported locale, for example: en-US, ru-RU, de-DE, fr-FR, es-ES # Default: auto # language=auto # Public HTTP/JSON API listener: # The loopback default accepts connections only from software running on the PS5. # Use 0.0.0.0 explicitly if remote devices on the network must connect. # Defaults: 127.0.0.1:10101 # api_enabled=1 # api_bind_address=127.0.0.1 # api_port=10101 # Global mount mode: # 1/true/yes/on/ro -> read-only mounts # 0/false/no/off/rw -> read-write mounts # Default: 1 # mount_read_only=1 # Mounting even damaged file systems: # 1/true/yes/on -> include force option # 0/false/no/off -> default mount options # Default: 0 # force_mount=0 # Keep discovered images mounted between game launches: # 1/true/yes/on -> mount during scans and keep images mounted # 0/false/no/off -> mount images on demand for each game (default) # USB-backed images are still unmounted during suspend. # Default: 0 # persistent_image_mounts=0 # Use batch registration for newly staged titles: # 1/true/yes/on -> submit queued installs through sceAppInstUtilAppInstallAll # 0/false/no/off -> register each title directly # Default: 0 on FW below 12.00, forced to 1 on FW 12.00 and newer # app_install_all=0 # Automatically remove games from the system library when their source # is no longer available: # 1/true/yes/on -> remove after the configured missing delay # 0/false/no/off -> keep the registration (default) # Default: 0 # auto_remove_missing_games=0 # Allow automatic removal of games that have installed DLC: # 1/true/yes/on -> allow removal # 0/false/no/off -> keep games with installed DLC (default) # Default: 0 # auto_remove_games_with_dlc=0 # How long a source must remain unavailable before removal (seconds), # range: 1..86400 # Default: 300 # auto_remove_missing_delay_seconds=300 # Scan depth relative to each scan root: # 1 -> scan only first-level subdirectories # 2 -> also scan one additional nested level # Default: 1 # scan_depth=1 # Legacy compatibility: # recursive_scan=1 forces scan_depth=2 # Default: disabled # recursive_scan=0 # Full scan loop interval (seconds), range: 1..3600 # Default: 15 # scan_interval_seconds=15 # Source stabilization wait window (seconds), range: 0..3600 # If source mtime/ctime is newer than this window, it will be deferred to next scan. # Default: 10 # stability_wait_seconds=10 # Backend selection per filesystem: # lvd -> /dev/lvdctl -> /dev/lvdN # md -> /dev/mdctl -> /dev/mdN # Defaults: exfat=lvd, ufs=lvd # LVD is required for the exFAT img_type=5/BFS sdimg fast path. The image file # must also reside on internal BFS and be formatted with a 64 KiB cluster. # exfat_backend=lvd # ufs_backend=lvd # PFS compressed-file index cache for nested images: # 1/true/yes/on -> cache the containing PFS compressed-file index before # attaching a nested image # 0/false/no/off -> skip this optional request (default) # The old legacy_gddr5_cache key remains accepted for compatibility. # nested_pfs_index_cache=0 # Sandbox fakelib backport watcher: # 1/true/yes/on -> mount app0/fakelib2 when present, otherwise app0/fakelib, into common/lib # 0/false/no/off -> disable fakelib watcher # Default: 1 # backport_fakelib=1 # Updates for multiple emulators in the game fakelib: # 1/true/yes/on -> cache the game's fakelib before launch and replace matching # cached files from emulators_path; fakelib2 is never changed # 0/false/no/off -> disable emulator updates # Default: 1 # update_emulators=1 # # Folder containing emulator update files (absolute path): # emulators_path=/data/shadowmount/emus # Cache: /data/shadowmount/cache//fakelib # Unused caches expire seven days after the most recent game launch. # Automatic libSceAmpr emulator download: # 1/true/yes/on -> check 30 seconds after startup and then every four hours # 0/false/no/off -> do not access the network (default) # A missing local emulator is downloaded directly. # Otherwise, the SPRX is downloaded only when the server file is newer, then # replaces emulators_path/libSceAmpr.sprx only when its contents differ. # Downloads are deferred while a game mount is active. # Default: 0 # auto_update_ampr=0 # # HTTP or HTTPS download URL: # ampr_update_url=https://github.com/drakmor/ampr_emu/releases/latest/download/libSceAmpr.sprx # Global fakelib overlay: # 1/true/yes/on -> use global fakelib for every tracked game when present; # fakelib2 always remains exclusive when present # 0/false/no/off -> do not use the global fakelib folder # Default: 1 # global_fakelib=1 # # Default global fakelib folder: # global_fakelib_path=/data/shadowmount/fakelib # # Priority when both global and per-game fakelib exist in the combined cache: # game -> game-specific files win # global -> global files win # Default: game # global_fakelib_priority=game # ## Exclude specific title IDs from the global fakelib overlay (repeatable): ## global_fakelib_exclude=PPSA12345 # Auto-manage kstuff around game launches: # 1/true/yes/on -> pause kstuff after game launch, resume immediately on stop # 0/false/no/off -> leave kstuff state untouched # Default: 1 # kstuff_game_auto_toggle=1 # Detect crash-candidate state and autotune pause delay: # 1/true/yes/on -> enable crash monitoring and autotune updates # 0/false/no/off -> disable crash detection/autotune logic # Default: 1 # kstuff_crash_detection=1 # Automatic fan-controller target for games: # system -> leave the system-managed target unchanged (default) # 50..91 -> apply this target when a game starts # The stock automatic fan controller remains enabled. # Default: system # fan_target_temperature=system # Delay before pausing kstuff for image-backed titles. # Default: 25 # kstuff_pause_delay_image_seconds=25 # Delay before pausing kstuff for direct/non-image launches. # Default: 15 # kstuff_pause_delay_direct_seconds=15 # Backend-specific sector size overrides: # Defaults: lvd_exfat=512, lvd_ufs=4096, lvd_pfs=4096, md_exfat=512,md_ufs=4096. # Keep lvd_exfat at 512 for the BFS fast path. 65536 is the exFAT cluster and # LVD secondary unit in the optimized profile, not the logical sector size. # lvd_exfat_sector_size=512 # lvd_ufs_sector_size=4096 # lvd_pfs_sector_size=4096 # md_exfat_sector_size=512 # md_ufs_sector_size=4096 # Optional custom scan roots (can be repeated): # If at least one scanpath=... is present, only these paths are used. # "/mnt/shadowmnt/pfsc" and "/mnt/shadowmnt" are always added automatically. # Default: use built-in scan path list # scanpath=/data/homebrew ## Per-image mount mode override by file name (repeatable): ## image_ro= ## image_rw= ## image_sector=: ## ## Examples: ## image_ro=PPSA12345.ffpfs ## image_rw=My Game Dump.exfat ## image_sector=Legacy 512 Sector.exfat:512 ## Keep kstuff enabled for specific title IDs (repeatable): ## kstuff_no_pause=PPSA12345 ## Override pause delay for specific title IDs (repeatable): ## Format: TITLEID:SECONDS ## kstuff_delay=PPSA12345:30 ## More custom scan root examples: ## scanpath=/data/homebrew ## scanpath=/data/etaHEN/games