Installing

You can get the latest version by going to http://downloads.ipfire.org clicking on the link for the latest version, scrolling down to the arm section and downloading the armv5tel image for boards with serial console.

Follow the instructions for the GuruPlug, dreamplug to program the SD card, and to connect to the Mirabox's serial console.

I had installed ArchLinux on my Mirabox sometime last year. I can't really remember if I had installed a different version of u-boot then or not, but, whatever version was on it worked fine for IPFire.

You will need a micro SD card (referred to as just SD card in the rest of the document) at least 2 GB in size.

Mirabox Kernel uImage

The uImage file on the SD card image as downloaded from ipfire.org will not boot on the Mirabox. ARM systems require a “Device Tree Blob” or DTB specific the particular CPU and board hardware.

Next, mount the first partition of SD card on your linux system. Usually, the desktop environment will assist you, but, you can do it manually as follows:

sudo mkdir -p /mnt/sdmount /dev/sdb1 /mnt/sd

/dev/sdb1 may be different, depending on the number hard drives. Take a look at /proc/partitions to see which device is about the correct size. To be safest, look at /proc/partitions before and after connectioning the SD card to your system.

Insert the SD card into the micro SD card slot of your Mirabox. As outlined in the installation link, above, connect a mini-B USB cable from mini-B connector on your Mirabox to a USB connector on your PC. You'll need a terminal program of some sort (minicom on Linux to /dev/ttyUSB0) set for 115k,8,n,1 with flow control turned off.

UBoot Configuration

(under construction – I gotta run, but, will continue writing this soon, next step will be detailed uBoot configuration, for now, I'll just list the important settings)
These are the commands you need to enter. It may be worth it to run printenv before you do this to see what things like bootcmd are set to before you start.

Use saveenv to make this config. permanent. Use printenv to see your current config.

Once you've set everything up you should be able to run boot to boot using this configuration. If you do this without running saveenv your settings will be lost the next time you boot the mirabox.

Note: I changed the partition table on my SD card to make the 2nd partition #2, so that I could use the same boot parameters as for my ArchLinux SD card. If you use the SD card as created, you'll want to use root=/dev/sdb3 in the boot_mmc variable.

MAC (Ethernet Hardware) Address Configuration

IPFire doesn't get a permanent hardware address for the ethernet ports w/o some help.

The setmac environment variable in the previous section fixes that, and is called (run setmac) in the bootcmd environment variable.

The MAC address is set with two “mw.l” commands for each Ethernet NIC. The first argument to the mw.l command is a memory address, the second is the data. These first two commands set the MAC for eth0 to F0:AD:4E:01:a5:13,

mw.l 0xD0072418 0xF0AD4E01;mw.l 0xD0072414 0xa513;

The next two commands set the MAC for eth0 to F0:AD:4E:01:a5:14

mw.l 0xD0076418 0xF0AD4E01mw.l 0xD0076414 0xa514;

Caveats

My 2014 Macbook Pro (running 10.9.5) using the Thunderbolt Ethernet interface won't pick up an IP address from DHCP my IPFire/Mirabox, even though my Linux VM on the same computer will, and my 2011 Macbook Air (running 10.10.x) will as well.

Odly, if I I configure it (the Macbook Pro) for DHCP with Manual address, it DOES pick up the gateway and DNS information from the DHCP server.

I haven't tried WiFi out on the Mirabox yet. I've got other, dedicated wiresless access points on my network, and am planning on using this as firewall only. There are no external antennae on the Mirabox, so, I don't have high hopes for good range with it anyway. After I get the DHCP problem resolved, I'll try out the WiFi.

Future Enhancements

Resolve the DHCP problem that happens with some Mac OS X computers

WiFi – try it, get it working.

Summary

Once I resolve the DHCP issue, I will put this IPFire Mirabox into service to replace my 9 year old Linksys WRT54GL w/ DD-WRT.

I'm having an interesting problem, though. If I run the above commands manually, everything works fine and IPFire boots and works beautifully. If the system runs the fatload and bootm commands as part of the boot process, I get errors and the sequence fails. I also sometimes have to run mmcinfo before the fatload command, I think to initialize the mmc subsystem. I've included that command in my boot sequence.

The solution to that problem, which I just discovered (April 10, 2017) is to load the image and boot from it directly instead of calling those commands from an environment variable. Here's my final, working list of commands.