From gc-linux

Jump to: navigation, search


MIni(-based) KErnel Preview One (aka MIKE p1)

Note: This kernel is now obsolete. MIKE p5 should be used instead.

MIKE p1 is the first public preview release of a Linux kernel for the Nintendo Wii video game console that can run under 'mini', the IOS firmware replacement from Team Twiizers.

This release provides at least the same functionality provided by the existing IOS-based kernel, with some limitations and some enhancements.

Here you can find links to some pre-built binary images compatible with whiite-linux based distros (i.e. you can use one of these kernel images instead of the one that came originally with your whiite-linux system). Please, read the whiite-linux article to learn how to setup a barebones whiite-linux system, and the rest of the document to learn how to properly use the kernel images.

Environment Video mode Kernel image
mini PAL (60Hz)
mini PAL (50Hz)
mini NTSC (60Hz)
IOS any mikep1-zImage-2.6.30-rc8.ios.elf

And, as always, the kernel patches are available for download via Sourceforge File Release System (FRS).


This kernel release is targetted at people interested in Linux on the Nintendo Wii which have already installed Bootmii.


Supported Hardware

The following hardware/peripherals are supported by the MIKE p1 kernel:

 "Classic" hardware
 - Non-accelerated 2D video hardware (VI)
   - Note: correct RGB framebuffer support requires our SDL library port
 - Audio hardware (AI,DSP)
 - EXI hardware (EXI)
   - (not compiled-in) Nintendo SD Card Adapter (DOL-019) or compatibles
   - (not compiled-in) Non-SDHC MMC/SD cards in SPI mode via a Nintendo DOL-019 or compatible
   - Real Time Clock / SRAM
 - Serial Interface hardware (SI)
   - Nintendo GameCube controllers
   - Nintendo GameCube WaveBird wireless controllers
 "Native" hardware
 - MEM2 memory as normal RAM
 - SDHC and Non-SDHC SD cards in SD mode via the front SD card slot
 - Internal USB Bluetooth dongle
 - Nintendo Wii Remote (RVL-003) and related expansion accessories
 - Sensor bar
 - USB 1.x and 2.0 devices

Unsupported Hardware

The following hardware/peripherals are NOT yet supported:

 "Classic" hardware
 - Nintendo GameCube memory cards
 "Native" hardware
 - Internal wireless network card
 - Internal DVD drive


mini must have IPC_SDHC_EXIT support

MIKE p1 won't work properly unless a version of 'mini' with IPC_SDHC_EXIT support is used. Nor the version of mini included in Bootmii beta1 nor the one bundled with Bootmii beta2 support the IPC_SDHC_EXIT call.

You can download a ready-to-use armboot.bin with IPC_SDHC_EXIT support or you can build one from sources using latest git from:


Make sure that you have copied mikep1-armboot.bin to /bootmii/armboot.bin within your SD card before attempting to use any of the mini-based MIKE p1 kernel images.

Notes when running MIKE p1 under mini

Root device name changes

The same MIKE p1 binary can run under mini and under IOS. However, if you plan to run MIKE p1 under IOS you need to make sure that the kernel command line is modified to reflect the proper root device, as the name is different in each case:

Environment Root Device
mini /dev/mmcblk0p2
IOS /dev/rvlsda2

kernel image may be only booted as /bootmii/ppcboot.elf

Due to SD card driver bugs in Bootmii menu it may be impossible to successfully boot MIKE p1 using the SD card browser in Bootmii.

If your card is affected, the kernel won't get loaded and control will be returned to the Bootmii menu. If you have a USBGecko you can see the following error messages coming from Bootmii menu:

ENTRY APPS is a dir!
ENTRY MINI-L~1 is a dir!
ENTRY BOOT.ELF is a file! Trying to boot..
loading 2201273 bytesDMA timeout 00000000
sdmmc: MMC_READ_BLOCK_MULTIPLE failed for card 0 with 60

In this case, the only solution for now may be to copy the kernel image (*.elf) as /bootmii/ppcboot.elf and let mini launch the kernel directly when the console boots (mini doesn't suffer from the above mentioned SD card bugs).

The problem with this approach is that you cannot have both Bootmii menu and the MIKE p1 kernel on the same SD card at the same time.

Video mode may need to be specified on the kernel command line

When mini boots the kernel (as ppcboot.elf) the video hardware isn't initialized, and thus, the kernel cannot guess the right video mode.

See the Graphics and Sound article on how to specify a video mode using the kernel command line, or use a pre-built kernel image that matches your video mode settings.

Hint: You can hexedit the kernel image and replace the existing kernel command line with your own. Look for the string "placeholder_for_additional_kernel_options_targetted_at_hexedit_lovers" within the kernel image.

Latency sensitive applications may suffer

Due to the increase in CPU time wasted doing I/O via mini vs via memory mapped registers, time sensitive applications may behave worst under mini that under IOS.

Following the discovery of a little-documented feature, this issue has been completely addressed in MIKEp2

Not all available memory is used

The kernel can make use of approximately 11MB more of RAM when running under mini vs when running under IOS. This RAM is still unused on MIKE p1.

This has been addressed in MIKEp2

OHCI (USB 1.x) may have issues

The OHCI controllers found on the Nintendo Wii video game consoles seem to have hardware bugs. The current OHCI driver adds at least two quirks to workaround the observed incorrect behaviours.

This will be addressed in a future kernel release, as more information gets available.

Enhancements of MIKE p1 when running under mini

  • EHCI (USB 2.0) is supported
  • Increased I/O bandwidth for SDHC, USB 1.x and USB 2.0
Personal tools