|Getting the eMMC memory option prevents the usage of uSD for booting! (Most people would NOT want that!)|
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
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
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
0 means OFF
1 means ON
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
sudo putty -serial -sercfg 115200,8,n,1 /dev/ttyUSB0
To get Putty: http://www.putty.org/
sudo minicom -s
Choose 'Serial port setup':
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:
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.
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.
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!