IMPORTANT NOTICE: Please don't ask me questions about Squidge, as I am no longer maintaining it. I'm leaving this page here in case it's useful to someone, but most of my free time is now spent hacking on the Bifferboard :).

Bifferos 25/3/2009




Squidge is a Linux distribution for the Omnima ADM5120-based embedded controller, but is also compatible with the Edimax BR-6104KP, BR-6104K and the Sweex LB000021 (the latter two require a USB-port mod).

Squidge runs from a USB storage device, and doesn't write anything to the device's on-board flash. The included software is aimed at electronics/home automation enthusiasts. Although the device can function as a router, this aspect is not really targeted by Squidge, and for that you are probably better off using Midge.


Squidge can be downloaded from If you want to ensure you have a good download, version 1.7 should have md5 as follows:

$ md5sum squidge-1.7.tar.bz2
ad8a0d92107a2311b6d2ada8bc2440c8  squidge-1.7.tar.bz2

Building From Source

First checkout the Squidge build scripts:

svn co

Then run them:

cd squidge

Many people have had trouble building Squidge from source. Please ensure you are using Slackware 12.1 (full install) before emailing me with problems, as I'm not familiar with other distributions. Of course, it is highly likely the build works with most distributions with recent Make, GCC, Python and so on.

Firmware Uploading

The Squidge build generates a single tarball in the squidge directory. The firmware can be found inside the tarball in boot/firmware.csys. firmware.csys needs to be 'flashed' to the router. This can be done via the serial console on connector 'JP2' (2x4, 8-way pin header).

JP2 is just a 3.3v serial port. For the cable, depending on your electonics competency you have a few options:

  1. You can order the made-up USB cable from Omnima
  2. You can make an RS232 level shifter
  3. You can adapt some types of mobile phone data cable to give the 3.3v serial signals.

The Omnima cable has the advantage that it comes with the correct connector for the board (it will work with any of the boards supported by Squidge), but be careful not to mis-allign it over the pins because one of the wires carries 5v!

Details of wiring, and the software to use for programming the board can be found on the linux-mips wiki.

I use the adm_upload Python script, and have the Omnima USB->serial cable, e.g.:

./adm_upload -d /dev/tts/USB0 -x -b firmware.csys

Lastly, if this firmware uploading stuff is too complicated for you, you can order a board from Omnima with the latest Squidge software pre-programmed.

Rootfs preparation

Find a USB memory stick (500MB or more recommended) and format an EXT3 file system as the first partition, for instance (as root):

mkfs.ext3 /dev/sda1
mkdir tmp
mount /dev/sda1 tmp
cd tmp
tar xvf ../squidge-X.XX.tar.bz2
cd ..
umount tmp

Initial configuration

Initially, a very minimal set of packages are installed. The rest can be found under /www/squidge/packages. You can use opkg to install these packages, but you will first need to update the package list:

opkg update

Then you can install the things that you need:

opkg install python-mini

For the complete list see /www/squidge/packages.

Building Custom Squidge Configurations

After the initial run of it is possible to customise your system with additional packages, or kernel functionality. Go into the openwrt directory and type:

make menuconfig


make kernel_menuconfig

in the usual way. When running make, remember to give the V=99 option, because the build system has a habit of prompting for kernel options during build, and you will not see these prompts without V=99. When the build is complete, go up to the Squidge directory and run ./ This will recreate the Squidge tarball with your new packages.

IMPORTANT: 'make menuconfig' must configure extra packages as modules ('m' not 'y'). These modules will then be added to the Squidge tarball. 'make kernel_menuconfig' must configure extra modules as built-in ('y' not 'm'). This functionality will go in the new firmware image (CSYS file).

If you wish to make a custom version of Squidge, the version number in the tarball filename is derived from the second field in squidge/files/etc/banner. Please change this if you release your own version of Squidge to avoid any confusion.

Connecting Hardware

By removing the LEDs you have access to GPIO pins which you can use for electronics projects.

  • GPIO Information on controlling GPIO pins.
  • 1-wire Add a 1-wire bus master on a LED pin.
  • MMC Add an MMC card.
  • Pencam Webcam project.

See also