So lets run linux on a Wii

I’m bored. When I get bored I find shit to do.

And most shit bores me.

Lets install archii and bring it up to a modern kernel, display system, and see what we can do with the main processor (run wii system on desktop maybe?).

Heres our list of shit to do:

  • Get starting items

I need some stuff first:

WII to HDMI
HDMI to VGA
USB for storage
8GB SD
  • Boot Wii. Does it still work and do I need a new one?

  • Install Linux

  • Start Porting

I want to effectively make my wii my desktop system. I need few things out of a desktop to be happy. Abiword, VLC, and ZSNES and I’m good man. But if I can host repo’s for this system, get the thing up to date, hey maybe people will use it more.

IDK.

More later. Next we’ll go over how the system itself actually works, what processors and GPU’s, yes there are many of both, are in the system, what can load, how it loads, then we’ll go over how linux works on the wii, how the wii loads its own OS and how that works, how linux is injected, then we’ll have to go over the loader code with a debugger and see if anything needs an immediate patch. After that, its install and check what kernel tools we have, and what ones we can get to.

But that’ll happen later :stuck_out_tongue_winking_eye: I have to go to my job atm.

Edit: And if you kids are really good we’ll look at embedding a distro on a southbridge and remoting into it to do shit with it.

What? I dunno. We’ll port a command line torrent client and make it write live to the CD drive or something.

9 Likes

Hold your wee for the wii

I’ve heard about that stupid contest so many times in the last year its like I am the year 2008.

1 Like

Make a video, it’s easier to follow

You wanna camera operate be my guest.

When I visit the states I’ll come by

1 Like

Quick update I’m actually buying a spare wii for teardown images.

Would ya’ll want a full board rundown, UART’s, and all?

  • I mean sure
  • uhhh
  • no
  • um yes
  • whats a UART?

0 voters

3 Likes

What’s uart? Teach me

So how does the wii work? Here’s general specs of the machine:

Many hardware sites say whats just on Wikipedia BTW

  • 1 Core IBM Broadway PPC (new process low power G3/4 basically) @ ~750mhz
  • 1 Core ArmV(7 or 9) coprocessor to handle updating and flashing the system with factory software @ ~200mhz
  • ATI Hollywood GPU @ ~250MHz (was based on something not bad, @Fouquin would know)
  • 24MB 1T Sram for system memory ( https://en.wikipedia.org/wiki/1T-SRAM ) IDK clock. Probably around 200MHZ or less because low power chips.
  • 64MB GDDR3 @ ~200-450MHz with a 3MB buffer at half speed

Storage:

  • Capable of storing saves to USB, SD, or Gamecube memory, on top of internal storage.
  • Internal Storage (144MB NAND)
  • SD Stock reads up to 32GB (can be broken to 48 in bootmii environments)
  • CD Drive with 64MB cache (this cache can be used as extra memory elsewhere too)
  • Mask Rom to hold the system firmware slices. Theres memory somewhere to store 8 slices total, counting up to the last 2 updates you installed, your current firmware, rollback, settings firmware, a rollback for the settings, disc loading environment, and the web browser.
  • USB has no storage limitations that I am aware of. I also only own 16 GB USB sticks and I don’t feel like buying a 256 to test it out.
  • Other slices are stored in system memory. I don’t remember if actual memory adds up to 196, or if that’s the PSP, and if it adds up to 96 your partitions go as follows:

1.2mb - boot environment

~20mb - main system slices
~15mb - updates

~8mb - rollback

144mb - user accessible memory

For memory sake, GC cards are accessible via USB to write and read from, but I don’t remember if they are actually on the bus or not. They could just be accessible for wiiware sake or something.

this is also representative of ring level sorta, meaning operator level {see: sun operator levels}

I’ll add a post about the CPU’s and GPU later and more about them specifically. Well even boot a Linux and pull data from there.

  • The USB bus is switchable between 1.1 and 2.0. That’s because the gamecube cards run on the USB bus. This also makes usb not only a main bus, but also means that gamecube cards are useable as storage with potential for other medial to be plugged into the bus. Tho, the biggest gamecube cards available are 512 last I knew, and that’s only because the GC could only address that much on that bus. It couldn’t handle more.

  • The DVD drive is in fact a DVD-R drive, and with a simple firmware flick-in you can install VLC and watch movies and shit.

  • You also get a Mitsumi DWM-W0004 wifi chip. I’m just making note of that really quick here.

  • Lastly, your video outputs are not in HD, even with an HDMI wire change. In can only output up to 480, but can handle 16:9, 10, and 4:3.

Great. That’s a lot more specs than you probably expected but lets start with the first most important thing that no one knows about.


So what the fuck is a slice

Heres an image for you.

Imagine this is your OS level on your wii ok.

So each part of the OS that runs on the wii, which btw its not Linux or bsd or anything, actually runs in parts. If I have a zipped up system menu firmware on a usb, I can plug that in once the wii gets to that first boot process and displays the health and safety screen and it will load that “applet” or “slice”. Then you have a system menu.

Theres also code in place to live replace stuff like system menu while you are in game, but I think I remember someone playing with that feature and bricking the unit. This means basically, you have your USB with your ZIP on it plugged in, and that ZIP can be packed back up and written over. If you’re into this shit, that’s a feat for this system to manage.

When you load more slices they will stay in memory and get knocked down an address. The System Menu and the Settings are always loaded, so you only have 4 slice addresses to use when in use. Which, if you’re me, I opened Netflix, youtube, loaded a disk, played an emulator, did 3 other things, then when I want to go back to youtube or Netflix it’ll take 5 minutes to clear all that space before it loads all the way.

Slices are also hotswappable. So if your wii has an update, your settings gets replaced or maybe it had a driver update, it won’t reboot from the system menu if it can help it. It actually doesn’t reboot most of the time if its something that’s not immediate, it just looks like it does. But the last states of your games or whatever you were doing are held in ram?

I don’t understand why they did that really but whatever.

So hopefully that makes sense. The USB bridge example is the only one that makes sense to me.

Also, slices are half handled by each other, half handled by the runtime environment. Its almost a hypervisor, but theres nothing past it.

Edit: this is only making sense to me just now, but the entire os system is basically software on a backplane.

You know I have a weird description in my head with VM’s being comparable, but I don’t think that applies here. And come to think of it theres something I need to mention on the side. Mostly because no one else does.

Unlike the PS3 or the 360, even the PS4 and XBONE, those systems used hypervisors and loaded other OS’s on top of the running OS, those being XP on the 360, FreeBSD on the ps3, W10 on the xbone, and still FreeBSD on the PS4.

The wii doesn’t have a hypervisor. Rather, it just live loads OS’s whenever it wants. And if a game calls for something from another slice, it can go all the way to ring 0 to say “hey I need this”.

So technically the wii runs machine code it doesn’t really have an OS to begin with, just apps. Take that one for the notes hahaha.

I will add a post later on the hardware differences in wii releases via serial number denotation.


So how do we run Linux on it?

Basic bitch shit.

Crack your wii: https://please.hackmii.com/

install bootmii from the homebrew app

follow instructions on whatever Linux distro you want out of the software store

I will write a more detailed post on BootMii later.

So… Why don’t you just do that and call it good? Why update?

Looking at the specs, I’d love to get some other stuff added to the feature list of something like archii. Maybe you can use the gamecube slots / cards as cache for a build off the AUR? IDK! But the system has so many capabilities, as you can see, that theres no reason NOT to add to it.

More later.

I’m trying so hard not to miss anything lol

I do want to note that info on specs and such is open to peer review as notes are taken from forums back in the day, and notes out there on newer units

4 Likes

What the fuck is a UART

I’m glad you asked.

A UART is a point on a machine that gives you debug access to the device. Different UART’s can lead to different console’s as well, but the best examples of UART’s being used is sniffing for data off of them. Rarely, tohugh possible, is a console completely open over a UART though.

Cool so why does that matter?

If I give a board walkthrough I’d love to do a history of hacking the wii as well. Showing when UART’s were found and what they were used for, where they are, how to read them, etc.

Why?

I want to; fuck you.

More to learn about UART’s?

Watch defcon!

https://www.defcon.org/

They regularly hack on devices and show how all that sorta stuff works. That’s where I learned about some of this, the rest was reading forum posts and trying it myself.

2 Likes

RV515 (Radeon X1300/X1550) with one vertex shader either removed or disabled (figuring out which could be a project itself). They clocked the chip down to 243MHz, so the actual performance is closer to something like the Mobility Radeon 9000 from a few years earlier.

The specs I know of state the GDDR3 as running at the same clock as the GPU core; 243MHz (486 Effective). At the time the Wii was being designed 800MHz GDDR3 was flagship stuff, only really finding its way into enthusiast GPUs. If you’ve got a source for the Wii using much faster GDDR3 that’d be cool info to know.

Its just what I have written down from forum posts back in the day. It might be the speed the ram is actually capable of and its clocked down a lot more.

Very interesting to know that its an X1300 though. Timing wise of initial wii’s in japan I would have thought maybe X800, and was going to guess, but I knew you’d know for sure.

Well that opens up a lot more possibilities.

I mean yes… And no…

A Universal asynchronous receiver-transmitter is a serial interface its basically a serial port. Usually it uses i2c as an interface…

But huh lol you have an… Interesting experiment going on

1 Like

I just want a weird computer.

Also no one does anything on here anymore I might as well post what I’m doing right.

2 Likes

not NetBSD

I’m not disappointed, just mad.

I2C is VERY different from a UART serial port.

If theres a NetBSD runner I’ll go for it.

This is true I mispoke. I predominantly deal with SPI.

Correction I2C is a sychrnous protocol
UART is async (each device has its own clock)

1 Like

Short update here…

I uh…e

I dunno where the power cable is ^_^’’

Till I find it this is on hold and I’m not buying another one.

Ah fuck I almost forgot this.

Aight imma find that cable.

Meanwhile, here’s void linux running on a wii.

(Done by @FoxletFox on twitter, shown to me by @stenstorp)

(Notice the cpu identifier)

3 Likes