Shopping for small WiFi enabled hardware for an art project

scrottie on 2009-03-05T10:07:30

I've used EmbeddedARM.com's stuff before. I know (knew?) someone who works there. Dayjob uses their stuff. Besides are a bizarre over reliance on programmable logic (the TS-7200 I have uses programmable logic to add a Compact Flash drive, which happens to be extremely slow), it's all pretty sane and solid. Core requirements for this project are that it be small, the smaller the better, and have WiFi. EmbeddedARM's stuff doesn't have built-in WiFi but they sell and support inexpensive USB dongles. They have $100 boards, but the tiny system-on-a-module requires another $100 board for stuff like serial that you need to do development on/for the board. Not bad, but other companies are making things really cheap now days. Still, these guys happily sell inexpensive flash cards with full Debian ARM installs, making the boards self-hosting, which makes development much easier. These things also sport lots of digital/analog IO standard, some kind of flash drive (SD or CF), and PC-104 style buses with lots of daughter cards, making them ideal for system integrators and hobbyists who have other things in mind than just CPU+RAM+WiFi.

There's RouterBoard. I haven't worked with these things yet. These seem to be part of a new generation of WiFi+MIPS platforms based on an Atheros chipset. Atheros makes both the WiFi and the CPU, on one die. They have some nice small systems starting at $100 with WiFi built in. Main question is how nasty it would be to get a full Debian install going on these. Hard to find the specs on how much flash is on-board, which gives a good indication of how hard it would be to bootstrap Debian, if possible at all. Not enough userland there to start with and it's a doomed effort. Also, they're on about their "RouterOS", which comes in a bunch of levels, but they never seem to clarify if RouterOS is based on Linux.

Then there's Ubiquity. These things are of the Atheros MIPS+WiFi school. What got me thinking this direction was the EyeFi, and clever uses for it if it could be loaded with customized firmware. It's Atheros MIPS, but fingernail sized. Ubiquity has a tiny board that only has 4 megs of flash, mostly occupied by their web based GUI software, apparently based on OpenWRT. Or maybe not. But they also support OpenwRT, if you're willing to make a series of modifications to OpenWRT. Sigh. They have a larger model with more RAM and flash, and the tiny model doesn't seem to have USB or SD, so expanding beyond the built-in 4 megs of storage isn't an option. The larger board starts at $70 and the tiny thing at $110. The little board has about the same footprint as a credit card. Impressive!

Then there's the Marvell ShivaPlug. ARM based, no built in WiFi, apparently. But the power adapter is built in. And that counts. Should be able to stick a supported USB WiFi thing into it. And it is clear about running Linux and supporting development.

I don't know if MIPS platforms have this problem, the ABI (binary interface) for ARM Linux keeps changing. softfloat vs hardfloat, big endian vs little, version of the ABI... it's really hard to get a userland that matches your kernel, and then get your binaries to match that. Bootstrapping is a royal pain in the ass. I learned that with some Korean company's ARM board that had software built for softfloats. Hardfloat stuff, even though trapped and emulated by the kernel, wouldn't link, and it wouldn't link to other libs, because the libs wouldn't mix. Grr.

So, thoughts? Have you worked with these little MIPS boards? I'm especially interested in bootstrapping Perl on them, which I've done on ARM -- Perl 5.10 on MIPS, self hosting, with gcc, Coro, and all that stuff.

A lot of the pain of these little boards is the bootstrap process. The bootloader, eg U-Boot, wants to flash the kernel rather than store it in a file in a filesystem. That loads an initrd image that's also flashed directly to the flash chip on the thing rather than stored as a file in a filesystem. That has a bunch of crap built in and either mounts another root or more likely a /usr. This makes it tedious, time consuming, and error prone to upgrade the OS on the thing, or even to hook into bootstrap and add crap to be run. They seem to run out of steam by the time they get the boards to work and don't have enough energy left to leave you hooks to start up software you add to it.

Frankly, these little RISC boards have a long way to go before they're as sane as fuckin' x86 CISC. And that's pretty pathetic, considering how obnoxious and annoying x86 is.

-scott