Recent Linux on Intel IXP4xx Systems
Latest test on 2019-02-01 (kernel v5.0-rc1)

SL3512 chip

SL3512 chip

SL3516 chip

SL3516 chip

SL93512R BRD reference design

SL93512R BRD reference design
supported by the upstream v4.19 kernel

The IXP4xx is a series of XScale ARM chips from Intel that was created as part of their legacy when acquireing Digitals StrongARM line. This SoC has an ARMv4T ISA. It can sometimes be hard to find the right tools and no major distributions support the ARMv4 ISA. The typical userspace is built using OpenWrt or OpenEmbedded.

A major reason why IXP4xx silicon is still produced and deployed is the operating conditions. If you look at for example the Gateworks Cambria GW2358-4 network processor you notice the strictly military operating conditions:

It is pretty easy for an experienced ARM kernel hacker to get any of these devices running with the latest kernel and full hardware support. Most of the heavy lifting is already done and landed upstream.

The UARTs on the IXP4xx uses 115200 baud.

Getting OpenWRT up on it

It is pretty straight forward to build the latest OpenWrt for IXP4xx.


The Linksys NSLU2 also known as "the slug" is a NAS box which has ethernet and two USB 2.0 plugs to run USB disk enclosures for storage. The simplicity of this platform created a huge hobbyist hacking community in the mid-2000s.

Compiling the kernel

This mostly details how to get an upstream bleeding-edge kernel compiled and booting on the Gemini devices.

See obtaining an ARMv4 Toolchain for getting a proper ARMv4 Toolchain if you want to build userspace. The toolchain from OpenWRT should work just fine too, I just haven't tried it. For kernel compiles I just use the latest Linaro ARM toolchain.

You can use my makefile and initramfs to get to a prompt. Copy the rootfs-gemini.cpio to your $HOME directory, then put the gemini.mak file in your Linux base directory and type:

  make -f gemini.mak config && make -f gemini.mak build

The initramfs config option to boot from a RAM resident busybox will take precedece, so if you want to use OpenWRT as rootfs you need to disable that in the kernel build.

IXP4xx Kernel TODO