Pictures: ClearFog Base


Pictures: ClearFog Pro

Technical data

ClearFog Base

  • CPU: Dual 1.6GHz A388 (armv7l)
  • SoC: Marvell ARMADA A388 ARM A9
  • RAM: 1GB RAM (optional 2GB)
  • Storage: uSD / 8GB eMMC* / M.2 SSD
  • 2x Port dedicated Ethernet
  • 1x USB 3.0 port
  • 1x SFP
  • 1x mPCIE

ClearFog Pro

  • CPU: Dual 1.6GHz A388 (armv7l)
  • SoC: Marvell ARMADA A388 ARM A9
  • RAM: 1GB RAM (optional 2GB)
  • Storage: uSD / 8GB eMMC* / M.2 SSD
  • 2x mSATA/mPCIE
  • 1x USB 3.0 port
  • 1x Port dedicated Ethernet
  • 5x Port switched Ethernet
  • 1x SFP
Note!
Getting the eMMC memory option prevents the usage of uSD for booting! (Most people would NOT want that!)

Datasheet: https://wiki.solid-run.com/lib/exe/fetch.php?media=a38x:carrierboard:docs:sr-a38x-clearfog-base-datasheet.pdf

IPFire Image

ClearFog Base is supported since IPFire 2.21 core 126

Download the latest IPFire version from: https://www.ipfire.org/

ClearFog Pro should be supported before IPFire 2.21 core 125 (as the networking port is not an issue here). You can use the latest "stable" release for the "Pro" version.

Extract the image and flash it to the microSD card (after determining the correct device for the microSD card reader):

lsblk # get correct dev
gunzip ipfire-2.21.1gb-ext4.armv5tel-full-coreXX.img.gz # extract image
dd if=ipfire-2.21.1gb-ext4.armv5tel-full-coreXX.img of=/dev/sdX conv=fsync bs=4M status=progress # flash image to SD card

U-Boot

For ClearFog Base/Pro to work correctly, you need to flash a u-boot image from SolidRun.

I have pre-compiled these files: https://mega.nz/#F!KCZH1SYb!8znuTlq0MhXZNRo57Vjxww

MD5: edcb41f3e051dea6a279979b344d669f  u-boot-spl-sata_base.kwb
MD5: 5460ad37cd2e37a3f1747ec363acd107  u-boot-spl-sata_pro.kwb
MD5: bdc49c506cc79417e030605beebcc24e  u-boot-spl-sdhc_base.kwb
MD5: d6c85f0d7941d391e6e749236be56c6e  u-boot-spl-sdhc_pro.kwb
MD5: faf19d9d71d81749c6f6a6de02f842c8  u-boot-spl-uart_base.kwb
MD5: 76d63eab640201ed8e2da5b657771e74  u-boot-spl-uart_pro.kwb

... but you are encouraged to build them yourself, if you can!

You can follow the official guide: https://wiki.solid-run.com/doku.php?id=products:a38x:software:development:u-boot#compiling_from_source

As tool chain you need a ARM GCC Cross Compiler with version 6 or later.

At the time of writing this guide, I was using: https://releases.linaro.org/components/toolchain/binaries/6.4-2018.05/arm-linux-gnueabi/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabi.tar.xz

Once you have configured and built the u-boot image for your microSD card (or whatever other storage device) you need to flash that image to the device:

dd if=u-boot-spl-sdhc.kwb of=/dev/sdX bs=512 seek=1 conv=sync

DIP Switches

In order for the ClearFog Base/Pro to boot from the correct device, you need to set the DIP switches to the correct position.

Using the U-Boot version above those settings are:

SDHC: 00111
UART: 01001
SATA: 11100
SPI:  00010

Note:
0 means OFF
1 means ON

Serial Console

To use the Serial console, connect a Micro-USB Cable from the micro-usb port of your ClearFog to your computer's usb port and start your console application (see below for choices). Plug your microSD card into the slot on your ClearFog and power up the system. You should see text on your terminal screen. Please cancel auto-boot (3s counter) and read the next section (U-Boot Environment) below.

sudo screen /dev/ttyUSB0 115200

Putty

sudo putty -serial -sercfg 115200,8,n,1 /dev/ttyUSB0

To get Putty: http://www.putty.org/

Minicom ("dumb terminal")

sudo minicom -s

Choose 'Serial port setup':

  • Click A, and fill in serial device - for example /dev/ttyUSB0
  • Click E, and choose 115200 8N1 by click E,Q, then enter
  • Click F to disable Hardware Flow Control
  • If needed, click G to disable Software Flow Control, then enter
  • Select 'Save setup as dfl'. Next time you run minicom without the '-s' flag, the saved parameters will be used
  • Press exit, leaving configuration and enter console

U-Boot Environment

When booting, you get an auto-boot counter of 3 seconds. Press any key to cancel auto-boot.

High speed PHY - Version: 2.0
Detected Device ID 6828
board SerDes lanes topology details:
 | Lane #  | Speed |  Type       |
  --------------------------------
 |   0    |  3   |  SATA0       |
 |   1    |  0   |  SGMII1      |
 |   2    |  5   |  PCIe1       |
 |   3    |  5   |  USB3 HOST1  |
 |   4    |  5   |  USB3 HOST0  |
 |   5    |  0   |  SGMII2      |
 --------------------------------
PCIe, Idx 1: detected no link
High speed PHY - Ended Successfully
DDR3 Training Sequence - Ver TIP-1.29.0
DDR3 Training Sequence - Switching XBAR Window to FastPath Window
DDR3 Training Sequence - Ended Successfully
Trying to boot from MMC1


U-Boot 2018.01-02337-gdc4398fdb8-dirty (Nov 21 2018 - 15:25:52 +0100)

SoC:   MV88F6828-A0 at 1600 MHz
DRAM:  1 GiB (800 MHz, 32-bit, ECC not enabled)
MMC:   mv_sdh: 0
Model: SolidRun Clearfog
Board: SolidRun ClearFog Base
SCSI:  AHCI 0001.0000 32 slots 2 ports 6 Gbps 0x3 impl SATA mode
Net:   eth1: ethernet@70000, eth2: ethernet@30000, eth3: ethernet@34000
Hit any key to stop autoboot:  0
=>

To view the current environment variables:

env print

Usually, you will have to change some environment variables to get the system to boot (only one command at a time please!):

env delete fdt_addr_r
setenv fdt_addr 0x8000000
setenv fdt_addr_r 0x8000000
setenv eth1addr XX:XX:XX:XX:XX:XX
setenv eth2addr XX:XX:XX:XX:XX:XX
setenv eth3addr XX:XX:XX:XX:XX:XX
saveenv

The XX:XX:XX:XX:XX:XX (MAC Address) are randomized each start with default values.
Setting them to some custom value, or accepting (saving) the values generated (you see them with 'env print') will prevent the system from generating new MAC Addresses every boot.

The values for fdt_addr, fdt_addr_r are necessary for the kernel to load with correct dtb (device tree blob). We delete the previous fdt_addr_r key because 'setenv' only adds new keys.

boot

Should get the system to boot IPFire for the first time.

Notice: Hardware Random Generator is not available on the board. This causes an entropy wait 0-130 two times. I am using TrueRNG Hardware Random Generator (which you can see on the pictures) and this remedies the entropy problem.

Hints

Congratulations, you should now have IPFire running on your ClearFog Base/Pro!

ClearFog Base gets quite hot! (up to 115°C - usually 90°C-105°C)
[Pro version has the same specifications, but I cannot provide any data from "real life testing".]
I (personally) dislike my equipment getting too hot, so I came up with a way to keep it relatively cool:

[root@Shield ~]# sensors
mcp3021-i2c-0-4c
Adapter: mv64xxx_i2c adapter
in0:          +0.01 V

armada_thermal-virtual-0
Adapter: Virtual device
temp1:        +72.3°C

Maybe you have some plain metal "whatever" you can use to passively cool the device lying around in your basement as well ;)

Should you pan to purchase the ClearFog Base/Pro as IPFire device, I would like to stress again, that the eMMC option is problematic. Skipping out saves 10$ as well as a lot of trouble!