Important
MicroMount has served its purpose as a proof-of-concept payload to validate the new .ffpfsc format and gather testing feedback from the community.
✅ In collaboration with the author of ShadowMountPlus, the relevant features have now been integrated directly into ShadowMountPlus itself.
👉 If you are using ShadowMountPlus 1.6test15-fix2 or newer, you no longer need MicroMount:
- https://github.com/drakmor/ShadowMountPlus/releases/tag/1.6test15-fix2
- Use this tutorial to convert your game backups: https://github.com/drakmor/ShadowMountPlus#compressed-pfs-containers-ffpfsc
❤️ Thank you to everyone who tested, shared feedback, and trusted my work.
🗄️ This repository is now being archived, as MicroMount has fulfilled the goal it was created for.
💖 If you would like to support the work behind MicroMount and MkPFS, please consider sponsoring it here:
🔧 MkPFS will continue to be actively maintained. I am still fixing bugs there, and new releases are planned soon.
MicroMount is a PS5 payload that continuously scans configured folders for .ffpfsc images and mounts them automatically into managed mountpoints.
Overview · Quick Start · How it works · Configuration · Build · Sponsorship
MicroMount runtime behavior:
- Scans configured directories for
.ffpfscfiles on a fixed interval. - Derives a stable mount folder per image:
${target_directory}/micromount-${GAMEID}-${HASH8}
- Cleans stale managed mounts before each reconcile pass.
- Skips images that are already correctly mounted.
- Writes logs to
/data/micromount/debug.logon every run. - Reads config from
/data/micromount/config.ini(auto-created from template when missing).
MkPFS is easier to sustain when users who benefit from it help fund it.
Sponsor here:
Or donate directly using:
- BTC:
141kKRoDpaS6PNC2yxSi8vziDFTmzCnArE - USDT (TRC-20):
TQb7bUYSYRmdWgALHCejH33dNij9XyTAnU - USDT (ERC-20):
0x63c0b4b21133c4068375ae7566dafcf1398cf6fb
- Ensure your ShadowMountPlus
scan_depth=2is set to2. Without it, games will not be recognized. - Convert your
.exfator.ffpkggames into.ffpfscformat using themkpfstool.
# Install using pip
pip install -U "mkpfs>=0.0.5"
# Convert an .exfat or .ffpkg file into a PFSC compressed image .ffpfsc
# NOTE: .ffpfsc is the simplest way to have game-file compression support.
mkpfs pack file --compress --verify ./GAME1234.exfat ./GAME1234.ffpfsc- Ensure the new
.ffpfscfiles are uploaded to the PS5, in one of the monitored folders like/data/homebrew. - Send or activate the
micromount.elfpayload.
- MicroMount starts, loads defaults, creates
/data/micromount/config.inifrom the embedded template when missing, then loads it. - It scans
scan_pathsrecursively up toscan_depthfor.ffpfsc. - For each candidate image, it builds:
GAMEIDfrom filename (PlayStation-styleAAAA0000orAAAA00000when found).- Fallback ID from first 10 alphanumeric chars in filename (uppercased) if no title ID exists.
HASH8as first 8 hex chars of SHA-256 of the full source path.
- It runs cleanup for managed mount folders (
micromount-*) that are stale or empty. - It mounts missing candidates with the configured LVD/PFS profile.
- It emits a summary notification and repeats after
scan_interval_seconds.
- Config file:
/data/micromount/config.ini - Log file:
/data/micromount/debug.log - Runtime root:
/data/micromount - Default target directory:
/data/homebrew
Use config.ini.example as the template for /data/micromount/config.ini.
If /data/micromount/config.ini does not exist at runtime, MicroMount automatically creates it from the embedded config.ini.example.
Core keys:
target_directory(default:/data/homebrew)scanpath(repeatable)scan_paths(comma/semicolon-separated list)scan_depth(default:1)scan_interval_seconds(default:30)debug(default:1)
Mount profile keys:
lvd_image_typelvd_sector_sizelvd_secondary_unitlvd_raw_flagspfs_fstypepfs_mkeymodepfs_budgetidpfs_sigverifypfs_playgopfs_discpfs_use_ekpfspfs_read_onlypfs_force
Default mount family:
{0, 65536, true, 0x9, "pfs", "AC", "system", true, false}
(lvd_secondary_unit defaults to sector size; pfs_use_ekpfs=1; pfs_read_only=1.)
- Logs are always written to
/data/micromount/debug.log. debug=1enables detailed per-image notifications.debug=0keeps major summary notifications while suppressing debug popups.
Build with Docker (recommended in this repo):
./build.shOutput artifact:
./micromount.elf
Local make (requires PS5 payload SDK):
make clean allSpecial thanks to the people and communities helping shape MkPFS:
- Renan @ PSBrew: main creator and maintainer
- Darkmor @ ShadowMountPlus: creator of ShadowMountPlus, whose work helped inspire practical PFS mounting workflows
- The PlayStation and reverse-engineering community: for tools, research threads, testing feedback, technical notes, and historical knowledge
- Community-maintained references and wiki pages: especially the projects and archives that preserve PFS, PKG, and FPKG implementation details
- MKPFS: The main project repository for the MkPFS CLI, Python library, and documentation.
- ShadowMountPlus: Practical PS5 auto-mounter and a key reference for
pfscompatibility - PSDevWiki PFS: Community reference for PFS on-disk structures
- PSDevWiki PKG files: PKG format reference and tooling pointers
- ShadPKG HOWWORKS: Implementation-focused PKG/PFS decryption walkthrough
- Wololo: PS4 FPKG writeup by Flatz: Historical writeup on FPKG/PKG techniques