I received the Layerscape FRWY-LS1012A board from the attendance to an E14 webinar, and I will write on my experience with the board. It will be written in an informal style, where I'll post my journey exploring the board as I try different aspects of the board. This is my first experience with a Linux based board, so there will be a lot of trial and error during the testing of the board.
The LS1012A is an entry level processor that belongs to the Layerscape family, which are processors meant to be used for networking applications. As Tareq Bustami (senior vice president and general manager of NXP’s Digital Networking business) puts it: “The groundbreaking combination of low power, tiny footprint and networking-grade performance of NXP’s LS1012 processor is ideal for consumer, networking and Internet of Things applications alike, including comprehensive IoT Gateway solutions which integrate low power 64-bit ARM based processors together with BLE, ZigBee® & Thread wireless technologies,”.
The Layerscape FRWY-LS1012A board is a small (83x90 mm) development platform for the LS1012A processors built on a single core Arm Cortex®-A53. It features:
- A rich Linux development environment will be available initially via an early access release and will be included in the Layerscape SDK release
- LS1012ASE7KKB MCU – 1000 MHz CPU, 1GT/s DDR3L, 212 FC-LGA
- 16 MB serial NOR + 1GB serial NAND QSPI
- 512 MB DDR3L SDRAM
- VR5100 Power Management IC
- SGTL5000 Audio ADC / DAC with 3.5mm microphone and headphone jacks
- Dual 1000Base-T Ethernet interfaces with RJ-45 connectors
- USB2.0/3.0 OTG Micro A/B connector
- MicroSD card slot
- M2 connector to enable Wi-Fi and NFC applications
- mikroBUS™ Click expansion connectors with I2C, SPI, UART and GPIO connectivity
- USB2.0 Micro A/B connector for debug
- Additional debug via Cortex 10-pin JTAG connector and CMSIS DAP through a K20 microcontroller
Operating system installation
Sometimes there is a wall that separates you from the playground, for this board its the operating system installation. The "Getting started" guide begins in the web with an introductory video showing the major features of the board. Then it continues with simple instructions where they explain how to plug cables and how to install the Mbed Windows serial port driver and connect to the board using a terminal. Next you are asked to download some images (which require you to register and log into the NXP webpage), and download some images. Finally to install Ubuntu userland, you are asked to download a "Getting started guide" PDF, which repeats previous steps and also adds the steps required for the operating system installation. This PDF is far less friendly and steps are given like in a cooking recipe, without much explanation on what exactly you are doing at each step. To install Ubuntu Userland you need to build the image within Ubuntu 16.04, a requirement I initially ignored (I was on Kali), but at some while following the steps I was asked to use Docker to continue. I realised it would be simpler to just install Ubuntu, so I installed it on a virtual machine and build the image, which took around an hour.
The images must be installed by setting up a TFTP server in the host and telling the board to download the images through the board bootloader (U-Boot) commands. The latter is done by connecting to the virtual serial port of the board (which is presented by the K20 microcontroller) with a terminal program. The virtual serial port was not visible initially and after spending several hours attempting different approaches and looking for useful information on the net I decided to ask in the NXP community forum. They replied very quickly and attached me a K20 microcontroller firmware which fixed the virtual serial port issue. Having access to the U-Boot console I installed the latest U-Boot image and later installed the Linux Userland from the Linux host directly into the microSD. After inserting the microSD to the board it booted fine.
I won't say the instructions were easy to follow, without any mistakes or typos, but after a lot of trial and error I finally made it!
U-Boot 2017.07-00013-gac7670f (Apr 12 2018 - 01:01:24 +0800) SoC: LS1012AE Rev2.0 (0x87040020) Clock Configuration: CPU0(A53):1000 MHz Bus: 250 MHz DDR: 1000 MT/s Reset Configuration Word (RCW): 00000000: 0800000a 00000000 00000000 00000000 00000010: 33050000 c000000c 40000000 00001800 00000020: 00000000 00000000 00000000 000c47f2 00000030: 00000000 1082a120 00000096 00000000 I2C: ready DRAM: 446 MiB PPA Firmware: Version FRWY-LS1012A-EAR WARNING: Calling __hwconfig without a buffer and before environment is ready Using SERDES1 Protocol: 13061 (0x3305) MMC: FSL_SDHC: 0, FSL_SDHC: 1 SF: Detected w25q16dw with page size 256 Bytes, erase size 4 KiB, total 2 MiB In: serial Out: serial Err: serial Model: LS1012A FRWY Board Board: LS1012AFRWY Net: PFE class pe firmware PFE tmu pe firmware ls1012a_configure_serdes 0 ls1012a_configure_serdes 1 PCIe0: pcie@3400000 Root Complex: no link pfe_eth0, pfe_eth1 Warning: pfe_eth1 (eth1) using random MAC address - ca:79:d3:52:20:46 Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... Scanning mmc 0:2... Found U-Boot script /ls1012afrwy_boot.scr 724 bytes read in 150 ms (3.9 KiB/s) ## Executing script at 80000000 20085248 bytes read in 1152 ms (16.6 MiB/s) 13291 bytes read in 57 ms (227.5 KiB/s) Stopping PFE... ## Flattened Device Tree blob at 90000000 Booting using the fdt blob at 0x90000000 Using Device Tree in place at 0000000090000000, end 00000000900063ea WARNING: fdt_fixup_stdout: could not read serial0 alias: FDT_ERR_NOTFOUND Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.9.62-00004-ga166f7b (email@example.com) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) ) #1 SMP PREEMPT Wed Apr 11 23:47:18 CST 2018 [ 0.000000] Boot CPU: AArch64 Processor [410fd034] [ 0.000000] earlycon: uart8250 at MMIO 0x00000000021c0500 (options '') [ 0.000000] bootconsole [uart8250] enabled [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] cma: Reserved 16 MiB at 0x000000009ac00000 [ 0.000000] NUMA: No NUMA configuration found [ 0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x000000009bdfffff] [ 0.000000] NUMA: Adding memblock [0x80000000 - 0x9bdfffff] on node 0 [ 0.000000] NUMA: Initmem setup node 0 [mem 0x80000000-0x9bdfffff] [ 0.000000] NUMA: NODE_DATA [mem 0x9bde2640-0x9bde3dff] [ 0.000000] Zone ranges: [ 0.000000] DMA [mem 0x0000000080000000-0x000000009bdfffff] [ 0.000000] Normal empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000080000000-0x000000009bdfffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009bdfffff] [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: PSCIv0.2 detected in firmware. [ 0.000000] psci: Using standard PSCI v0.2 function IDs [ 0.000000] psci: Trusted OS migration not required [ 0.000000] percpu: Embedded 23 pages/cpu @ffff80001bdc6000 s55000 r8192 d31016 u94208 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: enabling workaround for ARM erratum 845719 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 112392 [ 0.000000] Policy zone: DMA [ 0.000000] Kernel command line: console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=4ff0fee6-03 rw rootwait [ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes) [ 0.000000] Memory: 390780K/456704K available (12412K kernel code, 1054K rwdata, 4940K rodata, 1152K init, 978K bss, 49540K reserved, 16384K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] modules : 0xffff000000000000 - 0xffff000008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffff000008000000 - 0xffff7dffbfff0000 (129022 GB) [ 0.000000] .text : 0xffff000008080000 - 0xffff000008ca0000 ( 12416 KB) [ 0.000000] .rodata : 0xffff000008ca0000 - 0xffff000009180000 ( 4992 KB) [ 0.000000] .init : 0xffff000009180000 - 0xffff0000092a0000 ( 1152 KB) [ 0.000000] .data : 0xffff0000092a0000 - 0xffff0000093a7a00 ( 1055 KB) [ 0.000000] .bss : 0xffff0000093a7a00 - 0xffff00000949c5d4 ( 979 KB) [ 0.000000] fixed : 0xffff7dfffe7fd000 - 0xffff7dfffec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffff7dfffee00000 - 0xffff7dffffe00000 ( 16 MB) [ 0.000000] vmemmap : 0xffff7e0000000000 - 0xffff800000000000 ( 2048 GB maximum) [ 0.000000] 0xffff7e0000000000 - 0xffff7e00006f8000 ( 6 MB actual) [ 0.000000] memory : 0xffff800000000000 - 0xffff80001be00000 ( 446 MB) [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] Build-time adjustment of leaf fanout to 64. [ 0.000000] RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=1. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=1 [ 0.000000] NR_IRQS:64 nr_irqs:64 0 [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] arm_arch_timer: Architected cp15 timer(s) running at 25.00MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x5c40939b5, max_idle_ns: 440795202646 ns [ 0.000003] sched_clock: 56 bits at 25MHz, resolution 40ns, wraps every 4398046511100ns [ 0.008451] Console: colour dummy device 80x25 [ 0.012983] Calibrating delay loop (skipped), value calculated using timer frequency.. 50.00 BogoMIPS (lpj=100000) [ 0.023426] pid_max: default: 32768 minimum: 301 [ 0.028166] Security Framework initialized [ 0.032436] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes) [ 0.039921] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes) [ 0.047064] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes) [ 0.053738] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes) [ 0.061692] ASID allocator initialised with 65536 entries [ 0.099617] EFI services will not be available. [ 0.112221] Brought up 1 CPUs [ 0.115206] SMP: Total of 1 processors activated. [ 0.119959] CPU features: detected feature: 32-bit EL0 Support [ 0.125867] CPU: All CPU(s) started at EL2 [ 0.130005] alternatives: patching kernel code [ 0.135096] devtmpfs: initialized [ 0.142814] DMI not present or invalid. [ 0.146984] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.156891] futex hash table entries: 256 (order: 2, 16384 bytes) [ 0.163673] xor: measuring software checksum speed [ 0.208608] 8regs : 1862.000 MB/sec [ 0.252870] 8regs_prefetch: 1710.000 MB/sec [ 0.297475] 32regs : 2273.000 MB/sec [ 0.341724] 32regs_prefetch: 1982.000 MB/sec [ 0.346378] xor: using function: 32regs (2273.000 MB/sec) [ 0.351827] pinctrl core: initialized pinctrl subsystem [ 0.358768] NET: Registered protocol family 16 [ 0.375582] cpuidle: using governor menu [ 0.380326] vdso: 2 pages (1 code @ ffff000008ca7000, 1 data @ ffff0000092a5000) [ 0.388097] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. [ 0.395656] DMA: preallocated 256 KiB pool for atomic allocations [ 0.402424] Serial: AMBA PL011 UART driver [ 0.459274] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.549935] raid6: int64x1 gen() 366 MB/s [ 0.622400] raid6: int64x1 xor() 375 MB/s [ 0.694824] raid6: int64x2 gen() 591 MB/s [ 0.767226] raid6: int64x2 xor() 507 MB/s [ 0.839636] raid6: int64x4 gen() 902 MB/s [ 0.912022] raid6: int64x4 xor() 639 MB/s [ 0.984434] raid6: int64x8 gen() 940 MB/s [ 1.056837] raid6: int64x8 xor() 611 MB/s [ 1.129307] raid6: neonx1 gen() 624 MB/s [ 1.201703] raid6: neonx1 xor() 643 MB/s [ 1.274129] raid6: neonx2 gen() 1026 MB/s [ 1.346530] raid6: neonx2 xor() 880 MB/s [ 1.418930] raid6: neonx4 gen() 1323 MB/s [ 1.491329] raid6: neonx4 xor() 1007 MB/s [ 1.563715] raid6: neonx8 gen() 1382 MB/s [ 1.636124] raid6: neonx8 xor() 1025 MB/s [ 1.640428] raid6: using algorithm neonx8 gen() 1382 MB/s [ 1.645871] raid6: .... xor() 1025 MB/s, rmw enabled [ 1.650875] raid6: using intx1 recovery algorithm [ 1.656027] ACPI: Interpreter disabled. [ 1.665427] RCPM: layerscape_rcpm_init: The RCPM driver initialized. [ 1.673092] vgaarb: loaded [ 1.676733] SCSI subsystem initialized [ 1.685349] usbcore: registered new interface driver usbfs [ 1.691521] usbcore: registered new interface driver hub [ 1.697061] usbcore: registered new device driver usb [ 1.702691] imx-i2c 2180000.i2c: fsl-scl-gpio not found [ 1.708367] imx-i2c 2180000.i2c: can't get pinctrl, bus recovery not supported [ 1.716015] i2c i2c-0: IMX I2C adapter registered [ 1.720952] i2c i2c-0: can't use DMA, using PIO instead. [ 1.726798] pps_core: LinuxPPS API ver. 1 registered [ 1.731985] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <firstname.lastname@example.org> [ 1.741339] PTP clock support registered [ 1.745672] dmi: Firmware registration failed. [ 1.750486] No BMan portals available! [ 1.754693] QMan: Allocated lookup table at ffff000009601000, entry count 65537 [ 1.762192] No QMan portals available! [ 1.766174] No USDPAA memory, no 'fsl,usdpaa-mem' in device-tree [ 1.772708] Advanced Linux Sound Architecture Driver Initialized. [ 1.779960] clocksource: Switched to clocksource arch_sys_counter [ 1.786546] VFS: Disk quotas dquot_6.6.0 [ 1.790598] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 1.797979] pnp: PnP ACPI: disabled [ 1.814842] NET: Registered protocol family 2 [ 1.820621] TCP established hash table entries: 4096 (order: 3, 32768 bytes) [ 1.827921] TCP bind hash table entries: 4096 (order: 4, 65536 bytes) [ 1.834507] TCP: Hash tables configured (established 4096 bind 4096) [ 1.841013] UDP hash table entries: 256 (order: 1, 8192 bytes) [ 1.846914] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) [ 1.853381] NET: Registered protocol family 1 [ 1.866105] RPC: Registered named UNIX socket transport module. [ 1.872104] RPC: Registered udp transport module. [ 1.876853] RPC: Registered tcp transport module. [ 1.881596] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 1.888595] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available [ 1.896673] kvm : 8-bit VMID [ 1.899835] kvm : IDMAP page: 96c86000 [ 1.904001] kvm : HYP VA range: 800000000000:ffffffffffff [ 1.910701] kvm : Hyp mode initialized successfully [ 1.915930] kvm : vgic-v2@1404000 [ 1.919590] kvm : vgic interrupt IRQ1 [ 1.923576] kvm : virtual timer IRQ4 [ 1.929503] audit: initializing netlink subsys (disabled) [ 1.935592] audit: type=2000 audit(1.820:1): initialized [ 1.945892] workingset: timestamp_bits=44 max_order=17 bucket_order=0 [ 1.953020] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.963152] NFS: Registering the id_resolver key type [ 1.968278] Key type id_resolver registered [ 1.972502] Key type id_legacy registered [ 1.976551] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 1.983551] fuse init (API version 7.26) [ 1.987800] SGI XFS with ACLs, security attributes, realtime, no debug enabled [ 2.007626] 9p: Installing v9fs 9p2000 file system support [ 2.013250] ceph: loaded (mds proto 32) [ 2.019670] async_tx: api initialized (async) [ 2.024307] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246) [ 2.036009] io scheduler noop registered [ 2.040031] io scheduler cfq registered (default) [ 2.046619] libphy: mdio_driver_register: phy-bcm-ns2-pci [ 2.055567] OF: PCI: host bridge /soc/pcie@3400000 ranges: [ 2.062304] OF: PCI: IO 0x4000010000..0x400001ffff -> 0x00000000 [ 2.068713] OF: PCI: MEM 0x4040000000..0x407fffffff -> 0x40000000 [ 2.075656] layerscape-pcie 3400000.pcie: PCI host bridge to bus 0000:00 [ 2.082528] pci_bus 0000:00: root bus resource [bus 00-ff] [ 2.088116] pci_bus 0000:00: root bus resource [io 0x0000-0xffff] [ 2.094373] pci_bus 0000:00: root bus resource [mem 0x4040000000-0x407fffffff] (bus address [0x40000000-0x7fffffff]) [ 2.105514] pci 0000:00:00.0: BAR 6: assigned [mem 0x4040000000-0x40400007ff pref] [ 2.113281] pci 0000:00:00.0: PCI bridge to [bus 01] [ 2.118669] pcieport 0000:00:00.0: Signaling PME through PCIe PME interrupt [ 2.130332] Freescale LS2 console driver [ 2.135818] fsl-ls2-console: device fsl_mc_console registered [ 2.141922] fsl-ls2-console: device fsl_aiop_console registered [ 2.149232] xenfs: not registering filesystem on non-xen platform [ 2.162438] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 2.171570] console [ttyS0] disabled [ 2.176103] 21c0500.serial: ttyS0 at MMIO 0x21c0500 (irq = 15, base_baud = 7812500) is a 16550A [ 2.185034] console [ttyS0] enabled [ 2.185034] console [ttyS0] enabled [ 2.192052] bootconsole [uart8250] disabled [ 2.192052] bootconsole [uart8250] disabled [ 2.201124] SuperH (H)SCI(F) driver initialized [ 2.206263] msm_serial: driver initialized [ 2.211338] Unable to detect cache hierarchy from DT for CPU 0 [ 2.293639] brd: module loaded [ 2.335473] loop: module loaded [ 2.339699] hisi_sas: driver version v1.6 [ 2.347292] fsl-quadspi 1550000.quadspi: w25q16dw (2048 Kbytes) [ 2.362490] libphy: Fixed MDIO Bus: probed [ 2.369134] tun: Universal TUN/TAP device driver, 1.6 [ 2.375436] tun: (C) 1999-2004 Max Krasnyansky <email@example.com> [ 2.382827] Freescale FM module, FMD API version 21.1.0 [ 2.388887] Freescale FM Ports module [ 2.392654] fsl_mac: fsl_mac: FSL FMan MAC API based driver [ 2.398532] fsl_dpa: FSL DPAA Ethernet driver [ 2.403113] fsl_advanced: FSL DPAA Advanced drivers: [ 2.408155] fsl_proxy: FSL DPAA Proxy initialization driver [ 2.413888] fsl_oh: FSL FMan Offline Parsing port driver [ 2.419720] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI [ 2.426992] e1000: Copyright (c) 1999-2006 Intel Corporation. [ 2.432900] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k [ 2.438806] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. [ 2.444881] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.4.0-k [ 2.451912] igb: Copyright (c) 2007-2014 Intel Corporation. [ 2.457598] igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.4.0-k [ 2.465493] igbvf: Copyright (c) 2009 - 2012 Intel Corporation. [ 2.471532] sky2: driver version 1.30 [ 2.476752] VFIO - User Level meta-driver version: 0.3 [ 2.488858] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 2.496083] ehci-pci: EHCI PCI platform driver [ 2.500788] ehci-platform: EHCI generic platform driver [ 2.506345] ehci-exynos: EHCI EXYNOS driver [ 2.510756] ehci-msm: Qualcomm On-Chip EHCI Host Controller [ 2.516540] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 2.522819] ohci-pci: OHCI PCI platform driver [ 2.527413] ohci-platform: OHCI generic platform driver [ 2.532878] ohci-exynos: OHCI EXYNOS driver [ 2.537599] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller [ 2.543271] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1 [ 2.551349] xhci-hcd xhci-hcd.0.auto: hcc params 0x0220f66d hci version 0x100 quirks 0x02010010 [ 2.560155] xhci-hcd xhci-hcd.0.auto: irq 22, io mem 0x02f00000 [ 2.566867] hub 1-0:1.0: USB hub found [ 2.570809] hub 1-0:1.0: 1 port detected [ 2.575045] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller [ 2.580573] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2 [ 2.588338] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM. [ 2.597098] hub 2-0:1.0: USB hub found [ 2.601018] hub 2-0:1.0: 1 port detected [ 2.605666] usbcore: registered new interface driver usb-storage [ 2.613328] mousedev: PS/2 mouse device common for all mice [ 2.621259] i2c /dev entries driver [ 2.629070] imx2-wdt 2ad0000.wdog: timeout 60 sec (nowayout=0) [ 2.637036] qoriq_cpufreq: Freescale QorIQ CPU frequency scaling driver [ 2.644730] sdhci: Secure Digital Host Controller Interface driver [ 2.651176] sdhci: Copyright(c) Pierre Ossman [ 2.656144] Synopsys Designware Multimedia Card Interface Driver [ 2.662973] sdhci-pltfm: SDHCI platform and OF driver helper [ 2.711973] mmc0: SDHCI controller on 1560000.esdhc [1560000.esdhc] using ADMA 64-bit [ 2.728196] ledtrig-cpu: registered to indicate activity on CPUs [ 2.750231] caam-dma 1700000.crypto:caam-dma: Defer probing after JR driver probing [ 2.759488] caam 1700000.crypto: Instantiated RNG4 SH1 [ 2.764846] caam 1700000.crypto: device ID = 0x0a14040000000000 (Era 8) [ 2.771527] caam 1700000.crypto: job rings = 3, qi = 0, dpaa2 = no [ 2.783443] caam algorithms registered in /proc/crypto [ 2.790354] caam_jr 1710000.jr: registering rng-caam [ 2.795857] caam 1700000.crypto: caam pkc algorithms registered in /proc/crypto [ 2.804530] usbcore: registered new interface driver usbhid [ 2.810540] mmc0: new high speed SDHC card at address aaaa [ 2.817325] usbhid: USB HID core driver [ 2.821210] mmcblk0: mmc0:aaaa SS16G 14.8 GiB [ 2.826565] mmcblk0: p1 p2 p3 [ 2.830730] No fsl,qman node [ 2.835151] Freescale USDPAA process driver [ 2.839421] fsl-usdpaa: no region found [ 2.843276] Freescale USDPAA process IRQ driver [ 2.848641] optee: probing for conduit method from DT. [ 2.854042] optee: api uid mismatch [ 2.859829] sgtl5000 0-000a: sgtl5000 revision 0x11 [ 2.866251] sgtl5000 0-000a: Using internal LDO instead of VDDD: check ER1 [ 2.898874] Netfilter messages via NETLINK v0.30. [ 2.903910] nf_conntrack version 0.5.0 (3584 buckets, 14336 max) [ 2.910125] nf_tables: (c) 2007-2009 Patrick McHardy <firstname.lastname@example.org> [ 2.916722] nf_tables_compat: (c) 2012 Pablo Neira Ayuso <email@example.com> [ 2.924224] ip_tables: (C) 2000-2006 Netfilter Core Team [ 2.929630] Initializing XFRM netlink socket [ 2.934000] NET: Registered protocol family 10 [ 2.943162] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 2.949948] NET: Registered protocol family 17 [ 2.954591] NET: Registered protocol family 15 [ 2.959103] Bridge firewalling registered [ 2.963246] Ebtables v2.0 registered [ 2.966981] 8021q: 802.1Q VLAN Support v1.8 [ 2.971227] 9pnet: Installing 9P2000 support [ 2.975651] Key type dns_resolver registered [ 2.980049] Key type ceph registered [ 2.987750] libceph: loaded (mon/osd proto 15/24) [ 2.993283] registered taskstats version 1 [ 3.002423] Btrfs loaded, crc32c=crc32c-generic [ 3.008633] caam-dma 1700000.crypto:caam-dma: caam dma support with 3 job rings [ 3.020396] random: fast init done [ 3.032722] asoc-simple-card sound: sgtl5000 <-> 2b60000.sai mapping ok [ 3.040560] hctosys: unable to open rtc device (rtc0) [ 3.046045] ALSA device list: [ 3.049066] #0: 2b60000.sai-sgtl5000 [ 3.057046] EXT4-fs (mmcblk0p3): couldn't mount as ext3 due to feature incompatibilities [ 3.092722] EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null) [ 3.100886] VFS: Mounted root (ext4 filesystem) on device 179:3. [ 3.112377] devtmpfs: mounted [ 3.116237] Freeing unused kernel memory: 1152K [ 3.389438] systemd: System time before build time, advancing clock. [ 3.463671] systemd: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN) [ 3.482199] systemd: Detected architecture arm64. Welcome to Ubuntu 16.04.5 LTS! [ 3.519895] systemd: Set hostname to <localhost>. [ 4.115732] systemd: Started Trigger resolvconf update for networkd DNS. [ OK ] Started Trigger resolvconf update for networkd DNS. [ 4.140454] systemd: Listening on Journal Audit Socket. [ OK ] Listening on Journal Audit Socket. [ 4.161646] systemd: Created slice User and Session Slice. [ OK ] Created slice User and Session Slice. [ 4.180273] systemd: Listening on Journal Socket (/dev/log). [ OK ] Listening on Journal Socket (/dev/log). [ 4.200231] systemd: Listening on /dev/initctl Compatibility Named Pipe. [ OK ] Listening on /dev/initctl Compatibility Named Pipe. [ 4.224291] systemd: Listening on Journal Socket. [ OK ] Listening on Journal Socket. [ 4.244258] systemd: Listening on udev Kernel Socket. [ OK ] Listening on udev Kernel Socket. [ OK ] Reached target Encrypted Volumes. [ OK ] Listening on fsck to fsckd communication Socket. [ OK ] Reached target Swap. [ OK ] Created slice System Slice. [ OK ] Started Read required files in advance. Mounting Huge Pages File System... Starting Nameserver information manager... [ OK ] Created slice system-serial\x2dgetty.slice. Starting Load Kernel Modules... Starting Remount Root and Kernel File Systems... [ OK ] Created slice system-systemd\x2dfsck.slice. [ 4.455389] EXT4-fs (mmcblk0p3): re-mounted. Opts: errors=remount-ro Mounting POSIX Message Queue File System... Mounting Debug File System... [ OK ] Reached target Slices. [ OK ] Started Forward Password Requests to Wall Directory Watch. [ OK ] Listening on Syslog Socket. Starting Set console keymap... [ OK ] Listening on udev Control Socket. [ OK ] Started Dispatch Password Requests to Console Directory Watch. [ OK ] Reached target Paths. Starting Journal Service... Starting Create list of required st... nodes for the current kernel... [ OK ] Reached target Remote File Systems (Pre). [ OK ] Reached target Remote File Systems. Starting LSB: option to manually ma...late the IPsec SA/SP database... [ OK ] Mounted Debug File System. [ OK ] Mounted POSIX Message Queue File System. [ OK ] Mounted Huge Pages File System. [ OK ] Started Load Kernel Modules. [ OK ] Started Remount Root and Kernel File Systems. [ OK ] Started Create list of required sta...ce nodes for the current kernel. [ OK ] Started Nameserver information manager. [ OK ] Started Journal Service. [ OK ] Started Set console keymap. [ OK ] Reached target Network (Pre). Starting Create Static Device Nodes in /dev... Starting Flush Journal to Persistent Storage... Starting Load/Save Random Seed... Starting udev Coldplug all Devices... Mounting FUSE Control File System... Starting Apply Kernel Variables... Mounting Configuration File System... [ OK ] Mounted FUSE Control File System. [ OK ] Mounted Configuration File System. [ OK ] Started Load/Save Random Seed. [ OK ] Started Apply Kernel Variables. [ OK ] Started Create Static Device Nodes in /dev. Starting udev Kernel Device Manager... [ OK ] Reached target Local File Systems (Pre). [ OK ] Started Flush Journal to Persistent Storage. [ OK ] Started LSB: option to manually manipulate the IPsec SA/SP database. [ OK ] Started udev Kernel Device Manager. Starting LSB: QEMU KVM module loading script... [ OK ] Started LSB: QEMU KVM module loading script. [ OK ] Started udev Coldplug all Devices. [ OK ] Found device /dev/ttyS0. [ OK ] Reached target Sound Card. [ OK ] Found device /dev/disk/by-uuid/256bf6e9-9b1c-4b2c-bd3f-b3ec36c9da14. Starting File System Check on /dev/...9-9b1c-4b2c-bd3f-b3ec36c9d[ 6.844164] pe_load_ddr_section: load address(3fb0000) and elf file address(ffff00000a3bd000) rcvd a14... [ OK ] Started File System Check Daemon to report status. [ OK ] Started File System Check on /dev/d...6e9-9b1c-4b2c-bd3f-b3ec36c9da14. Mounting /boot... [ OK ] Mounted /boot. [ OK ] Reached target Local File Systems. Starting Create Volatile Files and Directories... Starting Set console font and keymap... Starting LSB: ebtables ruleset management... Starting LSB: AppArmor initialization... [ OK ] Started Create Volatile Files and Directories. Starting Network Time Synchronization... Starting Update UTMP about System Boot/Shutdown... [ OK ] Started Update UTMP about System Boot/Shutdown. [ OK ] Started LSB: AppArmor initialization. [ OK ] Started Network Time Synchronization. [ OK ] Reached target System Time Synchronized. Starting Raise network interfaces... [ OK ] Started LSB: ebtables ruleset management. [ OK ] Reached target System Initialization. [ OK ] Started Daily Cleanup of Temporary Directories. [ OK ] Listening on D-Bus System Message Bus Socket. [ OK ] Started Daily apt download activities. [ OK ] Listening on UUID daemon activation socket. [ OK ] Started Daily apt upgrade and clean activities. [ OK ] Reached target Timers. [ OK ] Listening on Virtual machine lock manager socket. Starting LXD - unix socket. [ OK ] Listening on Virtual machine log manager socket. Starting Docker Socket for the API. [ OK ] Listening on LXD - unix socket. [ OK ] Listening on Docker Socket for the API. [ OK ] Reached target Sockets. [ OK ] Reached target Basic System. Starting System Logging Service... Starting LSB: Load kernel modules needed to enable cpufreq scaling... Starting Login Service... Starting LSB: Start/stop sysstat's sadc... Starting Initialize hardware monitoring sensors... Starting LXD - container startup/shutdown... Starting LSB: Set up cgroupfs mounts.... Starting LSB: Set the CPU Frequency Scaling governor to "ondemand"... Starting Permit User Sessions... [ OK ] Started D-Bus System Message Bus. [ OK ] Started Cgroup management daemon. [ OK ] Started FUSE filesystem for LXC. Starting LSB: Mount debugfs on /sys/kernel/debug... [ OK ] Started Regular background program processing daemon. Starting LSB: MD monitoring daemon... [ OK ] Started System Logging Service. [ OK ] Started Set console font and keymap. [ OK ] Started LSB: Set up cgroupfs mounts.. [ OK ] Started Permit User Sessions. [ OK ] Started LSB: MD monitoring daemon. [ OK ] Started Initialize hardware monitoring sensors. [ OK ] Started LSB: Start/stop sysstat's sadc. [ OK ] Started LSB: Set the CPU Frequency Scaling governor to "ondemand". Starting Set console scheme... [ OK ] Created slice system-getty.slice. [ OK ] Started Login Service. [ OK ] Started Set console scheme. [ OK ] Started LSB: Mount debugfs on /sys/kernel/debug. [ OK ] Started LXD - container startup/shutdown. [ OK ] Started LSB: Load kernel modules needed to enable cpufreq scaling. Starting LSB: set CPUFreq kernel parameters... [ OK ] Started Raise network interfaces. [ OK ] Reached target Network. Starting Virtualization daemon... Starting OpenBSD Secure Shell server... Starting Docker Application Container Engine... Starting vsftpd FTP server... [ OK ] Reached target Network is Online. Starting Ubuntu FAN network setup... Starting LXC network bridge setup... Starting /etc/rc.local Compatibility... Starting LSB: network benchmark... Starting LSB: HPA's tftp server... [ OK ] Started LSB: set CPUFreq kernel parameters. [ OK ] Started vsftpd FTP server. [ OK ] Started Ubuntu FAN network setup. Starting LSB: Set sysfs variables from /etc/sysfs.conf... [ OK ] Started /etc/rc.local Compatibility. [ OK ] Started Getty on tty1. [ OK ] Started Serial Getty on ttyS0. [ OK ] Reached target Login Prompts. [ OK ] Started OpenBSD Secure Shell server. [ OK ] Started LSB: network benchmark. [ OK ] Started LSB: Set sysfs variables from /etc/sysfs.conf. [ OK ] Started LSB: HPA's tftp server. [ OK ] Started LXC network bridge setup. Starting LXC Container Initialization and Autoboot Code... [ OK ] Started Virtualization daemon. Starting Suspend Active Libvirt Guests... [ OK ] Started Suspend Active Libvirt Guests. [ OK ] Started LXC Container Initialization and Autoboot Code. Ubuntu 16.04.5 LTS localhost ttyS0 localhost login:
Operating system configuration
I changed the default password of the root, erased the "user" user and created a new account with sudo access. To make the server accessible from the internet, I set it to have a fixed IP address, and configured my cable modem to forward TCP port 22 (SSH) to the board. I updated and installed some Linux packages through APT and I called the system ready to be used to do more fun stuff. Wondering what to do next I checked the board Layerscpae SDK pdf (1100 pages). I found there that some Layerscape boards (not sure about this one, as it is not mentioned) can be flashed with UEFI, other chapters of the SDK were about some advanced (or enterprise) network features and virtualisation. As on a quick view I didn't find any of those technologies that fun to play, three more simple projects came to my mind:
- Use the board to record remote or long duration RF activity through SDR.
- Take advantage of the fast gigabit ethernet, USB 3.0 and low power consumption to install a NAS.
- Use the Mikrobus.
The death of the Layerscape
Things didn't go smooth as I wished. I made an RJ45 cable so that I could get the board and SDR closer to the window. When I plugged the cable I noticed that it wasn't working, I then found that a pin of the Layerscape RJ45 socket was bent. The culprit was a non properly crimped RJ45 cable connector, one protruding metal contact of the connector bent the socket pin after I inserted it. This never happened to me before so I was wondering if all RJ45 sockets permanently (plastically) as opposed to temporarily (ellastically) deform. I tried bending pins of a few RJ45 sockets from old routers with a screwdriver and none plastically deformed, so apparently and luckily this behavior is not that common.
I tried to bend the pins back but after not being able to leave it in its initial condition I decided to buy a new Rj45 socket from eBay. Buying from ebay here is slow, and the first shipment didn't arrive (which I realized after waiting around 4 months), I bought for a second time and it arrived in around 4 months, just when I was about to buy for a third time. After such a long wait I was eager to solder the connector back and keep playing with the board. I pick up the power supply, connect it, and an IC explodes. I then figured out the mistake, a similarly looking 12V power supply (which I was not even aware that I had) was used instead of the Layerscape 5V one. I found that the IC that exploded was the K20 (a Cortex-M4 uC), so I tried to test if the rest would work, but it didn't, maybe because at some point of the booting the system tries to communicate to the K20, or maybe something else also got damaged.