Line 1:
Line 1:
{{Infobox homebrew
{{Infobox homebrew
−
| title = Mini
+
| title = MINI
| type = system tool
| type = system tool
| author = [[Team Twiizers]]
| author = [[Team Twiizers]]
| source = https://github.com/fail0verflow/mini
| source = https://github.com/fail0verflow/mini
}}
}}
−
'''Mini''' Is Not [[IOS]] -- but it is a limited replacement that can fulfill many low-level tasks that IOS might interfere with.
+
'''MINI''' Is Not [[IOS]] -- but it is a limited replacement that can fulfill many low-level tasks that IOS might interfere with.
The name is an allusion to GNU, which stands for "GNU's Not Unix"
The name is an allusion to GNU, which stands for "GNU's Not Unix"
It was developed alongside [[BootMii]] as a replaceable [[Starlet]] executable, however, it was made mostly redundant by the [[Homebrew Channel]] and AHBPROT. There are still a few features that cannot be achieved that way, such as arbitrary ARM execution without exploits or NAND modification.
It was developed alongside [[BootMii]] as a replaceable [[Starlet]] executable, however, it was made mostly redundant by the [[Homebrew Channel]] and AHBPROT. There are still a few features that cannot be achieved that way, such as arbitrary ARM execution without exploits or NAND modification.
−
Code from mini was later re-used for [https://github.com/AsahiLinux/m1n1 m1n1] as part of a project to boot Linux on the [https://en.wikipedia.org/wiki/Apple_M1 Apple M1].
+
Code from MINI was later re-used for [https://github.com/AsahiLinux/m1n1 m1n1] as part of a project to boot Linux on the [https://en.wikipedia.org/wiki/Apple_M1 Apple M1].
−
== Homebrew using mini ==
+
== Homebrew using MINI ==
* [[CEIL1NG_CAT]]
* [[CEIL1NG_CAT]]
* [[HackMii Installer]]
* [[HackMii Installer]]
* [[Wii-Linux]]
* [[Wii-Linux]]
+
* [https://github.com/lewurm/ppcskel ppcskel], basic example code that runs alongside MINI
== Features ==
== Features ==
Line 41:
Line 42:
Note that this cannot execute at the same time as IOS; you can only have one or the other executing at any point in time. Switching back and forth between the two is left as an exercise for the developer.
Note that this cannot execute at the same time as IOS; you can only have one or the other executing at any point in time. Switching back and forth between the two is left as an exercise for the developer.
−
Since the discovery of the AHBPROT register, Mini enables direct PPC access to all devices. It is often used together with [[Wii Linux]] to enable full hardware functionality and performance.
+
Since the discovery of the AHBPROT register, MINI enables direct PPC access to all devices. It is often used together with [[Wii Linux]] to enable full hardware functionality and performance.
== IPC documentation ==
== IPC documentation ==
Line 51:
Line 52:
}
}
−
=== IPC_SYS_PING ===
+
{| class="wikitable"
−
Simply pings the [[Starlet]] for testing.
+
! Command
−
+
! Description
−
=== IPC_SYS_JUMP ===
+
|-
−
Shuts down mini and jumps to the code passed.
+
| IPC_SYS_PING
−
+
| Simply pings the [[Starlet]] for testing.
−
=== IPC_SYS_GETVERS ===
+
|-
−
Fetches the mini version.
+
| IPC_SYS_JUMP
−
+
| Shuts down MINI and jumps to the code passed.
−
=== IPC_SYS_GETGITS ===
+
|-
−
Fetches mini's Git version.
+
| IPC_SYS_GETVERS
−
+
| Fetches the MINI version.
−
=== IPC_NAND_RESET ===
+
|-
−
Disables and re-enables the [[Hardware/NAND Interface|NAND Interface]].
+
| IPC_SYS_GETGITS
−
+
| Fetches MINI's Git version.
−
=== IPC_NAND_GETID ===
+
|-
−
Retrieves the [[Hardware/NAND|NAND]]'s physical ID.
+
| IPC_NAND_RESET
−
+
| Disables and re-enables the [[Hardware/NAND Interface|NAND Interface]].
−
=== IPC_NAND_STATUS ===
+
|-
−
Sends the GETSTATUS command to the NAND.
+
| IPC_NAND_GETID
−
+
| Retrieves the [[Hardware/NAND|NAND]]'s physical ID.
−
=== IPC_NAND_READ ===
+
|-
−
Reads a raw page from the NAND.
+
| IPC_NAND_STATUS
−
+
| Sends the GETSTATUS command to the NAND.
−
=== IPC_NAND_WRITE ===
+
|-
−
Writes a raw page to the NAND.
+
| IPC_NAND_READ
−
+
| Reads a raw page from the NAND.
−
=== IPC_NAND_ERASE ===
+
|-
−
Erases a block on the NAND.
+
| IPC_NAND_WRITE
−
+
| Writes a raw page to the NAND.
−
=== IPC_NAND_SETMINPAGE ===
+
|-
−
Changes the lowest writable page enforced by mini to prevent accidental bricking.
+
| IPC_NAND_ERASE
−
+
| Erases a block on the NAND.
−
=== IPC_NAND_GETMINPAGE ===
+
|-
−
Fetches the lowest writable page enforced by mini.
+
| IPC_NAND_SETMINPAGE
−
+
| Changes the lowest writable page enforced by MINI to prevent accidental bricking.
−
=== IPC_SDHC_DISCOVER ===
+
|-
−
Initializes the SDHC handler.
+
| IPC_NAND_GETMINPAGE
−
+
| Fetches the lowest writable page enforced by MINI.
−
=== IPC_SDHC_EXIT ===
+
|-
−
Shuts off the SDHC handler.
+
| IPC_SDHC_DISCOVER
−
+
| Initializes the SDHC handler.
−
=== IPC_SDMMC_ACK ===
+
|-
−
Clears the "new SD card" flag, resulting in [[#IPC_SDMMC_STATE|IPC_SDMMC_STATE]] returning SDMMC_INSERTED instead of SDMMC_NEW_CARD.
+
| IPC_SDHC_EXIT
−
+
| Shuts off the SDHC handler.
−
=== IPC_SDMMC_READ ===
+
|-
−
Reads raw data from the front SD card.
+
| IPC_SDMMC_ACK
−
+
| Clears the "new SD card" flag, resulting in [[#IPC_SDMMC_STATE|IPC_SDMMC_STATE]] returning SDMMC_INSERTED instead of SDMMC_NEW_CARD.
−
=== IPC_SDMMC_WRITE ===
+
|-
−
Writes raw data to the front SD.
+
| IPC_SDMMC_READ
−
+
| Reads raw data from the front SD card.
−
=== IPC_SDMMC_STATE ===
+
|-
−
Returns whether there is no SD card (SDMMC_NO_CARD), a card inserted since the last [[#IPC_SDMMC_ACK|IPC_SDMMC_ACK]] (SDMMC_NEW_CARD), or a card inserted before the last IPC_SDMMC_ACK (SDMMC_INSERTED).
+
| IPC_SDMMC_WRITE
−
+
| Writes raw data to the front SD.
−
=== IPC_SDMMC_SIZE ===
+
|-
−
Returns the number of sectors in the front SD.
+
| IPC_SDMMC_STATE
−
+
| Returns whether there is no SD card (SDMMC_NO_CARD), a card inserted since the last [[#IPC_SDMMC_ACK|IPC_SDMMC_ACK]] (SDMMC_NEW_CARD), or a card inserted before the last IPC_SDMMC_ACK (SDMMC_INSERTED).
−
=== IPC_KEYS_GETOTP ===
+
|-
−
Returns the cached [[Hardware/OTP|OTP]] keys.
+
| IPC_SDMMC_SIZE
−
+
| Returns the number of sectors in the front SD.
−
=== IPC_KEYS_GETEEP ===
+
|-
−
Returns the cached [[Hardware/SEEPROM|SEEPROM]] keys.
+
| IPC_KEYS_GETOTP
−
+
| Returns the cached [[Hardware/OTP|OTP]] keys.
−
=== IPC_AES_RESET ===
+
|-
−
Sends a reset signal to the [[Hardware/AES Engine|AES engine]].
+
| IPC_KEYS_GETEEP
−
+
| Returns the cached [[Hardware/SEEPROM|SEEPROM]] keys.
−
=== IPC_AES_SETIV ===
+
|-
−
Sends the contents to be AES-decrypted to the AES engine.
+
| IPC_AES_RESET
−
+
| Sends a reset signal to the [[Hardware/AES Engine|AES engine]].
−
=== IPC_AES_SETKEY ===
+
|-
−
Sets the AES key used for decryption.
+
| IPC_AES_SETIV
−
+
| Sends the contents to be AES-decrypted to the AES engine.
−
=== IPC_AES_DECRYPT ===
+
|-
−
Decrypts the contents in the AES engine.
+
| IPC_AES_SETKEY
−
+
| Sets the AES key used for decryption.
−
=== IPC_BOOT2_RUN ===
+
|-
−
Shuts down mini and launches [[boot2]].
+
| IPC_AES_DECRYPT
−
+
| Decrypts the contents in the AES engine.
−
=== IPC_BOOT2_TMD ===
+
|-
−
Fetches the [[TMD]] of boot2.
+
| IPC_BOOT2_RUN
−
+
| Shuts down MINI and launches [[boot2]].
−
=== IPC_PPC_BOOT ===
+
|-
−
Reboots the [[Hardware/Broadway|Broadway]] to a location in memory.
+
| IPC_BOOT2_TMD
−
+
| Fetches the [[TMD]] of boot2.
−
=== IPC_PPC_BOOT_FILE ===
+
|-
−
Similar to [[#IPC_PPC_BOOT|IPC_PPC_BOOT]], but boots a file. <!--TODO: SD or NAND? -->
+
| IPC_PPC_BOOT
+
| Reboots the [[Hardware/Broadway|Broadway]] to a location in memory.
+
|-
+
| IPC_PPC_BOOT_FILE
+
| Similar to [[#IPC_PPC_BOOT|IPC_PPC_BOOT]], but boots a file. <!--TODO: SD or NAND? -->
+
|}
== Changelog ==
== Changelog ==
Line 148:
Line 154:
=== Beta 3 (v1.0) ===
=== Beta 3 (v1.0) ===
* Improved the SD card compatibility
* Improved the SD card compatibility
−
* Fix GPIO input for all Wiis
+
* Enable HW_AHBPROT to fix RESET issue with [[CEIL1NG_CAT]]
=== Beta 2 (v0.9) ===
=== Beta 2 (v0.9) ===
* SD card performance has been improved, decreasing the boot and the NAND backup / restore time
* SD card performance has been improved, decreasing the boot and the NAND backup / restore time
* backupmii accepts fragmented SD cards now, reformatting is not performed anymore. Old NAND dumps are still compatible.
* backupmii accepts fragmented SD cards now, reformatting is not performed anymore. Old NAND dumps are still compatible.
+
* [[boot2]] patcher now works with [[boot2v4]]
=== Beta 1 ===
=== Beta 1 ===
Line 159:
Line 166:
{{Navbox IOS|skipCat=true}}
{{Navbox IOS|skipCat=true}}
[[Category:IOS]]
[[Category:IOS]]
+
{{Navbox fail0verflow}}