Armhf for Raspberry PI 3

Hello
before getting a PI4 I wanted to try out Openwrt on my Pi3 and noticed that it's built for Aarch64 (unless I'm mistaken of course)

I am surprised by this choice since most people are using the Pi 3 in 32 bits mode (armhf) because Ram is limited

  • what's the reason for this choice, is bringing the 64 bits build a real performance boost (I know that the Pi3 is not a great choice for a router anyway)
  • is the build chain easy and documented enough to do a personal 32 bits from the 64 bits existing build if I wanted one ?

That is not the reason people are using the Pi 3 in 32-bit mode.

The reason people are using the Pi 3 in 32-bit mode is that MOST distro vendors don't want to have separate Pi 3 and Pi 1/2 builds. Raspbian, for example, supports every Pi variant ever built to my knowledge with a single OS image that autodetects the appropriate variant and chooses device-specific code when necessary. However this sort of approach has limits, and one definite limitation is inability to mix architectures.

The Pi's backwards compatibility policy is great in many ways, but it does have its disadvantages, and failing to take full advantage of new hardware features/capabilities is one of them.

1 Like

See this page
scroll a bit and read:

The bigger tradeoff though is memory.
(...)
a Pi with only 1 GB of memory this is an extremely big trade off

It's quoted on this page that with such a system there is 150 Mb taken by the system in 32 bits mode, if system is 2 times bigger in 64 bits mode that's awful.
From the official issue , it seems not easy indeed to switch to 64 bits mode, but as it is, the issue is opened since more than 3 years. There don't seem to be so much interest.

So the first page you cite is an installation guide which provides no backup of their claims that aarch64 is fundamentally less memory efficient. Having dual-architecture IS definitely less memory efficient, but OpenWRT on Pi is NOT dual-architecture - it's 100% pure 64-bit.

As far as the second page you cite - if you are running anything with video then you're probably better served with a distribution other than OpenWRT. Note that there are other posts indicating that in general, 32->64 transitions lead to improvements in performance at least from the increased register width. https://www.cnx-software.com/2016/03/01/64-bit-arm-aarch64-instructions-boost-performance-by-15-to-30-compared-to-32-bit-arm-aarch32-instructions/ is one example cited.

In that thread they also raise a bunch of issues regarding multiarch - which again doesn't apply to pure AArch64 as in the case of OpenWRT.

The primary rationale I've seen cited from the Pi Foundation themselves is the desire to maintain single-image compatibility for Raspbian across all Pi variants.

One last thing - as far as memory usage, keep in mind that the Pi has a MASSIVE amount of RAM when compared to the typical OpenWRT target, where even 256M is generally only seen on top-of-the-line premium devices.

1 Like