MISC-TN-004: Running Debian (armbian) on SBCSPG

From DAVE Developer's Wiki
Jump to: navigation, search
Info Box
SBCSPG-1.jpg Applies to SBCSPG
Cloud-computing-banner.jpg Applies to IoT
Warning-icon.png This technical note was validated against specific versions of hardware and software. It may not work with other versions. Warning-icon.png


History[edit | edit source]

Version Date Notes
1.0.0 July 2019 First public release
1.0.1 October 2019 Detailed armbian version

Introduction[edit | edit source]

In the last years, Debian-based distributions⁠—which are very widespread in desktop/server environments—have grown in popularity in the embedded world as well. Nowadays, there are several approaches to create such a distribution for embedded targets, however. ELBE, meta-eid, and armbian are just three examples of different tools available today [1].

This Technical Note shows how to run such a distribution on SBCSPG, a product designed and manufactured by DAVE Embedded Systems to build compact IoT gateways for industrial applications. Specifically, this example makes use of Armbian Stretch, which is based on Debian 9.


[1] For more details, please see for instance these presentations:

The hardware platform[edit | edit source]

As stated previously, the SBCSPG gateway is suited to implement low-cost edge computing devices.


Cloud and Edge computing in a typical IIoT scenario (image source: [1])


From an architectural standpoint, SBCSPG is similar to the SBC Lynx. As such, it is powered by NXP i.MX6UL system-on-chip (SoC).


SBCSPG Industrial IoT gateway


It is equipped with three network interfaces⁠—two Ethernet ports and a WiFi⁠—and provides several combinations of serial ports like RS232, RS485, and RS422. It also has two USB ports (host and OTG) and a microSD slot.

Creating the root file system[edit | edit source]

To create the root file system, the procedure described here was followed. Before starting the actual build process, the following patch was applied in order to add the support for the SBCSPG target.

diff --git a/config/boards/sbcspg.conf b/config/boards/sbcspg.conf
new file mode 100644
index 00000000..1d1411eb
--- /dev/null
+++ b/config/boards/sbcspg.conf
@@ -0,0 +1,11 @@
+# i.MX6UL-powered industrial gateway by DAVE Embedded Systems
+BOARD_NAME="sbcspg"
+BOARDFAMILY="rialto"
+BOOTCONFIG="mx6_cubox-i_config"
+#
+MODULES=""
+MODULES_NEXT=""
+#
+KERNEL_TARGET="default,next,dev"
+CLI_TARGET="buster,bionic:default,next"
+DESKTOP_TARGET=""
diff --git a/config/sources/rialto.conf b/config/sources/rialto.conf
new file mode 100644
index 00000000..0d8b97a8
--- /dev/null
+++ b/config/sources/rialto.conf
@@ -0,0 +1,84 @@
+BOOTSOURCE='https://github.com/SolidRun/u-boot.git'
+BOOTDIR='u-boot-cubox'
+BOOTBRANCH='branch:v2018.01-solidrun-imx6'
+BOOTCONFIG="mx6cuboxi_defconfig"
+BOOTSCRIPT='boot-cubox.cmd:boot.cmd'
+BOOTENV_FILE='cubox-default.txt'
+
+UBOOT_TARGET_MAP=';emmc;SPL:SPL.emmc u-boot.img:u-boot.img.emmc
+				  ;sdhc;SPL:SPL.sdhc u-boot.img:u-boot.img.sdhc
+				  ;sdhc;SPL:SPL.sata u-boot.img:u-boot.img.sata
+				  ;sdhc;SPL:SPL.spi-flash u-boot.img:u-boot.img.spi-flash'
+
+UBOOT_USE_GCC='> 7.0'
+KERNEL_USE_GCC='> 7.0'
+KERNELSOURCE=$MAINLINE_KERNEL_SOURCE
+KERNELDIR=$MAINLINE_KERNEL_DIR
+
+case $BRANCH in
+
+	default)
+		
+		KERNELBRANCH='branch:linux-4.14.y'
+
+	;;
+
+	next)
+
+		KERNELBRANCH='branch:linux-5.1.y'
+
+	;;
+
+	dev)
+
+		KERNELBRANCH='branch:linux-5.1.y'
+		LINUXCONFIG='linux-cubox-next'
+	
+	;;
+
+esac
+
+CPUMIN=396000
+CPUMAX=996000
+GOVERNOR=interactive
+
+SERIALCON=ttymxc0
+
+
+write_uboot_platform()
+{
+	dd if=$1/SPL.sdhc of=$2 bs=1K seek=1 status=noxfer > /dev/null 2>&1
+	dd if=$1/u-boot.img.sdhc of=$2 bs=1K seek=69 status=noxfer > /dev/null 2>&1
+}
+
+if [[ $BOARD == wandboard-quad ]]; then
+	UBOOT_USE_GCC='> 6.3'
+	KERNEL_USE_GCC='> 6.3'
+	CPUMAX=1008000
+	GOVERNOR=ondemand
+	BOOTSOURCE=$MAINLINE_UBOOT_SOURCE
+	BOOTDIR=$MAINLINE_UBOOT_DIR
+	BOOTBRANCH="branch:v2017.03"
+	write_uboot_platform()
+	{
+		dd if=$1/SPL of=$2 bs=512 seek=2 status=noxfer > /dev/null 2>&1
+		dd if=$1/u-boot.img of=$2 seek=69 bs=1k status=noxfer > /dev/null 2>&1
+	}
+fi
+
+family_tweaks()
+{
+	# TODO: Fix the workaround in firstrun?
+	#chroot $SDCARD /bin/bash -c "LC_ALL=C LANG=C update-rc.d brcm4330-patch defaults > /dev/null"
+	echo ""
+}
+
+family_tweaks_bsp()
+{
+	install -m 644 $SRC/packages/bsp/cubox/99-hdmi_fb0.conf $destination/etc/X11/xorg.conf.d/99-hdmi_fb0.conf
+	install -m 755 $SRC/packages/bsp/cubox/brcm_patchram_plus $destination/usr/bin/brcm_patchram_plus
+	cp $SRC/packages/bsp/cubox/brcm4330 $destination/etc/default/
+	# TODO: replace by a systemd service
+	mkdir $destination/etc/init.d/
+	install -m 755 $SRC/packages/bsp/cubox/brcm4330-patch $destination/etc/init.d/brcm4330-patch
+}

When the process is completed, the output/images directory is populated with the following files:

Armbian_5.91_Sbcspg_Debian_stretch_default_.img
Armbian_5.91_Sbcspg_Debian_stretch_default_.txt

The .img is the one we need to deploy the root file system onto the target platform.

Even though it is not recommended, the build process was run natively on a PC equipped with Ubuntu 18.04.

Deploying the root file system onto the target[edit | edit source]

This procedure consists of the following steps:

  • Mount the .img file
  • Copy the root file system to a microSD card
  • Move the microSD card to the target
  • Configure the target in order to mount the armbian root file system from the microSD card.

It is assumed that there is an ext4 partition on the microSD card large enough to cointain the armbian root file system, which is about 900MB.

To mount the .img file, issue the following commands.

sudo kpartx -v -a Armbian_5.91_Sbcspg_Debian_stretch_default_.img

If this operation is completed succesfully, you'll see something like this:

# ll /dev/mapper/
total 0
drwxr-xr-x  2 root root  	80 lug 29 11:52 ./
drwxr-xr-x 21 root root	4440 lug 29 15:50 ../
crw-------  1 root root 10, 236 lug 29 11:41 control
lrwxrwxrwx  1 root root   	7 lug 29 11:52 loop18p1 -> ../dm-0

And then:

sudo mkdir /mnt/tmp
sudo mount /dev/mapper/loop18p1 /mnt/tmp/ -o ro

As root, copy the files from /mnt/tmp/ to the desired partition into the microSD card.

After the copy operation is finished, unmount the microSD card and move it to the target.

To configure the SBCSPG to mount the root file system from this partition, several options are available. The following example shows how the U-Boot environment variables were set to retrieve the Linux kernel image and the device tree blob (DTB) via Ethernet, while the file system is mounted from the microSD card. In practice, an ad hoc variable⁠—named net_mmc⁠—was added:

=> print net_mmc
net_mmc=run loadk loadfdt mmcargs addip addcons addmisc; if run configid_fixupfdt; then bootm ${loadaddr} - ${fdtaddr}; fi
=> edit mmcroot
edit: /dev/mmcblk0p4 rootwait rw

The following section shows the full boot process.

Full bootstrap process[edit | edit source]

To expand the box, please click on the Expand link on the right.

U-Boot 2016.03-rialto-1.1.2 (Jan 17 2019 - 15:10:28 +0100), Build: jenkins-Rialto_U-Boot-10

CPU:   Freescale i.MX6UL rev1.2 528 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 36C
Reset cause: POR
Environment: NAND
I2C:   ready
DRAM:  512 MiB
Relocating to 9ff1c000, new gd at 9eefbeb8, sp at 9eefbe90
PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
NAND:  1024 MiB
MMC:   FSL_SDHC: 0
In:    serial
Out:   serial
Err:   serial
switch to partitions #0, OK
mmc0 is current device
SOM ConfigID#: 00000022
SOM UniqueID#: ee6b78bb:1e08a9d4
CB ConfigID#: 00000046
CB UniqueID#: 00000000:00000000
Board: MX6UL Rialto
Net:   FEC0
Normal Boot
Hit any key to stop autoboot:  0
=> run net_mmc
FEC0 Waiting for PHY auto negotiation to complete...... done
Using FEC0 device
TFTP from server 192.168.0.13; our IP address is 192.168.0.81
Filename 'rialto/linux/rialto-1.1.3_uImage'.
Load address: 0x80800000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ####################################
         819.3 KiB/s
done
Bytes transferred = 7170152 (6d6868 hex)
Using FEC0 device
TFTP from server 192.168.0.13; our IP address is 192.168.0.81
Filename 'rialto/linux/rialto-1.1.3_imx6ul-lynx-som0022-cb0046.dtb'.
Load address: 0x83000000
Loading: #######
         540 KiB/s
done
Bytes transferred = 33793 (8401 hex)
FDT: override 'som_uniqueid' with 'ee6b78bb:1e08a9d4'
FDT: override 'cb_uniqueid' with '00000000:00000000'
## Booting kernel from Legacy Image at 80800000 ...
   Image Name:   Linux-4.1.15-rialto-1.1.3
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    7170088 Bytes = 6.8 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
FDT: fixup by running configid_fixupfdt..
FDT: override 'som_uniqueid' with 'ee6b78bb:1e08a9d4'
FDT: override 'cb_uniqueid' with '00000000:00000000'
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=83000000 size=9000
   Using Device Tree in place at 83000000, end 8300bfff
Modify /soc/aips-bus@02000000/bee@02044000:status disabled
ft_system_setup for mx6

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.1.15-rialto-1.1.3 (jenkins@linuxserver2) (gcc version 5.3.0 (GCC) ) #1 SMP PREEMPT Thu Jul 18 16:19:12 CEST 2019
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: Freescale i.MX6 UltraLite CB0046 SBCSPG rev.A
[    0.000000] cma: Reserved 64 MiB at 0x9c000000
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] PERCPU: Embedded 12 pages/cpu @9bbb1000 s17420 r8192 d23540 u49152
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
[    0.000000] Kernel command line: root=/dev/mmcblk0p4 rootwait rw ip=192.168.0.81:192.168.0.13::255.255.255.0:lynx:eth0:off panic=1 fec_mac=70:b3:d5:3e:a5:72 console=ttymxc0,115200 vmalloc=400M mtdparts=gpmi-nand:8M(nand-uboot),1M(nand-env1),1M(nand-env2),-(nand-ubi);spi0.0:1M(spi-uboot),256k(spi-env1),256k(spi-env2),512k(spi-dtb),8M(spi-kernel),4M(spi-splash),-(spi-free)
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 440268K/524288K available (8829K kernel code, 561K rwdata, 3336K rodata, 448K init, 444K bss, 18484K reserved, 65536K cma-reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xa0800000 - 0xff000000   (1512 MB)
[    0.000000]     lowmem  : 0x80000000 - 0xa0000000   ( 512 MB)
[    0.000000]     pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
[    0.000000]     modules : 0x7f000000 - 0x7fe00000   (  14 MB)
[    0.000000]       .text : 0x80008000 - 0x80be9914   (12167 kB)
[    0.000000]       .init : 0x80bea000 - 0x80c5a000   ( 448 kB)
[    0.000000]       .data : 0x80c5a000 - 0x80ce6770   ( 562 kB)
[    0.000000]        .bss : 0x80ce9000 - 0x80d583c0   ( 445 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000]  Additional per-CPU info printed with stalls.
[    0.000000]  RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] mxc_clocksource_init 24000000
[    0.000000] Switching to timer-based delay loop, resolution 41ns
[    0.000017] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000059] clocksource mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.002544] Console: colour dummy device 80x30
[    0.002586] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[    0.002619] pid_max: default: 32768 minimum: 301
[    0.002863] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.002896] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.004269] Initializing cgroup subsys net_cls
[    0.004358] CPU: Testing write buffer coherency: ok
[    0.004851] /cpus/cpu@0 missing clock-frequency property
[    0.004893] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.005007] Setting up static identity map for 0x80008280 - 0x800082d8
[    0.049002] Brought up 1 CPUs
[    0.049046] SMP: Total of 1 processors activated (48.00 BogoMIPS).
[    0.049068] CPU: All CPU(s) started in SVC mode.
[    0.050199] devtmpfs: initialized
[    0.072529] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[    0.073449] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.078835] pinctrl core: initialized pinctrl subsystem
[    0.081917] NET: Registered protocol family 16
[    0.100032] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.130931] cpuidle: using governor ladder
[    0.161000] cpuidle: using governor menu
[    0.209331] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.209366] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.213881] imx6ul-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver
[    0.288772] mxs-dma 1804000.dma-apbh: initialized
[    0.296632] SCSI subsystem initialized
[    0.297997] usbcore: registered new interface driver usbfs
[    0.298237] usbcore: registered new interface driver hub
[    0.298467] usbcore: registered new device driver usb
[    0.301170] i2c i2c-0: IMX I2C adapter registered
[    0.301217] i2c i2c-0: can't use DMA
[    0.302989] i2c i2c-1: IMX I2C adapter registered
[    0.303035] i2c i2c-1: can't use DMA
[    0.303383] Linux video capture interface: v2.00
[    0.303599] pps_core: LinuxPPS API ver. 1 registered
[    0.303624] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.303709] PTP clock support registered
[    0.306533] MIPI CSI2 driver module loaded
[    0.307222] Advanced Linux Sound Architecture Driver Initialized.
[    0.309413] Bluetooth: Core ver 2.20
[    0.309546] NET: Registered protocol family 31
[    0.309572] Bluetooth: HCI device and connection manager initialized
[    0.309615] Bluetooth: HCI socket layer initialized
[    0.309650] Bluetooth: L2CAP socket layer initialized
[    0.309768] Bluetooth: SCO socket layer initialized
[    0.312653] Switched to clocksource mxc_timer1
[    0.340510] NET: Registered protocol family 2
[    0.342142] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.342281] TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
[    0.342439] TCP: Hash tables configured (established 4096 bind 4096)
[    0.342586] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.342772] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.343244] NET: Registered protocol family 1
[    0.343999] RPC: Registered named UNIX socket transport module.
[    0.344036] RPC: Registered udp transport module.
[    0.344059] RPC: Registered tcp transport module.
[    0.344080] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.347525] imx rpmsg driver is registered.
[    0.349691] Bus freq driver module loaded
[    0.351925] futex hash table entries: 256 (order: 2, 16384 bytes)
[    0.369265] VFS: Disk quotas dquot_6.6.0
[    0.369761] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.375630] NFS: Registering the id_resolver key type
[    0.375735] Key type id_resolver registered
[    0.375759] Key type id_legacy registered
[    0.375938] jffs2: version 2.2. (NAND) c 2001-2006 Red Hat, Inc.
[    0.377869] fuse init (API version 7.23)
[    0.389293] io scheduler noop registered
[    0.389348] io scheduler deadline registered
[    0.389863] io scheduler cfq registered (default)
[    0.391068] imx-weim 21b8000.weim: Driver registered.
[    0.398506] imx-sdma 20ec000.sdma: no event needs to be remapped
[    0.398734] imx-sdma 20ec000.sdma: loaded firmware 3.3
[    0.406952] imx-sdma 20ec000.sdma: initialized
[    0.408779] pfuze100-regulator 0-0008: Full layer: 1, Metal layer: 1
[    0.409138] pfuze100-regulator 0-0008: FAB: 0, FIN: 0
[    0.409169] pfuze100-regulator 0-0008: pfuze3000 found.
[    0.424445] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 20, base_baud = 5000000) is a IMX
[    1.097323] console [ttymxc0] enabled
[    1.103053] 21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 227, base_baud = 5000000) is a IMX
[    1.113396] 21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 228, base_baud = 5000000) is a IMX
[    1.127734] imx sema4 driver is registered.
[    1.132143] [drm] Initialized drm 1.1.0 20060810
[    1.138189] [drm] Initialized vivante 1.0.0 20120216 on minor 0
[    1.170899] brd: module loaded
[    1.188056] loop: module loaded
[    1.208198] nand: device found, Manufacturer ID: 0xef, Chip ID: 0xd3
[    1.214658] nand: Winbond W29N08GV
[    1.218103] nand: 1024 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[    1.226562] gpmi-nand 1806000.gpmi-nand: mode:4 ,failed in set feature.
[    1.233293] Scanning device for bad blocks
[    1.611206] random: nonblocking pool is initialized
[    2.428559] 4 cmdlinepart partitions found on MTD device gpmi-nand
[    2.434834] Creating 4 MTD partitions on "gpmi-nand":
[    2.439935] 0x000000000000-0x000000800000 : "nand-uboot"
[    2.448168] 0x000000800000-0x000000900000 : "nand-env1"
[    2.456178] 0x000000900000-0x000000a00000 : "nand-env2"
[    2.463942] 0x000000a00000-0x000040000000 : "nand-ubi"
[    2.475077] gpmi-nand 1806000.gpmi-nand: driver registered.
[    2.484914] tun: Universal TUN/TAP device driver, 1.6
[    2.490019] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[    2.496882] CAN device driver interface
[    2.503831] 20b4000.ethernet supply phy not found, using dummy regulator
[    3.523866] pps pps0: new PPS source ptp0
[    3.529200] libphy: fec_enet_mii_bus: probed
[    3.537969] fec 20b4000.ethernet eth1: registered PHC device 0
[    3.545824] 2188000.ethernet supply phy not found, using dummy regulator
[    4.573823] pps pps1: new PPS source ptp1
[    4.580612] fec 2188000.ethernet eth0: registered PHC device 1
[    4.588331] pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver
[    4.596062] usbcore: registered new interface driver pegasus
[    4.601937] usbcore: registered new interface driver rtl8150
[    4.607869] usbcore: registered new interface driver r8152
[    4.613664] usbcore: registered new interface driver asix
[    4.619266] usbcore: registered new interface driver ax88179_178a
[    4.625610] usbcore: registered new interface driver cdc_ether
[    4.631654] usbcore: registered new interface driver dm9601
[    4.637490] usbcore: registered new interface driver sr9700
[    4.643368] usbcore: registered new interface driver CoreChips
[    4.649451] usbcore: registered new interface driver smsc75xx
[    4.655504] usbcore: registered new interface driver smsc95xx
[    4.661449] usbcore: registered new interface driver net1080
[    4.667362] usbcore: registered new interface driver plusb
[    4.673120] usbcore: registered new interface driver cdc_subset
[    4.679235] usbcore: registered new interface driver zaurus
[    4.685091] usbcore: registered new interface driver MOSCHIP usb-ethernet driver
[    4.692878] usbcore: registered new interface driver cdc_ncm
[    4.698598] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    4.705271] ehci-mxc: Freescale On-Chip EHCI Host driver
[    4.711143] usbcore: registered new interface driver usb-storage
[    4.717659] usbcore: registered new interface driver usbserial
[    4.723739] usbcore: registered new interface driver usbserial_generic
[    4.730449] usbserial: USB Serial support registered for generic
[    4.736731] usbcore: registered new interface driver ftdi_sio
[    4.742695] usbserial: USB Serial support registered for FTDI USB Serial Device
[    4.750197] usbcore: registered new interface driver pl2303
[    4.755981] usbserial: USB Serial support registered for pl2303
[    4.762105] usbcore: registered new interface driver usb_ehset_test
[    4.771290] 2184800.usbmisc supply vbus-wakeup not found, using dummy regulator
[    4.791979] ci_hdrc ci_hdrc.1: EHCI Host Controller
[    4.797230] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
[    4.822738] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
[    4.830675] hub 1-0:1.0: USB hub found
[    4.834774] hub 1-0:1.0: 1 port detected
[    4.841227] mousedev: PS/2 mouse device common for all mice
[    4.849333] input: 20cc000.snvs:snvs-powerkey as /devices/platform/soc/2000000.aips-bus/20cc000.snvs/20cc000.snvs:snvs-powerkey/input/input0
[    4.867491] rtc-m41t80 1-0068: rtc core: registered m41t80 as rtc0
[    4.877073] snvs_rtc 20cc000.snvs:snvs-rtc-lp: rtc core: registered 20cc000.snvs:snvs-r as rtc1
[    4.886224] i2c /dev entries driver
[    4.893551] MIPI DSI driver module loaded
[    4.898080] MIPI DSI driver module loaded
[    4.908354] IR NEC protocol handler initialized
[    4.913032] IR RC5(x/sz) protocol handler initialized
[    4.918133] IR RC6 protocol handler initialized
[    4.922818] IR JVC protocol handler initialized
[    4.927391] IR Sony protocol handler initialized
[    4.932046] IR SANYO protocol handler initialized
[    4.937819] IR Sharp protocol handler initialized
[    4.942578] IR MCE Keyboard/mouse protocol handler initialized
[    4.948520] IR XMP protocol handler initialized
[    4.959918] imx2-wdt 20bc000.wdog: timeout 60 sec (nowayout=0)
[    4.966249] Bluetooth: HCI UART driver ver 2.3
[    4.970736] Bluetooth: HCI UART protocol H4 registered
[    4.975974] Bluetooth: HCI UART protocol BCSP registered
[    4.981317] Bluetooth: HCI UART protocol LL registered
[    4.986581] Bluetooth: HCI UART protocol ATH3K registered
[    4.992320] usbcore: registered new interface driver bcm203x
[    4.998337] usbcore: registered new interface driver btusb
[    5.004144] usbcore: registered new interface driver ath3k
[    5.010436] sdhci: Secure Digital Host Controller Interface driver
[    5.016783] ci_hdrc ci_hdrc.0: there is a vbus glitch
[    5.021954] sdhci: Copyright(c) Pierre Ossman
[    5.026462] sdhci-pltfm: SDHCI platform and OF driver helper
[    5.034061] /soc/aips-bus@02100000/usdhc@02190000: voltage-ranges unspecified
[    5.041294] sdhci-esdhc-imx 2190000.usdhc: Got CD GPIO
[    5.047125] sdhci-esdhc-imx 2190000.usdhc: No vmmc regulator found
[    5.053432] sdhci-esdhc-imx 2190000.usdhc: No vqmmc regulator found
[    5.104195] mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA
[    5.119929] /soc/aips-bus@02100000/usdhc@02194000: voltage-ranges unspecified
[    5.135751] sdhci-esdhc-imx 2194000.usdhc: No vqmmc regulator found
[    5.180958] mmc0: host does not support reading read-only switch, assuming write-enable
[    5.195277] mmc0: new high speed SDHC card at address 0007
[    5.201798] mmcblk0: mmc0:0007 SD16G 14.5 GiB
[    5.208784]  mmcblk0: p1 p2 p3 p4
[    5.262803] mmc1: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
[    5.288395] leds-pca955x 1-0060: leds-pca955x: Using pca9551 8-bit LED driver at slave address 0x60
[    5.297629] sdhci-esdhc-imx 2194000.usdhc: card claims to support voltages below defined range
[    5.314480] leds-pca955x 1-0060: gpios 510...511
[    5.320320] usbcore: registered new interface driver usbhid
[    5.326137] usbhid: USB HID core driver
[    5.346393] mmc1: queuing unknown CIS tuple 0x91 (3 bytes)
[    5.352058] fsl-asrc 2034000.asrc: driver registered
[    5.364086] mmc1: new SDIO card at address 0001
[    5.376681] NET: Registered protocol family 26
[    5.381226] Netfilter messages via NETLINK v0.30.
[    5.387621] nfnl_acct: registering with nfnetlink.
[    5.392569] nf_conntrack version 0.5.0 (7903 buckets, 31612 max)
[    5.400080] nf_tables: (c) 2007-2009 Patrick McHardy <kaber@trash.net>
[    5.407572] xt_time: kernel timezone is -0000
[    5.413198] ip_tables: (C) 2000-2006 Netfilter Core Team
[    5.418899] ipt_CLUSTERIP: ClusterIP Version 0.8 loaded successfully
[    5.425519] arp_tables: (C) 2002 David S. Miller
[    5.430365] Initializing XFRM netlink socket
[    5.436528] NET: Registered protocol family 10
[    5.443966] sit: IPv6 over IPv4 tunneling driver
[    5.450345] NET: Registered protocol family 17
[    5.455096] NET: Registered protocol family 15
[    5.459587] can: controller area network core (rev 20120528 abi 9)
[    5.466032] NET: Registered protocol family 29
[    5.470530] can: raw protocol (rev 20120528)
[    5.474900] can: broadcast manager protocol (rev 20120528 t)
[    5.480622] can: netlink gateway (rev 20130117) max_hops=1
[    5.486871] Bluetooth: RFCOMM TTY layer initialized
[    5.491822] Bluetooth: RFCOMM socket layer initialized
[    5.497255] Bluetooth: RFCOMM ver 1.11
[    5.501088] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    5.506490] Bluetooth: BNEP filters: protocol multicast
[    5.511768] Bluetooth: BNEP socket layer initialized
[    5.516825] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    5.522903] Bluetooth: HIDP socket layer initialized
[    5.528064] 8021q: 802.1Q VLAN Support v1.8
[    5.533635] rfkill_gpio bt_rfkill: bt_rfkill device registered.
[    5.539901] Key type dns_resolver registered
[    5.569969] imx_thermal 2000000.aips-bus:tempmon: Industrial CPU temperature grade - max:105C critical:100C passive:95C
[    5.584316] input: gpio-push-button as /devices/platform/gpio-push-button/input/input1
[    5.593823] rtc-m41t80 1-0068: setting system clock to 2023-01-15 01:40:34 UTC (1673746834)
[    5.703300] fec 2188000.ethernet eth0: Freescale FEC PHY driver [Micrel KSZ8081 or KSZ8091] (mii_bus:phy_addr=20b4000.ethernet:03, irq=-1)
[    5.742894] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    9.703705] fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[    9.723004] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    9.743630] IP-Config: Complete:
[    9.746981]      device=eth0, hwaddr=70:b3:d5:3e:a5:72, ipaddr=192.168.0.81, mask=255.255.255.0, gw=255.255.255.255
[    9.758123]      host=lynx, domain=, nis-domain=(none)
[    9.764038]      bootserver=192.168.0.13, rootserver=192.168.0.13, rootpath=
[    9.771180] usb_otg1_vbus: disabling
[    9.774911] vref-3v3: disabling
[    9.778410] ALSA device list:
[    9.781401]   No soundcards found.
[    9.795772] EXT3-fs (mmcblk0p4): error: couldn't mount because of unsupported optional features (240)
[    9.807057] EXT2-fs (mmcblk0p4): error: couldn't mount because of unsupported optional features (240)
[    9.858422] EXT4-fs (mmcblk0p4): mounted filesystem with ordered data mode. Opts: (null)
[    9.866776] VFS: Mounted root (ext4 filesystem) on device 179:4.
[    9.883176] devtmpfs: mounted
[    9.887050] Freeing unused kernel memory: 448K (80bea000 - 80c5a000)
[   10.496160] systemd[1]: systemd 232 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[   10.515660] systemd[1]: Detected architecture arm.

Welcome to Debian GNU/Linux 9 (stretch)!

[   10.554673] systemd[1]: Set hostname to <sbcspg>.
[   11.418049] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[  OK  ] Set up automount Arbitrary Executabcrmats File System Automount Point.
[   11.453950] systemd[1]: Created slice System Slice.
[  OK  ] Created slice System Slice.
[   11.473856] systemd[1]: Created slice system-serial\x2dgetty.slice.
[  OK  ] Created slice system-serial\x2dgetty.slice.
[   11.504257] systemd[1]: Created slice User and Session Slice.
[  OK  ] Created slice User and Session Slice.
[   11.533748] systemd[1]: Listening on Journal Socket (/dev/log).
[  OK  ] Listening on Journal Socket (/dev/log).
[   11.563897] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[  OK  ] Started Forward Password Requests to Wall Directory Watch.
[   11.593764] systemd[1]: Listening on Journal Socket.
[  OK  ] Listening on Journal Socket.
[   11.631327] systemd[1]: Starting Restore / save the current clock...
         Starting Restore / save the current clock...
[   11.651116] systemd[1]: Listening on udev Kernel Socket.
[  OK  ] Listening on udev Kernel Socket.
[   11.686753] systemd[1]: Starting Nameserver information manager...
         Starting Nameserver information manager...
[   11.704613] systemd[1]: Reached target Swap.
[  OK  ] Reached target Swap.
[   11.718168] systemd[1]: Reached target Remote File Systems.
[  OK  ] Reached target Remote File Systems.
[   11.759789] systemd[1]: Starting Create Static Device Nodes in /dev...
         Starting Create Static Device Nodes in /dev...
[   11.816769] systemd[1]: Mounting Debug File System...
         Mounting Debug File System...
[   11.843132] systemd[1]: dev-hugepages.mount: Couldn't determine result for ConditionVirtualization=!private-users, assuming failed: No such file or directory
[   11.900340] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[  OK  ] Listening on /dev/initctl Compatibility Named Pipe.
[   11.963804] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[  OK  ] Started Dispatch Password Requests to Console Directory Watch.
[   11.993304] systemd[1]: Reached target Paths.
[  OK  ] Reached target Paths.
[   12.013641] systemd[1]: Listening on Syslog Socket.
[  OK  ] Listening on Syslog Socket.
[   12.043481] systemd[1]: Listening on fsck to fsckd communication Socket.
[  OK  ] Listening on fsck to fsckd communication Socket.
[   12.089106] systemd[1]: Starting Load Kernel Modules...
         Starting Load Kernel Modules...
[   12.146983] systemd[1]: Starting Journal Service...
         Starting Journal Service...
[   12.175481] systemd[1]: Starting Remount Root and Kernel File Systems...
         Starting Remount Root and Kernel File Systems...
[   12.233748] systemd[1]: Listening on udev Control Socket.
[  OK  ] Listening on udev Control Socket.
[   12.255885] systemd[1]: Starting Set the console keyboard layout...
         Starting Set the console keyboard layout...
[   12.300492] systemd[1]: Reached target Encrypted Volumes.
[  OK  ] Reached target Encrypted Volumes.
[   12.343277] systemd[1]: Reached target Slices.
[  OK  ] Reached target Slices.
[   12.376923] systemd[1]: Mounted Debug File System.
[  OK  ] Mounted Debug File System.
[   12.401970] systemd[1]: Started Restore / save the current clock.
[  OK  ] Started Restore / save the current clock.
[   12.502408] systemd[1]: Started Create Static Device Nodes in /dev.
[  OK  ] Started Create Static Device Nodes in /dev.
[   12.585921] systemd[1]: Started Load Kernel Modules.
[  OK  ] Started Load Kernel Modules.
[   12.646288] systemd[1]: Started Nameserver information manager.
[  OK  ] Started Nameserver information manager.
[   12.799581] systemd[1]: Mounting FUSE Control File System...
         Mounting FUSE Control File System...
[   12.865084] systemd[1]: Starting Apply Kernel Variables...
         Starting Apply Kernel Variables...
[   12.954008] systemd[1]: Starting udev Kernel Device Manager...
         Starting udev Kernel Device Manager...
[   13.017200] systemd[1]: Mounted FUSE Control File System.
[  OK  ] Mounted FUSE Control File System.
[  OK  ] Started Apply Kernel Variables.
[  OK  ] Started Journal Service.
[  OK  ] Started udev Kernel Device Manager.
[  OK  ] Started Set the console keyboard layout.
[FAILED] Failed to start Remount Root and Kernel File Systems.
See 'systemctl status systemd-remount-fs.service' for details.
         Starting Flush Journal to Persistent Storage...
[  OK  ] Reached target Local File Systems (Pre).
         Mounting /tmp...
         Starting Load/Save Random Seed...
         Starting udev Coldplug all Devices...
[  OK  ] Mounted /tmp.
[  OK  ] Started Load/Save Random Seed.
[  OK  ] Reached target Local File Systems.
         Starting Armbian ZRAM config...
         Starting Set console font and keymap...
         Starting Raise network interfaces...
[  OK  ] Started Flush Journal to Persistent Storage.
[  OK  ] Started Set console font and keymap.
         Starting Create Volatile Files and Directories...
[  OK  ] Started Create Volatile Files and Directories.
[  OK  ] Reached target System Time Synchronized.
         Starting Update UTMP about System Boot/Shutdown...
[  OK  ] Started Entropy daemon using the HAVEGE algorithm.
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Started Armbian ZRAM config.
         Starting Armbian memory supported logging...
[  OK  ] Started Raise network interfaces.
[  OK  ] Started udev Coldplug all Devices.
[  OK  ] Found device /dev/ttymxc0.
[  OK  ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
         Starting Load/Save RF Kill Switch Status...
[  OK  ] Started Load/Save RF Kill Switch Status.
[  OK  ] Started Armbian memory supported logging.
[  OK  ] Reached target System Initialization.
         Starting Armbian hardware optimization...
[  OK  ] Started Daily apt download activities.
         Starting Armbian hardware monitoring...
[  OK  ] Started Daily apt upgrade and clean activities.
[  OK  ] Started Daily Cleanup of Temporary Directories.
[  OK  ] Reached target Timers.
         Starting Armbian filesystem resize...
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Reached target Sockets.
[  OK  ] Started Armbian hardware optimization.
[  OK  ] Started Armbian hardware monitoring.
[  OK  ] Started Armbian filesystem resize.
[  OK  ] Reached target Basic System.
[  OK  ] Started Armbian first run tasks.
[  OK  ] Created slice system-getty.slice.
[  OK  ] Started D-Bus System Message Bus.
         Starting Network Manager...
         Starting Login Service...
[  OK  ] Started Regular background program processing daemon.
         Starting LSB: Start/stop sysstat's sadc...
         Starting System Logging Service...
         Starting LSB: Load kernel modules needed to enable cpufreq scaling...
[  OK  ] Started System Logging Service.
[  OK  ] Started LSB: Start/stop sysstat's sadc.
[  OK  ] Started Login Service.
[  OK  ] Started LSB: Load kernel modules needed to enable cpufreq scaling.
         Starting LSB: set CPUFreq kernel parameters...
[  OK  ] Started Network Manager.
[  OK  ] Reached target Network.
         Starting OpenBSD Secure Shell server...
[  OK  ] Started Unattended Upgrades Shutdown.
         Starting Permit User Sessions...
         Starting Network Manager Wait Online...
[  OK  ] Started LSB: set CPUFreq kernel parameters.
[  OK  ] Started Permit User Sessions.
         Starting Network Manager Script Dispatcher Service...
         Starting LSB: Set sysfs variables from /etc/sysfs.conf...
[  OK  ] Started Network Manager Script Dispatcher Service.
[  OK  ] Started LSB: Set sysfs variables from /etc/sysfs.conf.
         Starting Hostname Service...
[FAILED] Failed to start Hostname Service.
See 'systemctl status systemd-hostnamed.service' for details.
[  OK  ] Started OpenBSD Secure Shell server.
[FAILED] Failed to start Network Manager Wait Online.
See 'systemctl status NetworkManager-wait-online.service' for details.
[  OK  ] Reached target Network is Online.
         Starting LSB: Start NTP daemon...
         Starting /etc/rc.local Compatibility...
         Starting LSB: Advanced IEEE 802.11 management daemon...
[  OK  ] Started LSB: Advanced IEEE 802.11 management daemon.
[  OK  ] Started /etc/rc.local Compatibility.
[  OK  ] Started Getty on tty1.
[  OK  ] Started Serial Getty on ttymxc0.
[  OK  ] Reached target Login Prompts.
[  OK  ] Started LSB: Start NTP daemon.
[  OK  ] Reached target Multi-User System.
[  OK  ] Reached target Graphical Interface.
         Starting Update UTMP about System Runlevel Changes...
[  OK  ] Started Update UTMP about System Runlevel Changes.

Debian Stretch with Armbian Linux ttymxc0

sbcspg login: root
Password:
You are required to change your password immediately (root enforced)
Changing password for root.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
     _
 ___| |__   ___ ___ _ __   __ _
/ __| '_ \ / __/ __| '_ \ / _` |
\__ \ |_) | (__\__ \ |_) | (_| |
|___/_.__/ \___|___/ .__/ \__, |
                   |_|    |___/
Welcome to Debian Stretch with Armbian Linux 4.1.15-rialto-1.1.3
System load:   0.08 0.07 0.12   Up time:       14 min
Memory usage:  5 % of 494MB     IP:            192.168.0.81
CPU temp:      43‹C
Usage of /:    15% of 5.5G

[ General system configuration (beta): armbian-config ]

New to Armbian? Check the documentation first: https://docs.armbian.com


Thank you for choosing Armbian! Support: www.armbian.com

Creating a new user account. Press <Ctrl-C> to abort

Please provide a username (eg. your forename): armbian
Trying to add user armbian
Adding user `armbian' ...
Adding new group `armbian' (1000) ...
Adding new user `armbian' (1000) with group `armbian' ...
Creating home directory `/home/armbian' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for armbian
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]

Dear armbian, your account armbian has been created and is sudo enabled.
Please use this account for your daily work from now on.

root@sbcspg:~#