Recent Linux on Cortina Systems Gemini Platforms
Latest test on 2019-01-26 (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 SoC from Cortina Systems known by the project name Gemini was concieved by Storlink Semiconductor in the early 2000s, apparently with heavy consultation from Faraday Technology. The company changed their name into Storm Semiconductor, and then Cortina acquired Storm Semiconductor in 2008. It seems to have been evolved from an even earlier SoC named SL2312. Lepus seems to be a code name for Gemini.

The SoC is a family of the following chips:

This SoC has an ARMv4 ISA and is based on the Faraday FA526 third-party ARM IP core. 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 OpenEmebedded.

I am trying to collect vendor tree code at GitHub. Please contribute if you have newer GPL sources than what I have. The code seems to have been partly written by MontaVista under consultant contract to Storlink.

The procedure is likely similar on all the Gemini platforms, but I'm using the ITian SquareOne Smart Storage Server, which apparently doesn't have any upstream support whatsoever as of writing. I got this unit from Florian at OpenWRT to have a Gemini (ARM FA526 based) SoC hacking target.

It is pretty easy for an experienced 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. If you have one of these and you don't know what to do with it or very much want support for it, send it to me (no strings attached) and I will try to fix it up. I will likely try to solder in a UART so it is risky. (linus.walleij@linaro.org)

Systems using the Gemini/SL3512:

Systems using the Gemini/SL3516:

Unknown SoC (SL3512 or SL3516, suspect SL3512 on all NAS products):

Out of scope

It turns out that many of the components inside the Gemini machines are actually off-the-shelf IP blocks from Faraday Technology, an SoC design firm in Taiwan, that has been around since the 1990ies.

Getting into Gemini Systems

All Geminis are pretty similar with regards to serial ports etc. See my pages for the D-Link DNS-313, D-Link DIR-685 and ITian SquareOne for examples of how I attached UART and accessed the Internals.

Most systems are 19200 bps by default but some are occasionally at 115200 bps.

Getting OpenWRT up on it

As per 2018-02-20 I managed to rebuild and boot OpenWRT on the DIR-685 and DNS-313. The steps taken were:

I am working on a set of patches incorporating builds for all platforms with upstream kernel support, all necessary patches have been merged upstream to OpenWRT, I am working at refining them for the different routers.

Prebuilt OpenWRT rootfs (tested):

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.

Gemini SoC Kernel TODO

OpenWRT TODO

Links