Fedora works, what next

I managed to get fedora to boot (was not hard once I had it figured out…)

What I am interested in is if there is something more I need to do.

  • Anything regarding the device tree?
  • Anything regarding sensors?
    A lot of the docs assume an older kernel. I am now on 6.18, so I assume that many workarounds might not be needed anymore.

Also I see a new firmware here:

Is this something that is usable?

This one is usable, but it needs a bit more work before I am willing to make a formal release with it.
(This specific version was built to solve SFP issues with FreeBSD)
It includes new firmware components (TF-A and U-Boot) with patches I am staging for submission upstream, so some special features and edge case bugfixes are not present in this build.

If you are running a system with kernel >6.17 (including Fedora 43) you will be able to use the mainline kernel fan controller (emc2305) with this firmware.

This driver works differently to the out of tree one we published - it controls the fan duty cycle (0-100%) “open loop” instead of the RPM-based “closed loop” control we had.

The device tree included in this firmware includes some changes currently pending in the kernel.
A notable change (besides the fan setup) is to add line names to each GPIO which should make it easier to control cellular modems etc. I will update the manual with information on that in the near future.

The other sensors on the board aren’t available in the mainline kernel, these are available from our driver package.

Some like the pac1934 have industrial IO (IIO) which might be usable. There was an attempt to upstream another (emc181x) in the past but it didn’t go anywhere.

Thankfully, all the important things are now in the mainline kernel.

Some workarounds that are still needed on the Ten64 are:

  • IOMMU bypass mode needs to be disabled (arm-smmu.disable_bypass=0 on the kernel command line). NXP submitted a fix to the kernel a while ago but it does not work with EFI boot. There are various firmware workarounds I am looking into, but it isn’t a priority right now.
  • EFI variable support. Ten64 does not have a dedicated EFI variable storage, which can cause issues with distribution installers. The U-Boot community has come up with an alternative system, but I’m not sure if that has shipped in a major distribution yet.

Thanks for the info.

The missing EFI variable support means that you can no longer just do an ISO install, as this breaks the latest Anaconda. At least that was my experience.

What I did was in the end not that complicated.

I wrote the latest server image to the nvme disk from within the recovery system, and then copied over the GRUB loader.

export IMAGE=https://download.fedoraproject.org/pub/fedora/linux/releases/43/Server/aarch64/images/Fedora-Server-Host-Generic-43-1.6.aarch64.raw.xz
curl -L --output - $IMAGE | xzcat | dd of=/dev/nvme0n1 bs=4M
mount -t vfat /dev/nvme0n1p1 /mnt
cd /mnt/EFI/BOOT
cp grubaa64.efi BOOTAA64.EFI

Then I booted, and the grub menu came up, where I edited the boot command to add earlycon arm-smmu.disable_bypass=n

The system then boots, and with the sever image you get a setup menu where you can set the root password.

Then it was just a matter of ssh in to the box as root.

Edit the grub defautls:

./etc/default/grub

GRUB_CMDLINE_LINUX="console=ttyS0,115200 earlycon arm-smmu.disable_bypass=n"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

And run:

grub2-mkconfig -o /boot/grub2/grub.cfg

And I had a fedora system that would reboot cleanly…

I then my playbook that does all the usual stuff I do an all my fedora systems: firewall, network, hardening, creating non root admin user etc…

I will have a look at how to get the fan quieter next…