This page is work in progress, please do not edit, until I remove this notice.

Describe InstallingDebianOn/CompuLab/PC-Utilite/buster here.

Debian buster U-Boot network installation to PC Utilite Pro

This manual explains how to install Debian buster on the internal SSD drive of the "Utilite Pro" device, made by CompuLab. First partition the micro-SD card, upgrade U-boot and netinstall Debian buster. Next write the updated U-Boot to internal SPI FLASH of the Utilite device (carefull with this step), then U-Boot Debian over console from internal SSD drive.

Shell environment to use # for root shell, and $ for user shell.

Download armhf ISO image

You can download armhf ISO image from Debian cdimage depository. The file to download tested in this installation was debian-10.3.0-armhf-netinst.iso.

Serial console connection

First get serial connection working to be able to connect to Utilite/U-boot console.

screen /dev/ttyUSB0 115200

Device can also be /dev/ttyS0.

Starting

Install required Debian packages.

# apt install -y build-essential gcc-arm-linux-gnueabihf bison flex bc git
$ git clone https://gitlab.denx.de/u-boot/u-boot.git
$ cd u-boot
$ git checkout v2020.01
$ export ARCH=arm
$ export CROSS_COMPILE=arm-linux-gnueabihf-
$ make cm_fx6_defconfig
$ make
$ tools/mkimage -n spl/u-boot-spl.cfgout -T imximage -e 0x908000 -d spl/u-boot-spl.bin spl.img
# dd if=/dev/zero of=cm-fx6-firmware bs=64K count=1
# dd if=spl.img of=cm-fx6-firmware bs=1K seek=1 conv=notrunc
# dd if=u-boot.img of=cm-fx6-firmware bs=1K seek=64 conv=notrunc

U-boot Debian netboot commands

Here we select netboot initrd image to be booted. Plug in the ethernet cable into one of the Utilite ethernet's ports.

# load mmc 2:1 0x12000000 install.ahf/vmlinuz
# load mmc 2:1 0x13000000 install.ahf/netboot/initrd.gz
# load mmc 2:1 0x18000000 install.ahf/device-tree/imx6q-utilite-pro.dtb
# setenv bootargs console=ttymxc3,115200 ${video}
# bootz 0x12000000 0x13000000:0x164707d 0x18000000

Final SSD drive boot

# sata init
# load sata 0:1 0x12000000 vmlinuz
# load sata 0:1 0x13000000 initrd.img
# load sata 0:2 0x18000000 usr/lib/linux-image-4.19.0-8-armmp/imx6q-utilite-pro.dtb
# setenv bootargs console=ttymxc3,115200 root=/dev/sda2 ro rootwait ${video}
# bootz 0x12000000 0x13000000:0x139535e 0x18000000

Writing new U-boot onto internal SPI EEPROM

Be carefull here, this can result into a bricked SPI EEPROM (bricked Utilite) !!!

# load mmc 2:1 0x12000000 cm-fx6-firmware

613110 bytes read in 67 ms (8.7 MiB/s)

# sf probe 0

SF: Detected sst25vf016b with page size 256 Bytes, erase size 4 KiB, total 2 MiB

# sf erase 0x0 0xc0000

SF: 786432 bytes @ 0x0 Erased: OK

# sf write 0x12000000 0x0 0x95af6

evice 0 offset 0x0, size 0x95af6 SF: 613110 bytes @ 0x0 Written: OK

Power off / Power on the Utilite

Resetting the U-boot parameters

# env default -a
# setenv bootdelay 60
# saveenv

Errors

There is a repeated dmesg USB error message, repeated every 2 seconds. I don't know how to fix or ignore that. It's not affecting the functionality of the device.

[  701.247913] usb 1-1: reset high-speed USB device number 2 using ci_hdrc
[  703.255691] usb 1-1: reset high-speed USB device number 2 using ci_hdrc
[  705.263478] usb 1-1: reset high-speed USB device number 2 using ci_hdrc
[  707.271264] usb 1-1: reset high-speed USB device number 2 using ci_hdrc
[  709.279065] usb 1-1: reset high-speed USB device number 2 using ci_hdrc
[  711.286845] usb 1-1: reset high-speed USB device number 2 using ci_hdrc
[  713.294632] usb 1-1: reset high-speed USB device number 2 using ci_hdrc
[  715.302429] usb 1-1: reset high-speed USB device number 2 using ci_hdrc
[  717.310218] usb 1-1: reset high-speed USB device number 2 using ci_hdrc