md
First Taste of La Frite from Libre Computer
Last update July 13, 2019. First version July 11, 2019

Back on the October 17, 2018, I backed a Kickstarter project by Libre Computer, named La Frite: Open Source Fries. This is another single board computer, but with two twists: it is based on the Amlogic S805X SoC and there is no SD card. This was the first time I took a chance on a crowd funded project and I got in near what I thought was the end of the funding campaign as delivery was slated for November 2018. There was a slight delay, and I received the package in the mail yesterday (July 10).

Reading some comments on the Web from backers who had received their board a few days before, I expected to have some problems. However, I managed to get Debian Stretch running in a couple of hours, including time spent trying to assemble information.

Table of Contents

  1. Dirth of Information
  2. First Boot from eMMC Module
  3. Second Boot from USB Drive
  4. Transferring the OS to the eMMC Module
  5. Some Basic Steps
  6. Wi-Fi
  7. System Temperature
  8. Headers and UART
  9. Installing Another Image: Ubuntu
  10. Conclusion

Dirth of Information toc

I had ordered the Small Meal with Large Fries package which included:

The last two items were not needed but I was happy to get an eMMC module with a preloaded OS.

When the package arrived, it contained exactly what was listed, without any other information except for a URL on the box. YouTuber djismGAMING obtained the same package and has put up a video entitled La Frite | Pledge Unboxing | Libre Computer. For those who already have the Small Meal, there is not much to be learned from it as it is strictly and unboxing without any attempt at connecting the SBC. For those that are curious about the board it might be interesting. I strongly recommend that all watch the second video put out by djismGAMING just a couple of hours ago: La Frite Debian 9 XFCE | eMMC install and flash. It covers sections 2, 3 and 4 of this post but using an attached keyboard, mouse and monitor. I prefer running the SBC in headless mode.

The URL on the box, www.libre.computer, turned out to be a link to another Libre Computer project, but I did find the La Frite in the Products/Boards menu. Most of the tabs are empty pages. Clearly Libre Computer has not had time to set up the Web site. So I went on a hunt and this is the list of links to sites with information on La Frite that I found.

Wiki
http://wiki.loverpi.com/sbc:libre-computer-aml-s805x-ac
Forum
https://forum.loverpi.com/categories/libre-computer-aml-s805x-ac
GitHub
https://github.com/libre-computer-project
Redit
https://www.reddit.com/r/LaFrite/
Downloadable Debian Stretch Images
http://share.loverpi.com/board/libre-computer-project/libre-computer-board/image/debian/
Downloadable Ubuntu Bionic Images
http://share.loverpi.com/board/libre-computer-project/libre-computer-board/image/ubuntu/
Linux for Amlogic Meson
linux-mason

First Boot from eMMC toc

I plugged the eMMC module into the socket on the bottom side of the board, the power supply into the micro-USB socket and an Ethernet cable into the RJ-45 connector and powered up the board. It should have booted as the description of the Small Meal with Fries clearly indicated that at least one OS would be on the module.

Don't have time to mess around with flashing software? Get an out of the box plug and play kit with the option of Ubuntu 18.04 Bionic LTS or Android 8 Oreo for less than a Raspberry Pi 3.

It did not boot, but I was not surprised having read some comments on the Forum and Redit page. Time to power down the board and go look for an image.

Second Boot from a USB drive toc

I had no way to load an image on the eMMC module. But La Frite can boot from a USB thumb drive. Here are the steps I took to boot this new board as a headless server(i.e. no monitor, no keyboard and no mouse). For this to work the SBC must be connected to the local area network with an Ethernet cable, and a desktop computer must be connected to the same LAN. My desktop runs Linux, but the steps described here can be done with a Mac or Windows computer.

  1. I downloaded the first of the four images of Debian Stretch provided by Libre Computer to my desktop computer.
  2. Using Balena Etcher, I burned that image onto a Verbatim 32 GB Store 'n' Flip USB 2.0 drive that was not being used. A smaller drive would have been sufficient; the eMMC module is only 8 GB.
  3. I plugged the USB stick int the USB port furthest from the IR receiver and GPIO double row header. In other words, it's the USB port on the bottom right when looking at La Frite from above with the HDMI, RJ45 and micro-USB connectors at the top. The machine will not boot from a USB drive containing an OS if the device is connected to the other USB port.
  4. I powered up the board and waited until the red and green LEDs on the board were lit. I waited some more until the activity of the two LEDs on the RJ45 connector showed that an Ethernet connection has been established.
  5. A Quick Scan with Zenmap (nmap) of the network, in my case 192.168.1.0/24 reported a new device:
        Nmap scan report for 192.168.1.126
        Host is up (0.0070s latency).
        Not shown: 99 closed ports
        PORT   STATE SERVICE
        22/tcp open  ssh
        MAC Address: 18:xx:xx:xx:xx:xx (Unknown)
    

It was then possible to open an SSH session from my desktop computer named hp.

michel@hp:~$ ssh libre@192.168.1.126 The authenticity of host '192.168.1.126 (192.168.1.126)' can't be established. ECDSA key fingerprint is SHA256:aHHwrnhl89PYVaBKHz8FipIuWF8gmj2CPBqiA6oKR0Agg. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.126' (ECDSA) to the list of known hosts. libre@192.168.1.126's password: computer this is not echoed to the screen Linux libre-computer 4.19.57+ #55 SMP PREEMPT Thu Jul 4 13:38:48 EDT 2019 aarch64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.

Apparently some had problems updating and upgrading their system which, according to dedxi, was caused by an incorrect specification in /etc/fstab. I checked the file and found that the UUID for the /boot/efi partition was specified so it was not necessary to change anything. Just to confirm, I updated and upgraded the system without problem.

libre@libre-computer:~$ sudo apt update && sudo apt upgrade -y We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for libre: computer this is not echoed to the screen Get:1 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB] ... The following packages will be upgraded: debian-archive-keyring 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 73.9 kB of archives. After this operation, 30.7 kB of additional disk space will be used. ... Removing obsolete conffile /etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg ... Removing obsolete conffile /etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg ... libre@libre-computer:~$ sudo reboot Connection to 192.168.1.126 closed by remote host. Connection to 192.168.1.126 closed. michel@hp:~$ ssh libre@192.168.1.126 ssh: connect to host 192.168.1.126 port 22: Connection refused michel@hp:~$ ssh libre@192.168.1.126 ssh: connect to host 192.168.1.126 port 22: No route to host ... after waiting a little longer ... michel@hp:~$ ssh libre@192.168.1.126 libre@192.168.1.126's password: computer this is not echoed to the screen Linux libre-computer 4.19.57+ #55 SMP PREEMPT Thu Jul 4 13:38:48 EDT 2019 aarch64 ... libre@libre-computer:~$ sudo apt update just checking ... Reading state information... Done All packages are up to date.

This shows that booting the July 6 version of Debian from a USB stick not only works like a charm, but it was also possible to update and upgrade the system. It seems that the new OS image has resolved many problems experienced by others before. What a Difference a Day Makes as the song says. The next step is to move the OS to the eMMC module.

Transferring the OS to the eMMC Module toc

Looking at storage devices, we see the USB stick as device sda and the eMMS module as device mmcblk0 which is empty.

libre@libre-computer:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 28.9G 0 disk ├─sda1 8:1 1 255M 0 part /boot/efi ├─sda2 8:2 1 27.8G 0 part / └─sda3 8:3 1 872M 0 part [SWAP] mmcblk0 179:0 0 7.3G 0 disk mmcblk0boot0 179:32 0 4M 1 disk mmcblk0boot1 179:64 0 4M 1 disk

The lc_distro_transfer utility is used to copy the OS image over to the eMMC module. It is possible to run the program in a semi-interactive way to build up the full command needed to copy the image.

libre@libre-computer:~$ sudo lc_distro_transfer [sudo] password for libre: computer this is not echoed to the screen Available Vendor/Model List: libre-computer/aml-s805x-ac libre@libre-computer:~$ sudo lc_distro_transfer libre-computer/aml-s805x-ac Available Block Device List: /dev/mmcblk0 emmc /dev/sda libre@libre-computer:~$ sudo lc_distro_transfer libre-computer/aml-s805x-ac /dev/mmcblk0 Transferable Distro List: lc-debian-9-headless libre@libre-computer:~$ sudo lc_distro_transfer libre-computer/aml-s805x-ac /dev/mmcblk0 lc-debian-9-headless 1+0 records in 1+0 records out 1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.0305297 s, 34.3 MB/s Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x7849383b. Command (m for help): Created a new DOS disklabel with disk identifier 0x8a6ed536. Command (m for help): Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Partition number (1-4, default 1): First sector (2048-15269887, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-15269887, default 15269887): Created a new partition 1 of type 'Linux' and of size 255 MiB. Command (m for help): Selected partition 1 The bootable flag on partition 1 is enabled now. Command (m for help): Selected partition 1 Partition type (type L to list all types): Changed type of partition 'Linux' to 'EFI (FAT-12/16/32)'. Command (m for help): Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): Partition number (2-4, default 2): First sector (524288-15269887, default 524288): Last sector, +sectors or +size{K,M,G,T,P} (524288-15269887, default 15269887): Created a new partition 2 of type 'Linux' and of size 7 GiB. Command (m for help): Disk /dev/mmcblk0: 7.3 GiB, 7818182656 bytes, 15269888 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x8a6ed536 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 * 2048 524287 522240 255M ef EFI (FAT-12/16/32) /dev/mmcblk0p2 524288 15269887 14745600 7G 83 Linux Command (m for help): The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. mkfs.fat 4.1 (2017-01-24) btrfs-progs v4.7.3 See http://btrfs.wiki.kernel.org for more information. Detected a SSD, turning off metadata duplication. Mkfs with -m dup if you want to force metadata duplication. Label: SYSTEM UUID: Node size: 16384 Sector size: 4096 Filesystem size: 7.03GiB Block group profiles: Data: single 8.00MiB Metadata: single 8.00MiB System: single 4.00MiB SSD detected: yes Incompat features: extref, skinny-metadata Number of devices: 1 Devices: ID SIZE PATH 1 7.03GiB /dev/mmcblk0p2 At subvol /tmp/tmp.KevI54w60Y/@lc-debian-9-headless At subvol @lc-debian-9-headless 539MiB [9.87MiB/s] [====================================================================> ] 52% Create a snapshot of '/tmp/tmp.ALK3IJXKmi/@lc-debian-9-headless' in '/tmp/tmp.ALK3IJXKmi/@' /usr/sbin/grub-install Installing for arm64-efi platform. Installation finished. No error reported. Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.19.57+ Found initrd image: /boot/initrd.img-4.19.57+ done DEVICE /dev/mmcblk0 READY! libre@libre-computer:~$ lsblk just curious! NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 28.9G 0 disk ├─sda1 8:1 1 255M 0 part /boot/efi ├─sda2 8:2 1 27.8G 0 part / └─sda3 8:3 1 872M 0 part [SWAP] mmcblk0 179:0 0 7.3G 0 disk ├─mmcblk0p1 179:1 0 255M 0 part └─mmcblk0p2 179:2 0 7G 0 part mmcblk0boot0 179:32 0 4M 1 disk mmcblk0boot1 179:64 0 4M 1 disk

I decided to shutdown the system, remove the USB stick and restart the La Frite to check that booting from the eMMC module was now possible.

libre@libre-computer:~$ sudo shutdown now Connection to 192.168.1.126 closed by remote host. Connection to 192.168.1.126 closed. wait a while, then turn power off and remove the USB stick, turn the power on and wait until booting is completed michel@hp:~$ ssh libre@192.168.1.126 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:8045VFRsnB/5iIc4SYf2pYIdusye3uzFepKfOm6LnZQ. Please contact your system administrator. Add correct host key in /home/michel/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/michel/.ssh/known_hosts:52 remove with: ssh-keygen -f "/home/michel/.ssh/known_hosts" -R "192.168.0.126" ECDSA host key for 192.168.1.126 has changed and you have requested strict checking. Host key verification failed. michel@hp:~$ ssh-keygen -f "/home/michel/.ssh/known_hosts" -R "192.168.0.126" # Host 192.168.1.126 found: line 52 /home/michel/.ssh/known_hosts updated. Original contents retained as /home/michel/.ssh/known_hosts.old michel@hp:~$ ssh libre@192.168.1.126 The authenticity of host '192.168.0.126 (192.168.1.126)' can't be established. ECDSA key fingerprint is SHA256:8045VFRsnB/5iIc4SYf2pYIdusye3uzFepKfOm6LnZQ. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.126' (ECDSA) to the list of known hosts. libre@192.168.0.126's password: computer this is not echoed to the screen Linux libre-computer 4.19.57+ #55 SMP PREEMPT Thu Jul 4 13:38:48 EDT 2019 aarch64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. libre@libre-computer:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 7.3G 0 disk ├─mmcblk0p1 179:1 0 255M 0 part /boot/efi ├─mmcblk0p2 179:2 0 6.3G 0 part / └─mmcblk0p3 179:3 0 800M 0 part [SWAP] mmcblk0boot0 179:32 0 4M 1 disk mmcblk0boot1 179:64 0 4M 1 disk s libre@libre-computer:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 352M 0 352M 0% /dev tmpfs 97M 2.8M 94M 3% /run /dev/mmcblk0p2 6.3G 392M 5.7G 7% / tmpfs 483M 0 483M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 483M 0 483M 0% /sys/fs/cgroup /dev/mmcblk0p1 255M 212K 255M 1% /boot/efi tmpfs 97M 0 97M 0% /run/user/1000

It was possible to boot from eMMC module. The root partition is 6.3 GB of which 93% is free. There is also a 800 MB swap partition.

Some basic steps toc

The image copied to the eMMC module did not include upgrades done to the image on the USB thumb drive.

libre@libre-computer:~$ sudo apt update Get:1 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB] ...Reading state information... Done 1 package can be upgraded. Run 'apt list --upgradable' to see it. libre@libre-computer:~$ sudo apt upgrade -y Reading package lists... Done ... Removing obsolete conffile /etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg ... Removing obsolete conffile /etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg ...

This is a rather bare distribution.

libre@libre-computer:~$ sudo dpkg-query -l ... Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-==========================-==================-==================-========================================================= ii adduser 3.115 all add and remove users and groups ii apt 1.4.9 arm64 commandline package manager ii apt-utils 1.4.9 arm64 package management related utility programs ii base-files 9.9+deb9u9 arm64 Debian base system miscellaneous files ii base-passwd 3.5.43 arm64 Debian base system master password and group files ii bash 4.4-5 arm64 GNU Bourne Again SHell ii bluez-firmware 1.2-3 all Firmware for Bluetooth devices ii bsdmainutils 9.0.12+nmu1 arm64 collection of more utilities from FreeBSD ii bsdutils 1:2.29.2-1+deb9u1 arm64 basic utilities from 4.4BSD-Lite ii btrfs-progs 4.7.3-1 arm64 Checksumming Copy on Write Filesystem utilities ii btrfs-tools 4.7.3-1 arm64 transitional dummy package ii busybox 1:1.22.0-19+b3 arm64 Tiny utilities for small and embedded systems ii coreutils 8.26-3 arm64 GNU core utilities ii cpio 2.11+dfsg-6 arm64 GNU cpio -- a program to manage archives of files ii cron 3.0pl1-128+deb9u1 arm64 process scheduling daemon ii dash 0.5.8-2.4 arm64 POSIX-compliant shell ii dbus 1.10.28-0+deb9u1 arm64 simple interprocess messaging system (daemon and utilitie ii debconf 1.5.61 all Debian configuration management system ii debconf-i18n 1.5.61 all full internationalization support for debconf ii debian-archive-keyring 2017.5 all GnuPG archive keys of the Debian archive ii debianutils 4.8.1.1 arm64 Miscellaneous utilities specific to Debian ii diffutils 1:3.5-3 arm64 File comparison utilities ii dmidecode 3.0-4 arm64 SMBIOS/DMI table decoder ii dmsetup 2:1.02.137-2 arm64 Linux Kernel Device Mapper userspace library ii dosfstools 4.1-1 arm64 utilities for making and checking MS-DOS FAT filesystems ii dpkg 1.18.25 arm64 Debian package management system ii e2fslibs:arm64 1.43.4-2 arm64 ext2/ext3/ext4 file system libraries ii e2fsprogs 1.43.4-2 arm64 ext2/ext3/ext4 file system utilities ii efibootmgr 14-2 arm64 Interact with the EFI Boot Manager ii ethtool 1:4.8-1+b1 arm64 display or change Ethernet device settings ii findutils 4.6.0+git+20161106 arm64 utilities for finding files--find, xargs ii firmware-amd-graphics 20161130-5 all Binary firmware for AMD/ATI graphics chips ii firmware-atheros 20161130-5 all Binary firmware for Atheros wireless cards ii firmware-brcm80211 20161130-5 all Binary firmware for Broadcom 802.11 wireless cards ii firmware-libertas 20161130-5 all Binary firmware for Marvell wireless cards ii firmware-linux 20161130-5 all Binary firmware for various drivers in the Linux kernel ( ii firmware-linux-free 3.4 all Binary firmware for various drivers in the Linux kernel ii firmware-linux-nonfree 20161130-5 all Binary firmware for various drivers in the Linux kernel ( ii firmware-misc-nonfree 20161130-5 all Binary firmware for various drivers in the Linux kernel ii firmware-realtek 20161130-5 all Binary firmware for Realtek wired/wifi/BT adapters ii firmware-ti-connectivity 20161130-5 all Binary firmware for TI Connectivity wifi and BT/FM/GPS ad ii firmware-zd1211 1:1.5-4 all binary firmware for the zd1211rw wireless driver ii gcc-6-base:arm64 6.3.0-18+deb9u1 arm64 GCC, the GNU Compiler Collection (base package) ii gdisk 1.0.1-1 arm64 GPT fdisk text-mode partitioning tool ii gettext-base 0.19.8.1-2 arm64 GNU Internationalization utilities for the base system ii gnupg 2.1.18-8~deb9u4 arm64 GNU privacy guard - a free PGP replacement ii gnupg-agent 2.1.18-8~deb9u4 arm64 GNU privacy guard - cryptographic agent ii gpgv 2.1.18-8~deb9u4 arm64 GNU privacy guard - signature verification tool ii grep 2.27-2 arm64 GNU grep, egrep and fgrep ii groff-base 1.22.3-9 arm64 GNU troff text-formatting system (base system components) ii grub-common 2.02~beta3-5+deb9u arm64 GRand Unified Bootloader (common files) ii grub-efi-arm64 2.02~beta3-5+deb9u arm64 GRand Unified Bootloader, version 2 (ARM64 UEFI version) ii grub-efi-arm64-bin 2.02~beta3-5+deb9u arm64 GRand Unified Bootloader, version 2 (ARM64 UEFI binaries) ii grub2-common 2.02~beta3-5+deb9u arm64 GRand Unified Bootloader (common files for version 2) ii gzip 1.6-5+b1 arm64 GNU compression utilities ii hostname 3.18+b1 arm64 utility to set/show the host name or domain name ii ifupdown 0.8.19 arm64 high level tools to configure network interfaces ii init 1.48 arm64 metapackage ensuring an init system is installed ii init-system-helpers 1.48 all helper tools for all init systems ii initramfs-tools 0.130 all generic modular initramfs generator (automation) ii initramfs-tools-core 0.130 all generic modular initramfs generator (core tools) ii iproute2 4.9.0-1+deb9u1 arm64 networking and traffic control tools ii iptables 1.6.0+snapshot2016 arm64 administration tools for packet filtering and NAT ii iputils-ping 3:20161105-1 arm64 Tools to test the reachability of network hosts ii isc-dhcp-client 4.3.5-3+deb9u1 arm64 DHCP client for automatically obtaining an IP address ii isc-dhcp-common 4.3.5-3+deb9u1 arm64 common manpages relevant to all of the isc-dhcp packages ii klibc-utils 2.0.4-9 arm64 small utilities built with klibc for early boot ii kmod 23-2 arm64 tools for managing Linux kernel modules ii krb5-locales 1.15-1+deb9u1 all internationalization support for MIT Kerberos ii libacl1:arm64 2.2.52-3+b1 arm64 Access control list shared library ii libapparmor1:arm64 2.11.0-3+deb9u2 arm64 changehat AppArmor library ii libapt-inst2.0:arm64 1.4.9 arm64 deb package format runtime library ii libapt-pkg5.0:arm64 1.4.9 arm64 package management runtime library ii libassuan0:arm64 2.4.3-2 arm64 IPC library for the GnuPG components ii libattr1:arm64 1:2.4.47-2+b2 arm64 Extended attribute shared library ii libaudit-common 1:2.6.7-2 all Dynamic library for security auditing - common files ii libaudit1:arm64 1:2.6.7-2 arm64 Dynamic library for security auditing ii libblkid1:arm64 2.29.2-1+deb9u1 arm64 block device ID library ii libbsd0:arm64 0.8.3-1 arm64 utility functions from BSD systems - shared library ii libbz2-1.0:arm64 1.0.6-8.1 arm64 high-quality block-sorting file compressor library - runt ii libc-bin 2.24-11+deb9u4 arm64 GNU C Library: Binaries ii libc-l10n 2.24-11+deb9u4 all GNU C Library: localization files ii libc6:arm64 2.24-11+deb9u4 arm64 GNU C Library: Shared libraries ii libcap-ng0:arm64 0.7.7-3+b1 arm64 An alternate POSIX capabilities library ii libcap2:arm64 1:2.25-1 arm64 POSIX 1003.1e capabilities (library) ii libcomerr2:arm64 1.43.4-2 arm64 common error description library ii libcryptsetup4:arm64 2:1.7.3-4 arm64 disk encryption support - shared library ii libdb5.3:arm64 5.3.28-12+deb9u1 arm64 Berkeley v5.3 Database Libraries [runtime] ii libdbus-1-3:arm64 1.10.28-0+deb9u1 arm64 simple interprocess messaging system (library) ii libdebconfclient0:arm64 0.227 arm64 Debian Configuration Management System (C-implementation ii libdevmapper1.02.1:arm64 2:1.02.137-2 arm64 Linux Kernel Device Mapper userspace library ii libdns-export162 1:9.10.3.dfsg.P4-1 arm64 Exported DNS Shared Library ii libedit2:arm64 3.1-20160903-3 arm64 BSD editline and history libraries ii libefiboot1:arm64 30-2 arm64 Library to manage UEFI variables ii libefivar1:arm64 30-2 arm64 Library to manage UEFI variables ii libelf1:arm64 0.168-1 arm64 library to read and write ELF files ii libestr0 0.1.10-2 arm64 Helper functions for handling strings (lib) ii libexpat1:arm64 2.2.0-2+deb9u2 arm64 XML parsing C library - runtime library ii libfastjson4:arm64 0.99.4-1 arm64 fast json library for C ii libfdisk1:arm64 2.29.2-1+deb9u1 arm64 fdisk partitioning library ii libffi6:arm64 3.2.1-6 arm64 Foreign Function Interface library runtime ii libfreetype6:arm64 2.6.3-3.2 arm64 FreeType 2 font engine, shared library files ii libfuse2:arm64 2.9.7-1+deb9u2 arm64 Filesystem in Userspace (library) ii libgcc1:arm64 1:6.3.0-18+deb9u1 arm64 GCC support library ii libgcrypt20:arm64 1.7.6-2+deb9u3 arm64 LGPL Crypto library - runtime library ii libgdbm3:arm64 1.8.3-14 arm64 GNU dbm database routines (runtime version) ii libgmp10:arm64 2:6.1.2+dfsg-1 arm64 Multiprecision arithmetic library ii libgnutls30:arm64 3.5.8-5+deb9u4 arm64 GNU TLS library - main runtime library ii libgpg-error0:arm64 1.26-2 arm64 library for common error values and messages in GnuPG com ii libgpm2:arm64 1.20.4-6.2+b1 arm64 General Purpose Mouse - shared library ii libgssapi-krb5-2:arm64 1.15-1+deb9u1 arm64 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism ii libhogweed4:arm64 3.3-1+b2 arm64 low level cryptographic library (public-key cryptos) ii libidn11:arm64 1.33-1 arm64 GNU Libidn library, implementation of IETF IDN specificat ii libidn2-0:arm64 0.16-1+deb9u1 arm64 Internationalized domain names (IDNA2008) library ii libip4tc0:arm64 1.6.0+snapshot2016 arm64 netfilter libip4tc library ii libip6tc0:arm64 1.6.0+snapshot2016 arm64 netfilter libip6tc library ii libiptc0:arm64 1.6.0+snapshot2016 arm64 netfilter libiptc library ii libisc-export160 1:9.10.3.dfsg.P4-1 arm64 Exported ISC Shared Library ii libk5crypto3:arm64 1.15-1+deb9u1 arm64 MIT Kerberos runtime libraries - Crypto Library ii libkeyutils1:arm64 1.5.9-9 arm64 Linux Key Management Utilities (library) ii libklibc 2.0.4-9 arm64 minimal libc subset for use with initramfs ii libkmod2:arm64 23-2 arm64 libkmod shared library ii libkrb5-3:arm64 1.15-1+deb9u1 arm64 MIT Kerberos runtime libraries ii libkrb5support0:arm64 1.15-1+deb9u1 arm64 MIT Kerberos runtime libraries - Support library ii libksba8:arm64 1.3.5-2 arm64 X.509 and CMS support library ii liblocale-gettext-perl 1.07-3+b1 arm64 module using libc functions for internationalization in P ii liblogging-stdlog0:arm64 1.0.5-2+b2 arm64 easy to use and lightweight logging library ii liblognorm5:arm64 2.0.1-1.1+b1 arm64 log normalizing library ii liblz4-1:arm64 0.0~r131-2+b1 arm64 Fast LZ compression algorithm library - runtime ii liblzma5:arm64 5.2.2-1.2+b1 arm64 XZ-format compression library ii liblzo2-2:arm64 2.08-1.2+b2 arm64 data compression library ii libmnl0:arm64 1.0.4-2 arm64 minimalistic Netlink communication library ii libmount1:arm64 2.29.2-1+deb9u1 arm64 device mounting library ii libncurses5:arm64 6.0+20161126-1+deb arm64 shared libraries for terminal handling ii libncursesw5:arm64 6.0+20161126-1+deb arm64 shared libraries for terminal handling (wide character su ii libnetfilter-conntrack3:ar 1.0.6-2 arm64 Netfilter netlink-conntrack library ii libnettle6:arm64 3.3-1+b2 arm64 low level cryptographic library (symmetric and one-way cr ii libnewt0.52:arm64 0.52.19-1+b1 arm64 Not Erik's Windowing Toolkit - text mode windowing with s ii libnfnetlink0:arm64 1.0.1-3 arm64 Netfilter netlink library ii libnpth0:arm64 1.3-1 arm64 replacement for GNU Pth using system threads ii libp11-kit0:arm64 0.23.3-2 arm64 library for loading and coordinating access to PKCS#11 mo ii libpam-modules:arm64 1.1.8-3.6 arm64 Pluggable Authentication Modules for PAM ii libpam-modules-bin 1.1.8-3.6 arm64 Pluggable Authentication Modules for PAM - helper binarie ii libpam-runtime 1.1.8-3.6 all Runtime support for the PAM library ii libpam-systemd:arm64 232-25+deb9u11 arm64 system and service manager - PAM module ii libpam0g:arm64 1.1.8-3.6 arm64 Pluggable Authentication Modules library ii libparted2:arm64 3.2-17 arm64 disk partition manipulator - shared library ii libpcre3:arm64 2:8.39-3 arm64 Old Perl 5 Compatible Regular Expression Library - runtim ii libpipeline1:arm64 1.4.1-2 arm64 pipeline manipulation library ii libpng16-16:arm64 1.6.28-1+deb9u1 arm64 PNG library - runtime (version 1.6) ii libpopt0:arm64 1.16-10+b2 arm64 lib for parsing cmdline parameters ii libprocps6:arm64 2:3.3.12-3+deb9u1 arm64 library for accessing process information from /proc ii libpsl5:arm64 0.17.0-3 arm64 Library for Public Suffix List (shared libraries) ii libreadline7:arm64 7.0-3 arm64 GNU readline and history libraries, run-time libraries ii libseccomp2:arm64 2.3.1-2.1+deb9u1 arm64 high level interface to Linux seccomp filter ii libselinux1:arm64 2.6-3+b3 arm64 SELinux runtime shared libraries ii libsemanage-common 2.6-2 all Common files for SELinux policy management libraries ii libsemanage1:arm64 2.6-2 arm64 SELinux policy management library ii libsepol1:arm64 2.6-2 arm64 SELinux library for manipulating binary security policies ii libslang2:arm64 2.3.1-5 arm64 S-Lang programming library - runtime version ii libsmartcols1:arm64 2.29.2-1+deb9u1 arm64 smart column output alignment library ii libsqlite3-0:arm64 3.16.2-5+deb9u1 arm64 SQLite 3 shared library ii libss2:arm64 1.43.4-2 arm64 command-line interface parsing library ii libssl1.0.2:arm64 1.0.2s-1~deb9u1 arm64 Secure Sockets Layer toolkit - shared libraries ii libssl1.1:arm64 1.1.0k-1~deb9u1 arm64 Secure Sockets Layer toolkit - shared libraries ii libstdc++6:arm64 6.3.0-18+deb9u1 arm64 GNU Standard C++ Library v3 ii libsystemd0:arm64 232-25+deb9u11 arm64 systemd utility library ii libtasn1-6:arm64 4.10-1.1+deb9u1 arm64 Manage ASN.1 structures (runtime) ii libtext-charwidth-perl 0.04-7+b3 arm64 get display widths of characters on the terminal ii libtext-iconv-perl 1.7-5+b3 arm64 converts between character sets in Perl ii libtext-wrapi18n-perl 0.06-7.1 all internationalized substitute of Text::Wrap ii libtinfo5:arm64 6.0+20161126-1+deb arm64 shared low-level terminfo library for terminal handling ii libudev1:arm64 232-25+deb9u11 arm64 libudev shared library ii libunistring0:arm64 0.9.6+really0.9.3- arm64 Unicode string library for C ii libustr-1.0-1:arm64 1.0.4-6 arm64 Micro string library: shared library ii libuuid1:arm64 2.29.2-1+deb9u1 arm64 Universally Unique ID library ii libwrap0:arm64 7.6.q-26 arm64 Wietse Venema's TCP wrappers library ii libx11-6:arm64 2:1.6.4-3+deb9u1 arm64 X11 client-side library ii libx11-data 2:1.6.4-3+deb9u1 all X11 client-side library ii libxapian30:arm64 1.4.3-2+deb9u3 arm64 Search engine library ii libxau6:arm64 1:1.0.8-1 arm64 X11 authorisation library ii libxcb1:arm64 1.12-1 arm64 X C Binding ii libxdmcp6:arm64 1:1.1.2-3 arm64 X11 Display Manager Control Protocol library ii libxext6:arm64 2:1.3.3-1+b2 arm64 X11 miscellaneous extension library ii libxmuu1:arm64 2:1.1.2-2 arm64 X11 miscellaneous micro-utility library ii libxtables12:arm64 1.6.0+snapshot2016 arm64 netfilter xtables library ii linux-base 4.5 all Linux image base package ii linux-headers-4.19.57+ 4.19.57+-55 arm64 Linux kernel headers for 4.19.57+ on arm64 ii linux-image-4.19.57+ 4.19.57+-55 arm64 Linux kernel, version 4.19.57+ ii locales 2.24-11+deb9u4 all GNU C Library: National Language (locale) data [support] ii login 1:4.4-4.1 arm64 system login tools ii logrotate 3.11.0-0.1 arm64 Log rotation utility ii lsb-base 9.20161125 all Linux Standard Base init script functionality ii mawk 1.3.3-17+b3 arm64 a pattern scanning and text processing language ii mount 2.29.2-1+deb9u1 arm64 tools for mounting and manipulating filesystems ii multiarch-support 2.24-11+deb9u4 arm64 Transitional package to ensure multiarch compatibility ii nano 2.7.4-1 arm64 small, friendly text editor inspired by Pico ii ncurses-base 6.0+20161126-1+deb all basic terminal type definitions ii ncurses-bin 6.0+20161126-1+deb arm64 terminal-related programs and man pages ii ncurses-term 6.0+20161126-1+deb all additional terminal type definitions ii netbase 5.4 all Basic TCP/IP networking system ii openssh-client 1:7.4p1-10+deb9u6 arm64 secure shell (SSH) client, for secure access to remote ma ii openssh-server 1:7.4p1-10+deb9u6 arm64 secure shell (SSH) server, for secure access from remote ii openssh-sftp-server 1:7.4p1-10+deb9u6 arm64 secure shell (SSH) sftp server module, for SFTP access fr ii os-prober 1.76~deb9u1 arm64 utility to detect other OSes on a set of drives ii parted 3.2-17 arm64 disk partition manipulator ii passwd 1:4.4-4.1 arm64 change and administer password and group data ii perl-base 5.24.1-3+deb9u5 arm64 minimal Perl system ii pinentry-curses 1.0.0-2 arm64 curses-based PIN or pass-phrase entry dialog for GnuPG ii procps 2:3.3.12-3+deb9u1 arm64 /proc file system utilities ii pv 1.6.0-1+b1 arm64 Shell pipeline element to meter data passing through ii readline-common 7.0-3 all GNU readline and history libraries, common files ii rng-tools 2-unofficial-mt.14 arm64 Daemon to use a Hardware TRNG ii rsyslog 8.24.0-1 arm64 reliable system and kernel logging daemon ii sed 4.4-1 arm64 GNU stream editor for filtering/transforming text ii sensible-utils 0.0.9+deb9u1 all Utilities for sensible alternative selection ii ssh 1:7.4p1-10+deb9u6 all secure shell client and server (metapackage) ii sudo 1.8.19p1-2.1 arm64 Provide limited super user privileges to specific users ii systemd 232-25+deb9u11 arm64 system and service manager ii systemd-sysv 232-25+deb9u11 arm64 system and service manager - SysV links ii sysvinit-utils 2.88dsf-59.9 arm64 System-V-like utilities ii tar 1.29b-1.1 arm64 GNU version of the tar archiving utility ii tasksel 3.39 all tool for selecting tasks for installation on Debian syste ii tasksel-data 3.39 all official tasks used for installation of Debian systems ii tcpd 7.6.q-26 arm64 Wietse Venema's TCP wrapper utilities ii tzdata 2019a-0+deb9u1 all time zone and daylight-saving time data ii ucf 3.0036 all Update Configuration File(s): preserve user changes to co ii udev 232-25+deb9u11 arm64 /dev/ and hotplug management daemon ii util-linux 2.29.2-1+deb9u1 arm64 miscellaneous system utilities ii vim 2:8.0.0197-4+deb9u arm64 Vi IMproved - enhanced vi editor ii vim-common 2:8.0.0197-4+deb9u all Vi IMproved - Common files ii vim-runtime 2:8.0.0197-4+deb9u all Vi IMproved - Runtime files ii vim-tiny 2:8.0.0197-4+deb9u arm64 Vi IMproved - enhanced vi editor - compact version ii wget 1.18-5+deb9u3 arm64 retrieves files from the web ii whiptail 0.52.19-1+b1 arm64 Displays user-friendly dialog boxes from shell scripts ii xauth 1:1.0.9-1+b2 arm64 X authentication utility ii xxd 2:8.0.0197-4+deb9u arm64 tool to make (or reverse) a hex dump ii zlib1g:arm64 1:1.2.8.dfsg-5 arm64 compression library - runtime

There is no Python and no nice configuration utility such as Raspi-config or Armbian-config. Everything will have to be done the old-fashioned way: by hand.

The first thing to do is to change the password. And while at it, I edited the sudoers file so that a password will no longer be required when user libre uses the sudo prefix.

libre@libre-computer:~$ passwd Changing password for libre. (current) UNIX password: computer this is not echoed to the screen Enter new UNIX password: my_new_pwd this is not echoed to the screen Retype new UNIX password: my_new_pwd this is not echoed to the screen passwd: password updated successfully libre@libre-computer:~$ sudo nano /etc/sudoers

Add the following line in the file.

libre ALL=(ALL:ALL) NOPASSWD: ALL

I also decided to install the avahi-daemon. This is included in Raspbian (but not Armbian) and it makes it easy to open an SSH session without knowning the IP address of the SBC. This is quite useful when the latter is running in headless fashion.

libre@libre-computer:~$ apt-cache policy avahi-daemon avahi-daemon: Installed: (none) Candidate: 0.6.32-2 Version table: 0.6.32-2 500 500 http://deb.debian.org/debian stretch/main arm64 Packages libre@libre-computer:~$ sudo apt install -y avahi-daemon

I also modified the configuration file so that avahi-daemon will publish the IP address as a workstation.

libre@libre-computer:~$ sudo nano /etc/avahi/avahi-daemon.conf
... [publish] ... publish-workstation=yes ...

Because avahi-daemon uses the hostname to create the .local device URL, it is best to change the default hostname just in case a second board from Libre Computer is installed on the local area network.

libre@libre-computer:~$ sudo hostnamectl set-hostname la-frite libre@libre-computer:~$ hostnamectl Static hostname: la-frite Icon name: computer ... Operating System: Debian GNU/Linux 9 (stretch) Kernel: Linux 4.19.57+ Architecture: arm64 libre@libre-computer:~$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 libre-computer ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters

The name has not been changed in the second line of the hosts file. This can cause problems, so the file /etc/hosts/ was updated. Time to reboot and test that this is all working.

libre@la-frite:~$ sudo reboot Connection to 192.168.1.126 closed by remote host. Connection to 192.168.1.126 closed. wait some time michel@hp:~$ ssh libre@la-frite.local @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The ECDSA host key for la-frite.local has changed, and the key for the corresponding IP address 192.168.0.126 is unchanged. This could either mean that DNS SPOOFING is happening or the IP address for the host and its host key have changed at the same time. Offending key for IP in /home/michel/.ssh/known_hosts:55 remove with: ssh-keygen -f "/home/michel/.ssh/known_hosts" -R "192.168.0.126" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:Z7zPHJT+3bpk3LBaq73YTGehNLyJhDK8Jgfsl+mwQiw. Please contact your system administrator. Add correct host key in /home/michel/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/michel/.ssh/known_hosts:53 remove with: ssh-keygen -f "/home/michel/.ssh/known_hosts" -R "la-frite.local" ECDSA host key for la-frite.local has changed and you have requested strict checking. Host key verification failed. michel@hp:~$ ssh-keygen -f "/home/michel/.ssh/known_hosts" -R "la-frite.local" # Host la-frite.local found: line 53 /home/michel/.ssh/known_hosts updated. Original contents retained as /home/michel/.ssh/known_hosts.old michel@hp:~$ ssh libre@la-frite.local The authenticity of host 'la-frite.local (192.168.0.126)' can't be established. ECDSA key fingerprint is SHA256:9aBYTGehNLyJhDK8Z7l+mwQiwzPHJT+3bpk3LBaJgfs. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'la-frite.local' (ECDSA) to the list of known hosts. libre@la-frite.local's password: my_new_pwd not echoed to screen Linux la-frite 4.19.57+ #55 SMP PREEMPT Thu Jul 4 13:38:48 EDT 2019 aarch64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Jul 11 21:49:28 2019 from 192.168.0.118

Wi-Fi toc

The La Frite does not come with wireless connectivity.

libre@la-frite:~$ ip -4 address 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 inet 192.168.0.126/24 brd 192.168.0.255 scope global eth0 valid_lft forever preferred_lft forever

I hot plugged in a Wi-Fi dongle and in a short order, the system found it.

libre@la-frite:~$ ip address ... 3: wlxc8fe30ffdb63: mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether c8:fe:30:ff:db:63 brd ff:ff:ff:ff:ff:ff

Of course the link is DOWN. I think the simplest way to get WI-FI running was to install Network Manager, although in the long run I may go a different route (WPA Supplicant et al).

libre@la-frite:~$ sudo apt install -y network-manager Reading package lists... Done ... Need to get 12.8 MB of archives. After this operation, 49.3 MB of additional disk space will be used. ... Processing triggers for systemd (232-25+deb9u11) ... Processing triggers for dbus (1.10.28-0+deb9u1) ...

I used the text based graphical network manager utility to setup the Wi-Fi connection.

libre@la-frite:~$ sudo nmtui

First activate the connection.

Select the WI-FI network to activate.

You will then be asked for the password and then Network Manager will display a Connecting message and once that is done a star will appear to the left of the network name. Go back to the start screen.

Quit the application.

Checking that both interfaces are up.

libre@la-frite:~$ ip -4 address 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 inet 192.168.1.126/24 brd 192.168.0.255 scope global eth0 valid_lft forever preferred_lft forever 3: wlxc8fe30ffdb63: mtu 1500 qdisc mq state UP group default qlen 1000 inet 192.168.1.127/24 brd 192.168.0.255 scope global dynamic wlxc8fe30ffdb63 valid_lft 604743sec preferred_lft 604743sec

I have not thoroughly tested but it does appear that the WiFi dongle must be connected into the USB port furthest from the IR receiver and GPIO double row header (the same USB port as used for the USB stick previously) if Ethernet is also connected or else the system will not boot properly. Also it seems that the wireless interface will not come up when powering up the board if Ethernet is not connected. Shades of the Orange Pi Zero? For the time being I will put that down to my slapdash non installation of Network Manager.

System Temperature toc

The CPU temperature can be read and the board was relatively cool, initially when only the Ethernet connection was enabled.

libre@libre-computer:~$ cat /sys/class/hwmon/hwmon0/temp1_input 44000

I did manage to get the temperature up to 45°C when transferring part of the source files for this site. With the USB-WIFI dongle, the temperature is closer to 49°C: and it looks like the memory chips, DRAM and eMMC are running somewhat hotter than the SoC.

Headers and UART toc

The photograph of La Frite shown on the Libre Computer web site and elsewhere is outdated. Instead of three three pin headers and a single two pin header, there are two four pin headers and a three pin header with a jumper. I have not found any information about the latter. I had hoped that one of the other headers was a UART port but that is not the case. From the picture on the box in which La Frite was shipped, the four pin header near the micro-USB power port is labelled CVBS which might an Audio/Video port (Composite Video Baseband Signal) as an article by Jean-Luc Aufranc (CNXSoft) seems to confirm. The other 4 pin is identified as an ADC header which would be a connection to analog-to-digital converter (or converters) on the SoC.

On the forum there is a topic of interest, UART/Serial Connection in which loverpi (the "official voice" of whom exactly ?) writes the following.

For UART, it's pin 3,5,6 for TX,RX,GND respectively

I could not find pinouts for any header of La Frite but there is much more information for its big brother (or should I say mother) Le Potato including a GPIO Headers Reference for AML-S905X-CC. It made sense to assume that pin 1 of the 40 pin header would be the pin nearest the IR receiver on La Frite as on Le Potato. Nevertheless, I powered down the SBC and used an ohmmeter to identify the orientation of the 40 pin header by checking that the ground pins were all connected together. The assumption was right. The actual pinout can be obtained from a document entitled AML-S905X-CC-V1.0A Headers from which we get the following.

Pin 3 GPIOA0_5 (GPIO 5) is UART_RX_A0_B Pin 5 GPIOA0_4 (GPIO 4) is UART_TX_A0_B Pin 6 is Ground

As usual, the USB-TTL converter TX and RX lines need to be connected to the RX and TX ports of the SoC (which is what loverpi meant that the pins 3 and 5 were for TX and RX). So I connected the serial converter cable as shown below.

connection diagram

It was then that I noticed that a little triangle identified pin 1 of the 40 pin header.

When I connected the cable to a USB port on the destkop computer I noticed that it showed up as device ttyUSB0. So I started screen with the following command, more or less guessing what the right baud rate would be.

michel@hp:~$ screen /dev/ttyUSB0 115200

The nice part of having a UART connection when running in headless fashion is that it is possible to see the boot sequence. At one point in that sequence the following is displayed.

Autoboot in 1 seconds
I tried pressing the U-Boot button (it's the only button on La Frite) when that message came up without managing to get the U-Boot prompt. Then I tried pressing twice and then I tried booting with the button depressed without any more success. Apparently, the booting process can be interrupted by pressing the Esc key on a connected keyboard (see the loverpi message referenced above), but I did not have a keyboard on hand to test this.

Installing Another Image: Ubuntu toc

As before, download the desired OS image from the loverpi site. I tried the first Ubuntu Bionic headless image in the list at the loverpi download page. The next step is to use Balena Etcher to burn the image onto a USB thumb drive. Placing the USB drive into the proper USB port (the one furthest from the 40 pin header) and rebooting changed nothing. La Frite booted from the Debian image on the eMMC module.

If I could interrupt the boot sequence, it would be possible to instruct U-Boot to boot from the USB drive. But as explained above I cannot do that. However it is possible to "format" the eMMC module so that U-Boot will no longer find the boot partition and it will then search for an OS image on the USB drive.

libre@la-frite:~$ sudo dd if=/dev/zero of=/dev/mmcblk0 bs=10M count=1 1+0 records in 10485760 bytes (10 MB, 10 MiB) copied, 0.0184574 s, 568 MB/s libre@la-frite:~$ sudo reboot ... U-Boot 2019.04+ (Apr 11 2019 - 01:57:41 -0400) Libre Computer AML-S805X-AC Model: Libre Computer Board AML-S805X-AC DRAM: 1 GiB MMC: mmc@74000: 0 Loading Environment from SPI Flash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial ** No device specified ** [BL31]: tee size: 0 using random mac address: 18:66:C7:61:81:fd ** No partition table - mmc 0 ** Of course not, it was just erased! Error: could not access storage. Net: eth0: ethernet@c9410000 starting USB... USB0: Register 2000140 NbrPorts 2 Starting the controller USB XHCI 1.00 scanning bus 0 for devices... 2 USB Device(s) found scanning usb for storage devices... 1 Storage Device(s) found Autoboot in 1 seconds switch to partitions #0, OK .... Booting from the USB drive Ubuntu 18.04.2 LTS libre-computer ttyAML0 libre-computer login: libre Password: computer not echoed Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.19.57+ aarch64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. To run a command as administrator (user "root"), use "sudo ". See "man sudo_root" for details. libre@libre-computer:~$ cat /etc/*version buster/sid libre@libre-computer:~$ cat /etc/*release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS" NAME="Ubuntu" VERSION="18.04.2 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.2 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic libre@libre-computer:~$ lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: ARM Model: 4 Model name: Cortex-A53 Stepping: r0p4 BogoMIPS: 48.00 L1d cache: unknown size L1i cache: unknown size L2 cache: unknown size NUMA node0 CPU(s): 0-3 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid

The above is captured from the UART connection. It would not be possible to do this from a wireless connection as the Wi-Fi is not set up in the Ubuntu image.

Conclusion toc

There is much left to test and there the lack of information is disconcerting. For example, I could not find how to deal with the onboard LEDs. There is no specific configuration utility at least in the Debian image. This will make the board less user friendly for neophytes such as myself. This is surprising because Libre Computer is squarely aiming its board at the Raspberry Pi crowd. There may be problems with WiFi but the jury is still out on that score.

On the plus side, I found the system very responsive. Ethernet connections seem solid, Opening an SSH session was never a problem, file transfers with Filezilla occurred without problems. As far as I can tell, there are no delays or suspended operation of the avahi-daemon that have been plaguing the Orange Pi Zero purchased some time ago. Furthermore, it does seem that Libre Computer is busy releasing improved OS images. Perhaps the Ubuntu images already provide better support for the hardware; I need to look into that.

My first impression is that the little card has a lot of potential. Hopefully Libre Computer will release the information in the near future that will make it easier to fully exploit the hardware. It did say that La Frite was an Open source project on Kickstarter. Hopefully, I will not regret this purchase and I will remember why I ordered this in the first place.