AML-A311D-CC Ethernet link down after boot

I’ve being using the bootloader on the SPI as documented in Libre Computer Board BIOS/Firmware Update Images

On my SD card, there’s no boot loader installed, there’s an EFI partition on it, which I created an EFI/arch directory, and copied the Image initramfs-linux.img to. (e.g. cp /boot/Image /boot/iniitramfs-linux.img /boot/efi/EFI/arch)

Then in the boot loader, I made an boot entry to boot that kernel.

  • UEFI Config
  • Add Boot Option
  •   Description: Arch Linux
      File: mmc 1:1/EFI\arch\Image
      Initrd File: mmc 1:1/EFI\arch\initramfs-linux.img
      Fdt File: mmc 1:1/dtb\amlogic\meson-g12b-a311d-libretech-cc.dtb
      Optional Data: root=/dev/mmcblk1p2 rw
    

Note 1: I have a weird setup, my EFI partition is on the SD card, and the root partition is on the eMMC. (That’s why you see mmcblk1p2, when it would be mmcblk0p2 if the root was also on the SD card.)

Note 2: Normally on the Libre Computer images, it uses UEFI to find the EFI system partition and boot into Grub as an EFI application, which then boots the kernel (the standard process in the x86_64 world). However, I didn’t feel like adding the extra Grub step in my ArchLinuxARM setup, so I just booted straight into the kernel (since the kernel image can be used as an EFI application directly)

Note 3: Since Libre Computer spent the effort to design their boards to work as an UEFI system, you should be able to use https://archboot.com/ to run an installer (like x86_64 world) as an EFI application, instead of dealing with prebuilt system images.

Just a heads up, I am hitting a bug with the SD card on warm reboots (e.g. systemctl reboot). In the upstream kernel, the SD card is using UHS modes which uses 1.8v signaling. However, when rebooting the SD card does not get powered off, so the card does not switch back to 3.3v signaling. (So I have to power off the board, and re-power the board)

I believe this is the workaround in the libre-computer kernel

Jonas tried to get this upstream…

…but it was never accepted.

So you may want to build the libre-computer LTS kernels instead of using the mainline linux-aarch64 kernel from ArchLinuxARM.