Getting started with compiling Wii apps in Linux

First off, setting up a development environment, and then the ability to run the games on the Wii are very different. Since my Wii was on the latest official system upgrade (v4.3), there were not many options for getting a custom game boot loader on it. Thankfully, I went with the Indiana Pwns and it was super easy and straight forward. Now I have the Homebrew Loader installed by way of using the BootMii installer, and I am free to load my own compiled projects as well.

To get the development kit up and operational it involved a bit of guess work, but thankful I can still use my GNU C utilities.

From the “devkitPPC” directory, you’ll need the appropriate download for you host type. For me, it was devkitPPC_r21-x86_64-linux.tar.bz2

It extracts to ”devkitPPC/”. You can put this where every you’d like, but I kept everything as my limited privilege user, and created a directory $HOME/bin/opt/, and put the directory there. Next you’ll need to set a couple of ENV variables that most projects look for in their Makefile’s. In my $HOME/.bashrc I added

export DEVKITPPC=$HOME/bin/opt/devkitPPC/

The manpath is for me :)

From the portlibs folder you’ll need everything with “ppc” in the name. The Wii’s proccesor is an IBM PowerPC chipset

Once you have all of these downloaded, a simple for loop will do well.

mkdir ${DEVKITPPC}/portlibs

for file in *ppc.tar.bz2 ; do tar -C ${DEVKITPPC}/portlibs/ -xjf $file ; done

Next, download libogc-src-*.tar.bz2 from, and lets get it compiled and installed (also, it depends on the ENV variables and the libraries above). The make install below will put it in $DEVKITPPC.

mkdir libogc ; tar -C libogc -xjf libogrc-src-*.tar.bz2 ; cd libogc

make clean && make && make install

Lastly, getting libfat present and respectable. get the libfat-ogc-*.tar.bz2 tar ball

tar -C ${DEVKITPPC}/portlibs/ -xjf libfat-ogc-*.tar.bz2

cp ${DEVKITPPC}/portlibs/lib/wii/libfat.a ${DEVKITPPC}/portlibs/lib/libfat.a

At this point there is enough present to begin hacking or least compiling as a tester. To validate we have a good compiling ENV, lets try out libwiigui . It is a great framework to learn/use/get started with, but for now if we use it to a validation test. At the time of writing this, the latest was So:

mkdir libwiigui ; cd libwiigui ; unzip ../

make clean && make

You should be left with two  new files (libwiigui-demo.elf and libwiigui-demo.dol).

On the SD card that I keep my HomeBrew applications on, I make a directory sd://apps/libwiigui/ and copy these two files into that directory, and rename them boot.elf and boot.dol respectively.

Now when I put the SD card in the Wii and launch the HomeBrew loader, I have a blank button (because I didn’t take the time to add icons and descriptions), and when clicked and loaded, there it the basic libwiigui framework app!


Take care,


p.s. here are a couple of additional information links.

linux and the Broadcom STA wireless driver

on the recent release of the 2.6.32 series kernel in the slackware-current branch, currently, it has posed a bit of a minor frustration on this Dell mini 9″ and its broadcom 4312

vbatts@mini:~$ lspci | grep Network
03:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g (rev 01)

appearantly in the kernel headers, the definition of schedule() has moved around a little. Using the drivers downloaded from here (currently version, if you are getting an error like

vbatts@current:~/bcm1$ make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/linux-'
  LD      /home/vbatts/bcm1/built-in.o
  CC [M]  /home/vbatts/bcm1/src/wl/sys/wl_linux.o
/home/vbatts/bcm1/src/wl/sys/wl_linux.c: In function 'wl_free':
/home/vbatts/bcm1/src/wl/sys/wl_linux.c:705: error: implicit declaration of function 'schedule'
make[2]: *** [/home/vbatts/bcm1/src/wl/sys/wl_linux.o] Error 1
make[1]: *** [_module_/home/vbatts/bcm1] Error 2
make[1]: Leaving directory `/usr/src/linux-'
make: *** [all] Error 2

then the following patch will just add include the needed headers to move you along in compiling your wl.ko module

cat ../hybrid_sta-2.3.32.patch | patch -p1

at which point you should be gravy to proceed as usual.

vbatts@current:~/bcm2$ make
KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/linux-'
LD      /home/vbatts/bcm2/built-in.o
CC [M]  /home/vbatts/bcm2/src/wl/sys/wl_linux.o
CC [M]  /home/vbatts/bcm2/src/wl/sys/wl_iw.o
CC [M]  /home/vbatts/bcm2/src/shared/linux_osl.o
LD [M]  /home/vbatts/bcm2/wl.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: modpost: missing MODULE_LICENSE() in /home/vbatts/bcm2/wl.o
see include/linux/module.h for more information
CC      /home/vbatts/bcm2/wl.mod.o
LD [M]  /home/vbatts/bcm2/wl.ko
make[1]: Leaving directory `/usr/src/linux-'
vbatts@current:~/bcm2$ ls
Makefile  Module.symvers  built-in.o  lib/  modules.order  src/  wl.ko  wl.mod.c  wl.mod.o  wl.o
vbatts@current:~/bcm2$ sudo mv wl.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/
vbatts@current:~/bcm2$ sudo depmod -a
vbatts@current:~/bcm2$ sudo modprobe wl

and do not forget to `unset ARCH` before compiling 😉

Take care,


huludesktop for linux … and slackware !!

so i just saw that labs has recently published a desktop player for linux. using my rpm-slackpack script , i converted the fedora packages they have for download, into slackware tgz’s.

you can download the i386 and x86_64 from

once you’ve downloaded and installed it, pending you have the flash-player-plugin installed from, or some other means, you will need to edit the file ~/.huludesktop, on the line “flash_location = (null)”, to the location of the flash library. For me, its as follows.

$ grep libflash /var/log/packages/flash-player-plugin-10.0_r32-x86_64-1_SBo

then you have a command `huludesktop`, and away you go!

Take care,

vb 3.1.0 on Dell Mini 9 with Ubuntu 8.04.1

So I have *finally* received the 9 inch Dell mini that I had ordered over a month ago. The device pre-installed with Ubuntu was much more preferable, even though the release is a couple of versions old now.

Everything is great so far, but the first thing that i had to do was update the version of being used. Its not so much that I have any problems with version 2.4, but rather everything else I am using is version 3.0 or 3.1.  I have seen several issues when opening and transferring an *.odt between varying versions of openoffice.  Its never fun to lose or mess up formating.

Luckily for me, there were only a couple of dependencies that had to be resolved and the packages I lost, didn’t really impact me.

First off, I had to add the project that maintains the lastest OOo for Ubuntu. Either through the GUI or to /etc/apt/sources.list, add

deb hardy main

and then wget their key and import it. I panzied out and used the GUI to import it.

you next apt-get update, and should remove the following to packages, and all their dependencies.

aptitude remove

at which point, you are clear to do an

aptitude dist-upgrade

all done!

take care,


google-gadgets update

a few posts ago i showed how to convert the SuSE *.rpm’s from the google-gadgets-for-linux project, into slackware packages.
well for a couple of their releases now, i’ve been maintaining a Slackware build script. you can browse it on my viewcvs or check it out on subversion

svn co svn://

have fun !

social-lite junkies

for all of you that can’t get enough of knowing way to much about everyone else’s business, things just got easier and sexier 😉
its a web browser, backended with firefox/mozilla, but they’ve incorporated many of the everyday social aspects of the web, and made it easy too.
their current stable is still on firefox2, but i read that the beta2 is backended with firefox3, which should make it that much better. anyhow, check it out  

Blogged with the Flock Browser

Tags: , , ,

blackberry modem… update

so to make the process even easier for connecting to the internet, using a blackberry as the GPRS modem, on slackware, i put together the packages needed for wvdial.
after initially attempting pppd, and going with wvdial on my openSuSE work laptop, i thought i would tough it out on my personal slackware laptop, and try to work out the needed chat scripts.
so the SlackBuilds are wvdial and wvstreams, these are also served on subversion, so you can ‘svn co’ their URL.
this makes it much more easy to connect, at least with Sprint it does.

Yaah for best buy

tonight while browsing for what laptops are currently available, i see another encouragement. Best_Buy-OS, Best Buy actually has Linux listed as an available Operating System, granted all three machines are the new Asus – Eee PC Best_Buy-Eee.

give a Best Buy an encouraging pat on the back.

blackberry modem… SUCCESS!

Last night i got to nerding it up again, this time with the 8703e blackberry, work phone, and linux.

Using this howto. My blackberry service is through Sprint, so my primary difficulty was with get the pppd settings to work, not until i began scrolling through some of the comments that i found someone using wvdial instead. once i tried it, that worked on the first try. i found on the BlackBerry website, they actually recommend that you can call your service provide and ask what APN can be used. from this howto, the APN is the “”. either way should achieve the same end result.

the openmotif and openmotif-devel i was able to find in a typical SuSE-10.2 repository, but the Xlt libraries and the XmBlackBerry i had to download and compile from source, which was pretty straight forward.

if you are a slacker, i’ve made the SlackBuild scripts for these three packages, currently they are available here (xlt, openmotif, and xmblackberry)



skype-2.0.0 for linux, Now has video!


i was in class and opening skype to see if i could find someone in Japan to talk to, and i figured i would see if there is a newer version of skype available, indeed there was.

but the jump from 1.4.0 -> 2.0.0, is the addition of video to linux, this is great, really great. now i have to dig out my webcam so i can get it working. 😉

Skype for Linux

skype options