This is some basic code to make use of the features present in MINI. At the time of writing, the project works (excluding some features), however we cannot yet provide pre-compiled binaries for safety reasons. If you can compile yourself - you'll probably be safe too.
- Backup of Wii OTP and SEEPROM data
- including automatic backups, if none are found on SD for this console
- Full backup of NAND with appended keys.bin
- the appended keys.bin is NOT compatible with CE1LING_CAT due to lack of header information, a gamecube controller will always be needed
- System info printing
- boot1 version (like CE1LING_CAT)
- SEEPROM boot2 version
- serial number
- NAND usage (in permille)
- TMD boot2 version
- System menu (with user-string), BC and MIOS versions
- SEEPROM restore
- NAND restore (without bootblocks)
- Booting system menu, HBC (titleid LULZ), IOS 254 (BootMii stub for MINI reloads)
- Booting
sd/bootmii/ppcboot.elf - Support for CE1LING_CAT-style
sd/bootmii/bootmii.ini- options supported and supported inputs:
VIDEO=: 4th symbol controls video output modeC: NTSC5: PAL506: PAL60G: Progressive/480p
BOOTDELAY=: integer value from 0 to 10 seconds to denote autoboot timeout. Must be used withAUTOBOOT=, otherwise reset!AUTOBOOT=: 1st symbol controls autoboot target. Must be used withBOOTDELAY=, otherwise the main menu will load!S: SYSMENU for system menuH: HBC for Homebrew Channel (LULZ)0: title ID (full title ID needed, ex.0000000100000002)/: MINI-compatible .elf executable (full path needed, compliant with 8.3 naming, ex./bootmii/mike5.elf
- If miniface is loaded from IOS<-HBC, autoboot parameters are still executed, unlike CE1LING_CAT, which could cause unwanted behavior
bootmii.inioptions must be within the first 4KB of the file for the parser to work- in
bootmii.iniadding "#" before lines does not comment the options, they need to be mangled/removed instead - when giving a title to
boot2_run(), its' presence in NAND is not checked, which could potentially lock up the system - the ELF loading code may be exploited into a UaF from a memory leak protection
- the ELF loading code does not check the binary size and may try to
malloc()more than MEM1 size, which could potentially lock up the system (slightly less than 24MB) keys.binis not generated separatelykeys.binappended to NAND backups does not pass CE1LING_CAT checks due to lack ofBackupMiiheader info- currently no code exists to activate godmode
- only 8.3-style filenames are supported, adding LFN support requires adding a 62KB magic table and would only be useful in 2 functions (godmode and autobackup)
- only 16777216 unique OTPs can be backed up on one SD card
- use of MINI/
armboot.binprovided by the HackMii Installer is unsupported, due to lack of SEEPROM write logic - RESET key is disabled because pressing it makes it spam instead of input only after push-down
- Boot more than
sd/bootmii/ppcboot.elfduring runtime - Support a GUI
- Support USB keyboards
- Support switching to IOS and to MINI without code reloads, with limitations applied to IOS
- Support DI (unlikely to do so)
- Optimize NAND restores, basic optimizations currently break SFFS and take longer than CE1LING_CAT (25min all data blocks from miniface -> 15min from CE1LING_CAT)
- Optimize NAND backups, (45min miniface -> 17min from CE1LING_CAT w/ verification)
- Add more safeguards
- Add fool-proof godmode logic
- Support writing boot2 safely (right now have to deal with ECC and HMAC, best+easiest approach is to use a known-good backup from the same console, which may not be an option for everyone)
- Detect when miniface is loaded from IOS<-HBC and boot2 to avoid executing autoboot parameters if unneeded
- Detect BootMii chainloader stub in boot2
Compilation can be done with your current setup.
You will need a powerpc-none-elf chain. At the time of writing, devkitPPC does not distribute precompiled binaries for this chain.
Using its' powerpc-eabi compilers will not work and cause your system to blackscreen.
If you're unsure on how to obtain these compilers, you are welcomed to try using autobuild.sh provided in this ppcskel repository.
Afterwards you could probably do export WIIDEV=/opt/devkitamateur or wherever you have the bin folder with the compilers mentioned above.
Have fun and contribute if you feel like it.