TEZI does not boot on custom IMX6ULL carrier

Hello,

For a new product I have been developing with a Colibri Evaluation Board and an IMX6ULL WB. With this combination I’ve managed to try out the angstrom based console-tdx-image, and later moved on to poky’s core-image-minimal for size reasons.

Because our application requires some specific hardware (A Micrel KSZ8463 3 ports ethernet switch), we made our own custom carrier board to act as our development board. I can probably supply the schematics for it if required. The KSZ8463 is connected via MII and SPI (no MDIO), but the MII pins conflict with the default UARTA used for debugging. We’ve made UARTD available instead, and also have the recommended USBC connector on our board. There is no other special hardware on our custom board, and we’ve broken out some general Colibri IO pins, I2C, SPI and an RJ45 jack for the built in PHY.

If I put regular TEZI 1.8 into flash and plug the module in to the Colibri Evalation Board, I get this output over UARTA and can succesfully connect via VNC:

U-Boot 2016.11-1.8.0+g07edca0bb8 (Oct 19 2018 - 13:34:09 +0000)

CPU:   Freescale i.MX6ULL rev1.0 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 41C
Reset cause: POR
DRAM:  512 MiB
NAND:  512 MiB
MMC:   FSL_SDHC: 0
Using default environment

Video: 640x480x18
In:    serial
Out:   serial
Err:   serial
Model: Toradex Colibri iMX6ULL 512MB Wi-Fi / Bluetooth IT V1.1A, Serial# 06399160
Net:   FEC0
Hit any key to stop autoboot:  0
MMC: no card present
Booting Toradex Easy Installer...
ubi0: default fastmap pool size: 200
ubi0: default fastmap WL pool size: 100
ubi0: attaching mtd1
ubi0: scanning is finished
ubi0: attached mtd1 (name "mtd=4", size 508 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 4060, bad PEBs: 4, corrupted PEBs: 0
ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 40/17, WL threshold: 4096, image sequence number: 86348508
ubi0: available PEBs: 0, total reserved PEBs: 4060, PEBs reserved for bad PEB handling: 76
No size specified -> Using max size (20856020)
Read 20856020 bytes from volume rootfs to 82200000
## Loading kernel from FIT Image at 82200000 ...
   Using 'config@1' configuration
   Trying 'kernel@1' kernel subimage
     Description:  Linux Kernel 4.1
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x822000e0
     Data Size:    4887376 Bytes = 4.7 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x81000000
     Entry Point:  0x81000000
     Hash algo:    md5
     Hash value:   5b8a3fa97134f80a06ee830c58e75dcf
   Verifying Hash Integrity ... md5+ OK
## Loading ramdisk from FIT Image at 82200000 ...
   Using 'config@1' configuration
   Trying 'ramdisk@1' ramdisk subimage
     Description:  SquashFS RAMdisk
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x826a9518
     Data Size:    15929344 Bytes = 15.2 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    md5
     Hash value:   fff196a3409547b7ed2046bf9081b3ff
   Verifying Hash Integrity ... md5+ OK
## Loading fdt from FIT Image at 82200000 ...
   Using 'config@1' configuration
   Trying 'fdt@1' fdt subimage
     Description:  Colibri iMX6ULL Device Tree
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x835da5e4
     Data Size:    37816 Bytes = 36.9 KiB
     Architecture: ARM
     Hash algo:    md5
     Hash value:   f61ffa470f6c279d7fade885b5600b74
   Verifying Hash Integrity ... md5+ OK
   Booting using the fdt blob at 0x835da5e4
   Loading Kernel Image ... OK
   Loading Device Tree to 8fff3000, end 8ffff3b7 ... OK
   Updating MTD partitions...

Starting kernel ...

[    0.540983] gpmi-nand 1806000.gpmi-nand: mode:5 ,failed in set feature.
[    0.588365] imx_usb 2184000.usb: Can't register ci_hdrc platform device, err=-517
Running /etc/rc.local...
Colibri-iMX6ULL_ToradexEasyInstaller_1.8-20181019

Welcome to Toradex Easy Installer

This is a Linux based installer for Toradex modules. Currently the
installer does not have a serial console interface. You can use the
Toradex Easy Installer through any of the available display interfaces
using USB mouse/keyboard or via network using VNC. Use:
  # ip addr show eth0
to display the Ethernet IP address or use USB RNDIS at IP 192.168.11.1.

/ #

If I then swap the same Colibri IMX6ULL module over to our own board, this is the output I get instead (still via UARTA):

U-Boot 2016.11-1.8.0+g07edca0bb8 (Oct 19 2018 - 13:34:09 +0000)

CPU:   Freescale i.MX6ULL rev1.0 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 37C
Reset cause: POR
DRAM:  512 MiB
NAND:  512 MiB
MMC:   FSL_SDHC: 0
Using default environment

Video: 640x480x18
In:    serial
Out:   serial
Err:   serial
Model: Toradex Colibri iMX6ULL 512MB Wi-Fi / Bluetooth IT V1.1A, Serial# 06399160
Net:   FEC0
Hit any key to stop autoboot:  0
MMC: no card present
Booting Toradex Easy Installer...
ubi0: default fastmap pool size: 200
ubi0: default fastmap WL pool size: 100
ubi0: attaching mtd1
ubi0: scanning is finished
ubi0: attached mtd1 (name "mtd=4", size 508 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 4060, bad PEBs: 4, corrupted PEBs: 0
ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 40/17, WL threshold: 4096, image sequence number: 86348508
ubi0: available PEBs: 0, total reserved PEBs: 4060, PEBs reserved for bad PEB handling: 76
No size specified -> Using max size (20856020)
Read 20856020 bytes from volume rootfs to 82200000
## Loading kernel from FIT Image at 82200000 ...
   Using 'config@1' configuration
   Trying 'kernel@1' kernel subimage
     Description:  Linux Kernel 4.1
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x822000e0
     Data Size:    4887376 Bytes = 4.7 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x81000000
     Entry Point:  0x81000000
     Hash algo:    md5
     Hash value:   5b8a3fa97134f80a06ee830c58e75dcf
   Verifying Hash Integrity ... md5+ OK
## Loading ramdisk from FIT Image at 82200000 ...
   Using 'config@1' configuration
   Trying 'ramdisk@1' ramdisk subimage
     Description:  SquashFS RAMdisk
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x826a9518
     Data Size:    15929344 Bytes = 15.2 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    md5
     Hash value:   fff196a3409547b7ed2046bf9081b3ff
   Verifying Hash Integrity ... md5+ OK
## Loading fdt from FIT Image at 82200000 ...
   Using 'config@1' configuration
   Trying 'fdt@1' fdt subimage
     Description:  Colibri iMX6ULL Device Tree
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x835da5e4
     Data Size:    37816 Bytes = 36.9 KiB
     Architecture: ARM
     Hash algo:    md5
     Hash value:   f61ffa470f6c279d7fade885b5600b74
   Verifying Hash Integrity ... md5+ OK
   Booting using the fdt blob at 0x835da5e4
   Loading Kernel Image ... OK
   Loading Device Tree to 8fff3000, end 8ffff3b7 ... OK
   Updating MTD partitions...

Starting kernel ...

[    0.541206] gpmi-nand 1806000.gpmi-nand: mode:5 ,failed in set feature.
[    0.588606] imx_usb 2184000.usb: Can't register ci_hdrc platform device, err=-517

I don’t know if the logging cuts off because of something happening on the MII pins (unlikely, the device tree doesn’t know about it?), or because the module crashes. I cannot connect via VNC.

I then applied this patch to u-boot-toradex in an attempt to change the debug serial from UARTA to UARTD:

--- a/board/toradex/colibri-imx6ull/colibri_imx6ull.c
+++ b/board/toradex/colibri-imx6ull/colibri_imx6ull.c
@@ -67,11 +67,11 @@ int dram_init(void)
        return 0;
 }

-static iomux_v3_cfg_t const uart1_pads[] = {
-       MX6_PAD_UART1_TX_DATA__UART1_DTE_RX     | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_UART1_RX_DATA__UART1_DTE_TX     | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_UART1_RTS_B__UART1_DTE_CTS      | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_UART1_CTS_B__UART1_DTE_RTS      | MUX_PAD_CTRL(UART_PAD_CTRL),
+static iomux_v3_cfg_t const uart6_pads[] = {
+       MX6_PAD_CSI_MCLK__UART6_DTE_RX          | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_CSI_PIXCLK__UART6_DTE_TX        | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_CSI_VSYNC__UART6_DTE_CTS        | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6_PAD_CSI_HSYNC__UART6_DTE_RTS        | MUX_PAD_CTRL(UART_PAD_CTRL),
 };

 static iomux_v3_cfg_t const usdhc1_pads[] = {
@@ -223,7 +223,7 @@ static void setup_dtemode_uart(void)
 static void setup_iomux_uart(void)
 {
        setup_dtemode_uart();
-       imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
+       imx_iomux_v3_setup_multiple_pads(uart6_pads, ARRAY_SIZE(uart6_pads));
 }

 #ifdef CONFIG_FSL_ESDHC
@@ -462,7 +462,7 @@ int board_usb_phy_mode(int port)
 #endif

 static struct mxc_serial_platdata mxc_serial_plat = {
-       .reg = (struct mxc_uart *)UART1_BASE,
+       .reg = (struct mxc_uart *)UART6_BASE_ADDR,
        .use_dte = 1,
 };

diff --git a/include/configs/colibri-imx6ull.h b/include/configs/colibri-imx6ull.h
index d61e307a08..e352a24ec0 100644
--- a/include/configs/colibri-imx6ull.h
+++ b/include/configs/colibri-imx6ull.h
@@ -97,7 +97,7 @@
        "ubiargs=ubi.mtd=ubi root=ubi0:rootfs rw rootfstype=ubifs " \
                "ubi.fm_autoconvert=1\0" \
        "ubiboot=run setup; " \
-               "setenv bootargs console=ttymxc0,115200 quiet " \
+               "setenv bootargs console=ttymxc5,115200 quiet " \
                "rootfstype=squashfs root=/dev/ram autoinstall " \
                "${teziargs}; echo Booting Toradex Easy Installer...; " \
                "ubi part ubi && " \
@@ -142,7 +142,7 @@
        NFS_BOOTCMD \
        SD_BOOTCMD \
        UBI_BOOTCMD \
-       "console=ttymxc0\0" \
+       "console=ttymxc5\0" \
        "defargs=user_debug=30\0" \
        "dfu_alt_info=" DFU_ALT_NAND_INFO "\0" \
        "fdt_board=eval-v3\0" \

I feel like this patch might be wrong, as it’s using the CTS and RTS pins (which I believe are connected to the WiFi module) but I couldn’t get it to work at all without this.

After this patch I compiled u-boot-toradex with:

make colibri-imx6ull_defconfig
make -j3 2>&1 | tee build.log

As specified here: Build U-Boot and Linux Kernel from Source Code | Toradex Developer Center
And copied the resulting u-boot-nand.imx to the TEZI recovery tool, replacing the one already there, and putting the module into recovery mode and running recovery-windows.bat

After this, the u-boot output now appears on UARTD, however it no longer attemps to boot into TEZI:

U-Boot 2016.11-dirty (Mar 27 2019 - 18:46:01 +0100)

CPU:   Freescale i.MX6ULL rev1.0 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 48C
Reset cause: POR
DRAM:  512 MiB
NAND:  512 MiB
MMC:   FSL_SDHC: 0
Video: 640x480x18
In:    serial
Out:   serial
Err:   serial
Model: Toradex Colibri iMX6ULL 512MB Wi-Fi / Bluetooth IT V1.1A, Serial# 06399160
Net:   FEC0
Hit any key to stop autoboot:  0
Booting from NAND...
ubi0: default fastmap pool size: 200
ubi0: default fastmap WL pool size: 100
ubi0: attaching mtd1
ubi0: scanning is finished
ubi0: attached mtd1 (name "mtd=4", size 508 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 4060, bad PEBs: 4, corrupted PEBs: 0
ubi0: user volume: 1, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 40/17, WL threshold: 4096, image sequence number: 86348508
ubi0: available PEBs: 0, total reserved PEBs: 4060, PEBs reserved for bad PEB handling: 76
Volume kernel not found!
MMC: no card present
starting USB...
USB0:   Port not available.
USB1:   USB EHCI 1.00
scanning bus 1 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found

USB device 0: unknown device
FEC0 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Could not initialize PHY FEC0
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
BOOTP broadcast 4
BOOTP broadcast 5
BOOTP broadcast 6
BOOTP broadcast 7
BOOTP broadcast 8
BOOTP broadcast 9
BOOTP broadcast 10
BOOTP broadcast 11
BOOTP broadcast 12
BOOTP broadcast 13
BOOTP broadcast 14
BOOTP broadcast 15
BOOTP broadcast 16
BOOTP broadcast 17

Retry time exceeded; starting again
Colibri iMX6ULL #

I see some references to CONFIG_TDX_EASY_INSTALLER, so there’s probably a special way to compile u-boot for TEZI that I’m missing? Is my patch file even correct, and what would be the correct way to disable the CTS/RTS?

Thanks in advance.

I figured out I should use the “colibri-imx6ull_tezi_defconfig” for u-boot-toradex instead. After replacing the earlier mentioned u-boot-nand.imx and running recovery-windows.bat once again, I’m presented with this output (on the correct UART D), but no signs of life after:

U-Boot 2016.11-dirty (Apr 03 2019 - 12:02:29 +0200)

CPU:   Freescale i.MX6ULL rev1.0 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 48C
Reset cause: POR
DRAM:  512 MiB
NAND:  512 MiB
MMC:   FSL_SDHC: 0
Using default environment

Video: 640x480x18
In:    serial
Out:   serial
Err:   serial
Model: Toradex Colibri iMX6ULL 512MB Wi-Fi / Bluetooth IT V1.1A, Serial# 06399160
Serial Downloader recovery mode, using sdp command
Net:   FEC0
Hit any key to stop autoboot:  0
SDP: initialize...
SDP: handle requests...
Downloading file of size 20856020 to 0x82100000... done
Downloading file of size 237 to 0x82000000... done
Jumping to header at 0x82000000
Header Tag is not a IMX image
## Loading kernel from FIT Image at 82100000 ...
   Using 'config@1' configuration
   Trying 'kernel@1' kernel subimage
     Description:  Linux Kernel 4.1
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x821000e0
     Data Size:    4887376 Bytes = 4.7 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x81000000
     Entry Point:  0x81000000
     Hash algo:    md5
     Hash value:   5b8a3fa97134f80a06ee830c58e75dcf
   Verifying Hash Integrity ... md5+ OK
## Loading ramdisk from FIT Image at 82100000 ...
   Using 'config@1' configuration
   Trying 'ramdisk@1' ramdisk subimage
     Description:  SquashFS RAMdisk
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x825a9518
     Data Size:    15929344 Bytes = 15.2 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    md5
     Hash value:   fff196a3409547b7ed2046bf9081b3ff
   Verifying Hash Integrity ... md5+ OK
## Loading fdt from FIT Image at 82100000 ...
   Using 'config@1' configuration
   Trying 'fdt@1' fdt subimage
     Description:  Colibri iMX6ULL Device Tree
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x834da5e4
     Data Size:    37816 Bytes = 36.9 KiB
     Architecture: ARM
     Hash algo:    md5
     Hash value:   f61ffa470f6c279d7fade885b5600b74
   Verifying Hash Integrity ... md5+ OK
   Booting using the fdt blob at 0x834da5e4
   Loading Kernel Image ... OK
   Loading Device Tree to 8fff3000, end 8ffff3b7 ... OK
   Updating MTD partitions...

Starting kernel ...

I completely forgot I also would need to enable UART6 in the device tree, which I believe this should do:

diff --git a/arch/arm/boot/dts/imx6ull-colibri-eval-v3.dtsi b/arch/arm/boot/dts/imx6ull-colibri-eval-v3.dtsi
index 5605312f1a69..1192970a3417 100644
--- a/arch/arm/boot/dts/imx6ull-colibri-eval-v3.dtsi
+++ b/arch/arm/boot/dts/imx6ull-colibri-eval-v3.dtsi
@@ -320,6 +320,10 @@
        status = "okay";
 };

+&uart6 {
+       status = "okay";
+};
+
 &usbotg1 {
        extcon = <&extcon_usbc_det &extcon_usbc_det>;
        vbus-supply = <&reg_usbh_vbus>;
diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi b/arch/arm/boot/dts/imx6ull-colibri.dtsi
index b78eca1d9993..efe14940b900 100644
--- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
+++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
@@ -484,6 +484,12 @@
                                MX6UL_PAD_GPIO1_IO05__UART5_DTE_TX      0x1b0b1
                        >;
                };
+               pinctrl_uart6: uart6grp {
+                       fsl,pins = <
+                               MX6UL_PAD_CSI_MCLK__UART6_DTE_RX        0x1b0b1
+                               MX6UL_PAD_CSI_PIXCLK__UART6_DTE_TX      0x1b0b1
+                       >;
+               };

                pinctrl_usbh1_reg: gpio_usbh_reg {
                        fsl,pins = <

I then proceeded by compiling the device tree and replacing it as outlined here: Custom device tree for Toradex Easy Installer - Technical Support - Toradex Community

And now I’m greeted with virtually the same output on UARTD:

U-Boot 2016.11-dirty (Apr 03 2019 - 12:02:29 +0200)

CPU:   Freescale i.MX6ULL rev1.0 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 49C
Reset cause: POR
DRAM:  512 MiB
NAND:  512 MiB
MMC:   FSL_SDHC: 0
Using default environment

Video: 640x480x18
In:    serial
Out:   serial
Err:   serial
Model: Toradex Colibri iMX6ULL 512MB Wi-Fi / Bluetooth IT V1.1A, Serial# 06399160
Serial Downloader recovery mode, using sdp command
Net:   FEC0
Hit any key to stop autoboot:  0
SDP: initialize...
SDP: handle requests...
Downloading file of size 20857472 to 0x82100000... done
Downloading file of size 237 to 0x82000000... done
Jumping to header at 0x82000000
Header Tag is not a IMX image
## Loading kernel from FIT Image at 82100000 ...
   Using 'config@1' configuration
   Trying 'kernel@1' kernel subimage
     Description:  Linux Kernel 4.1
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x821000e0
     Data Size:    4887376 Bytes = 4.7 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x81000000
     Entry Point:  0x81000000
     Hash algo:    md5
     Hash value:   5b8a3fa97134f80a06ee830c58e75dcf
   Verifying Hash Integrity ... md5+ OK
## Loading ramdisk from FIT Image at 82100000 ...
   Using 'config@1' configuration
   Trying 'ramdisk@1' ramdisk subimage
     Description:  SquashFS RAMdisk
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x825a9518
     Data Size:    15929344 Bytes = 15.2 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    md5
     Hash value:   fff196a3409547b7ed2046bf9081b3ff
   Verifying Hash Integrity ... md5+ OK
## Loading fdt from FIT Image at 82100000 ...
   Using 'config@1' configuration
   Trying 'fdt@1' fdt subimage
     Description:  Colibri iMX6ULL Device Tree
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x834da5e4
     Data Size:    38742 Bytes = 37.8 KiB
     Architecture: ARM
     Hash algo:    md5
     Hash value:   d6cb16e579f6b3768d62564bc8e57df2
   Verifying Hash Integrity ... md5+ OK
   Booting using the fdt blob at 0x834da5e4
   Loading Kernel Image ... OK
   Loading Device Tree to 8fff3000, end 8ffff755 ... OK
   Updating MTD partitions...

Starting kernel ...

And unlike before, now the following two lines on UARTA about ~2 seconds after the Starting Kernel message on UARTD:

[    0.544117] gpmi-nand 1806000.gpmi-nand: mode:5 ,failed in set feature.
[    0.592263] imx_usb 2184000.usb: Can't register ci_hdrc platform device, err=-517

Followed by a device disconnected sound from my PC, and then nothing.

I’m not sure if this will help, but someone else had a similar problem:

Such Toradex Easy Installer release configuration may not be ideal for debugging purpose. You may want to ditch quiet e.g. here:

Can I do that easily (though u-boot?) without having to recompile TEZI?

I also realized my device tree was still setting UART6 wrong, but after doing this:

--- a/arch/arm/boot/dts/imx6ull-colibri-nonwifi.dtsi
+++ b/arch/arm/boot/dts/imx6ull-colibri-nonwifi.dtsi
@@ -11,7 +11,7 @@

 &iomuxc {
        pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_hog_1 &pinctrl_hog_2 &pinctrl_hog_3
+       pinctrl-0 = <&pinctrl_hog_1 &pinctrl_hog_3
                &pinctrl_hog_4 &pinctrl_hog_5 &pinctrl_hog_6 &pinctrl_hog_7>;
 };

--- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
+++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
@@ -639,6 +635,12 @@
        fsl,dte-mode;
 };

+&uart6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart6>;
+       fsl,dte-mode;
+};
+
 &usbotg1 {
        dr_mode = "otg";
        srp-disable;

I’m still getting output on UARTA after “Starting kernel …”

So on closer inspection, am I correct in assuming that the bootargs set in here: colibri-imx6ull.h « configs « include - u-boot-toradex.git - U-Boot bootloader for Apalis and Colibri modules

Are completely pointless and always overridden in TEZI?

I realized there was a boot-sdp.scr included with the TEZI installer tooling, so I created the following file:

setenv bootargs console=ttymxc5,115200 quiet rootfstype=squashfs root=/dev/ram autoinstall clk_ignore_unused

# Execute previously loaded FIT image
bootm 0x82100000

And used this command:

mkimage -A arm -O linux -T script -C none -n "Recovery boot script" -d boot-sdp.cmd boot-sdp.scr

To create a replacement for it, and now TEZI successfully boots and I can use VNC over USB RNDIS.
The way I solved it probably isn’t the way you’re supposed to do it but it was the easiest and quickest for me.

Only RNDIS seems to work though, when plugging something into to the onboard KSZ8041 I get no LEDs on the connector. When rebooting both LEDs blink once during boot, with or without a cable connected.

I’m not sure if this is a hardware issue with our carrier board or yet another configuration problem

Are completely pointless and always overridden in TEZI?

Yes, you are completely right.

To create a replacement for it, and now TEZI successfully boots and I can use VNC over USB RNDIS. The way I solved it probably isn’t the way you’re supposed to do it but it was the easiest and quickest for me.

No, that sounds completely sound.

Concerning the Ethernet issue I would ask a new question including as much information as possible.

I take it you have not yet validated Ethernet on your custom carrier board at all? You could try booting a module with pre-installed BSP rather than the Toradex Easy Installer.

Thanks for the further info. I’ll make a new question relating to the ethernet issues.

I’m currently trying to get TEZI to load my image over USB RNDIS, and while “curl http://192.168.11.3/image_list.json” in the serial console works, TEZI doesn’t make any attempt to download this file after adding it to the feeds (as indicated by the webserver logs) and doesn’t display any error either. I can’t load from USB or SD either because the first is taken up by USB RNDIS (required for VNC) and the second doesn’t exist on our board

I suppose I’ll go back to the Colibri Evaluation Board once more to flash a full image and then attempt to debug the networking issues from there.

TEZI doesn’t make any attempt to download this file after adding it to the feeds (as indicated by the webserver logs) and doesn’t display any error either.

Can you see the feeds in the Toradex Easy Installer Menu?

I suppose I’ll go back to the Colibri Evaluation Board once more to flash a full image and then attempt to debug the networking issues from there.

Yes, you could try this. Let us know your results, please.

Can you see the feeds in the Toradex Easy Installer Menu?

Nope, as the board doesn’t actually have an internet connection. I get expected errors for the tezi.toradex.com being unreachable, but the local connection just fails silently without ever reaching the webserver:

image
image

While curl from the debug serial works fine:

/ # curl http://192.168.11.3/image_list.json
{
  "config_format": 1,
  "images": [
    "tezi/colibri-imx6ull/image.json"
  ]
}

There is no connection via Ethernet, so that’s expected. I’m attempting to connect via RNDIS. The Colibri module gets the fixed address 192.168.11.1 and my connected PC and VM get 11.2 and 11.3 via DHCP.

With my feeds configured as in the earlier screenshots, this is the content of tezi.log:

/ # cat /var/volatile/tezi.log
Unable to load library icui18n "Cannot load library icui18n: (icui18n: cannot open shared object file: No such file or directory)"
QVNCServer created on port 5900
Reload input devices...
"/dev/input/event0"
Could not read calibration: "/etc/pointercal"
"/dev/input/event1"
Could not read calibration: "/etc/pointercal"
Trying to read configblock from "mtd1" at 2048
USB Gadget: RNDIS enabled
Scanning media initially...
RNDIS up in 0.202 seconds
Client protocol version RFB 003.003

Downloading image list from  "http://tezi.toradex.com/image_list.json"
Downloading image list from  "http://tezi.toradex.com/image_list_3rdparty.json"
Error: "Error downloading image list: Host tezi.toradex.com not found
URL: http://tezi.toradex.com/image_list.json"
Error: "Error downloading image list: Host tezi.toradex.com not found
URL: http://tezi.toradex.com/image_list_3rdparty.json"

If I add an unreachable IP address to the feeds on purpose, this is appended to the log:

Downloading image list from  "http://192.168.123.123/image_list.json"
Error: "Error downloading image list: Network unreachable
URL: http://192.168.123.123/image_list.json"

So in this log as well there is no attempt at all to download the image list.
As a test, I use the LAN (not RNDIS) IP address of the computer I’m trying to reach, and get an expected “network unreachable” error.
I then manually add a route for it:

/ # ip route add 192.168.82.0/24 via 192.168.11.3 dev usb0
/ # ip route
192.168.11.0/24 dev usb0  src 192.168.11.1
192.168.82.0/24 via 192.168.11.3 dev usb0
/ #

After this, TEZI is able to correctly download image_list.json and shows expected results. So this leads me to the conclusion that for some reason TEZI silently fails when trying to use an RNDIS assigned IP address directly?

You have no IP address assigned. Is your dhcp server working properly?
Also can you check /var/volatile/tezi.log?

The problem with ethernet turned out to be a hardware issue. We had wrongly followed the KSZ8463 reference design assuming it to be the same for the KSZ8041.

Because of this the center taps were only connected to ground through a capacitor. After connecting them to VDDA as well everything started working, so I won’t need to make a new question after all.

Hi @wisse-cp

Thanks your Input. We are looking into this and will come back soon to you.

Best regards,
Jaski

Hi. There is another workaround.

Modify Tezi RAMDISK to change the Module and PC IP addresses to 192.168.12.1 and 192.168.12.2, respectively.

/etc/udhcpd.conf
/etc/ifplugd/ifplugd.usb.action

This way, the modified Tezi (that can be loaded into RAM using recovery mode) is able to load an image from the RNDIS host computer, setting a feed as http://192.168.12.2/list_something.json

I needed this because my custom carrier board only has the usbc connection.

Ok so did I work for you ?

Best regards,
Matthias