/ arm

Getting Fedora Server running on the Utilite Standard

I installed the Fedora ARM Server image on a Utilite Standard (which is based on a dual-core Freescale iMX6 1GHz). Not everything is working, but these are my notes.

download the Fedora ARM Server image from https://arm.fedoraproject.org/

There are installation instructions at https://fedoraproject.org/wiki/Architectures/ARM/F23/Installation but nothing specific to the Utilite hardware.

Writing the Fedora Server image, from Linux:

DISK=/dev/... # set this to your sdcard disk device
unxz Fedora-Server-armhfp-24-1.2-sda.raw.xz
dd if=Fedora-Server-armhfp-24-1.2-sda.raw of=$DISK

Writing uboot requires two pieces. The first is uboot SPL ("Secondary Program Loader"). SPL's job is to load the second, larger uboot program. SPL on the Utilite expects to find the full uboot image 64kb from the start of the sdcard, not in a filesystem. They both live on the sdcard between the partition table and the first partition. More info on Utilite's boot process is here: U-Boot firmware

DISK=/dev/... # set this to your sdcard disk device
mount ${DISK}3 /mnt/fedora
dd if=/mnt/fedora/usr/share/uboot/cm_fx6/SPL of=$DISK bs=1k seek=1 conv=fsync; sync
dd if=/mnt/fedora/usr/share/uboot/cm_fx6/u-boot.img of=$DISK bs=1k seek=64 conv=fsync ; sync

uboot environment changes needed (done from the uboot command line over the serial port). Note: these won't be saved unless you use the command "saveenv". Saving these changes will make it very hard to boot the Utilite Ubuntu and Android images, so keep that in mind.

setenv bootfile /extlinux/extlinux.conf
setenv pxefile_addr_r 0x17f00000
setenv ramdisk_addr_r 0x18100000
setenv dtb cm-fx6.dtb
setenv fdtaddr 0x11000000
setenv fdt_addr_r 0x18000000
setenv scriptaddr 0x17e00000
setenv kernel_addr_r 0x11000000
setenv bootm_size 0x20000000
setenv fdtfile imx6q-cm-fx6.dtb
setenv bootcmd "sysboot mmcdev 2 fat"

If you want the CPU to go into powersaving mode, load the module imx6q_cpufreq

The devicetree file for this hardware included with the kernel in /boot/dtb-4.6.5-300.fc24.armv4hl/imx6q-cm-fx6.dtb didn't have everything needed (for instance: the mmc drivers needed for the sdcard), so I used the compiled version of https://github.com/ddrown/utilite-kernel/blob/master/imx6q-cm-fx6.dts

I had to patch igb with this: https://github.com/ddrown/utilite-kernel/blob/master/igb-mac.diff or I get the message [ 1675.695978] igb 0000:01:00.0: Invalid MAC Address

I use the script https://github.com/ddrown/utilite-kernel/blob/master/igb_setmac to set the proper mac address on the interface.

I had to disable selinux, it wouldn't boot otherwise.

Things working, for some value of "working":

  1. basics (CPU, memory, sdcard, serial port)
  2. eth0 (driver: fec)
  3. ieee1588 (precision time protocol) on eth0
  4. pcie
  5. eth1 (driver: igb)
  6. usb host

Things not working:

  1. wifi/bluetooth (missing firmware?)
  2. GPU/video (I didn't test this)
  3. possibly other things

dmesg available here