linux

Radxa X4 SBC Unites Intel N100 and Raspberry Pi RP2040

At first glance, especially from the top, the Radxa X4 is your typical Arm SBC:

Radxa X4 Top

But you'll quickly notice the lack of an SoC—that's on the bottom. Looking more closely, what's a Raspberry Pi chip doing on top?! First, let's flip over the board to investigate. There's the SoC: definitely not Arm inside, this thing's an Intel N100:

Radxa X4 Bottom - Intel N100 SoC

I have all my benchmarks and notes bringing up this board stored in my sbc-reviews GitHub repository: Radxa X4 - geerlingguy's sbc-reviews, and I also summarized everything in a video on YouTube, which you can watch inline (or skip past and read this blog post instead):

Hacking Pi firmware to get the fastest overclock

Raspberry Pi 5 with dry ice smoke surrounding it

Since boosting my Pi 5 from the default 2.4 GHz clock to 3.14 GHz on Pi Day, I've wanted to go faster. Especially since many other users have topped my Geekbench scores since then :)

In March, Raspberry Pi introduced new firmware that unlocked frequencies above 3,000 MHz for overclocking. This summer, NUMA Emulation patches boosted performance another 5-10% through memory access optimizations.

But even with a golden sample Pi 5, I haven't seen anybody go much beyond 3.1 or 3.2 GHz. The problem seemed to be power supply—the Pi's firmware limits the SoC to a maximum of 1.000V.

The state of Docker on popular RISC-V platforms

I've been testing a Milk-V Jupiter this week, and have tested a number of other RISC-V development boards over the past two years.

As with any new CPU architecture, software support and ease of adoption are extremely important if you want to reach a wider audience. I wouldn't expect every developer and SBC hobbyist to be able to compile the Linux kernel, and the need to compile much of anything these days is getting rare. So having any instance where one has to know how to tweak a Makefile or pass in different flags to a compiler is a bit of a turn-off for platform adoption.

So one thing I've followed closely is how easy it is for me to get my own software running on RISC-V boards. It's one thing to run some vendor-provided demos. It's another entirely to take my real-world applications and infrastructure apps, and get them to work without hassle.

And to that end, Docker and Ansible, two tools I use extensively for dev/ops work, both run stably—though with plenty of caveats since RISC-V is still so new.

Where is Qualcomm's Snapdragon X Elite Dev Kit?

I signed up to buy a Qualcomm Snapdragon X Dev Kit the second I found out about it. It's supposed to be the Mac mini killer for Windows.

Snapdragon X Elite Dev Kit Transparent

They even promoted it with this amazing-looking transparent shell, and I and hundreds of other devs were ready to pony up the $899 Qualcomm was asking.

Their pre-order form said it would be out June 18. Almost exactly one month later, I got an email saying it was available. Great!

So I went to the purchase page on Arrow... and it showed as out of stock. That was about 15 minutes after receiving the email.

There were three possibilities:

NUMA Emulation speeds up Pi 5 (and other improvements)

Recently an Igalia engineer posted a NUMA Emulation patch for the Pi 5 to the Linux Kernel mailing list. He said it could improve performance of Geekbench 6 scores up to 6% for single-core, and 18% for multicore.

My testing didn't quite match those numbers, but I did see a significant and consistent performance increase across both Geekbench 6:

Raspberry Pi 5 Geekbench 6 Score comparison with NUMA Emulation enabled

And High Performance Linpack:

Raspberry Pi 5 HPL Gigaflops and efficiency comparison with NUMA Emulation enabled

Installing Ansible on a RISC-V computer

Ansible runs on Python, and Python runs on... well pretty much everything. Including newer RISC-V machines.

But Ansible has a lot of dependencies, and some of these dependencies have caused frustration from time to time on x86 and Arm (so having issues with a dependency is just a way of life when you enter dependency hell)... but in this case, for the past few months, I've never had luck installing Ansible from PyPI (Python's Package Index) on any RISC-V system, using pip install ansible.

I prefer installing this way (rather than compiling from source or from system packages) because it generally gets the latest version of Ansible, with an easy upgrade/downgrade path. It's also easy to add ansible to a Python requirements.txt file and install it alongside other package dependencies.

Regardless, the cryptography library, which requires a Rust compiler to build if the package is not already built for a particular system, has made it difficult to install Ansible from pip:

Newer versions of Ansible don't work with RHEL 8

Red Hat Enterprise Linux 8 is supported until 2029, and that distribution includes Python 3.6 for system python. Ansible's long been stuck between a rock and a hard place supporting certain modules (especially packaging modules like dnf/yum on RHEL and its derivatives, because the Python bindings for the packaging modules are stuck supporting system Python.

Users are getting errors like:

/bin/sh: /usr/bin/python3: No such file or directory
The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error.

...or...

SyntaxError: future feature annotations is not defined

As ansible-core evolves, they don't want to support old insecure versions of Python forever—Python 3.6 was out of security support back in 2021!.

LattePanda Mu crams x86 PC into SoM form factor

LattePanda Mu with Raspberry Pi 5 in background

LattePanda's been building Intel-based SBCs for almost a decade, but until now, they've never attempted to unite an Intel x86 chip with the popular SoM-style form factor Raspberry Pi's dominated with their Compute Module boards.

This year they've introduced the LattePanda Mu, a SoM that marries an Intel N100 SoC with a new edge connector standard they've designed, using a DDR4 SODIMM form factor.

Right now they offer two carrier boards: a lite version with basic interfaces and a couple 2230-size M.2 slots for SSDs and wireless, and a full evaluation carrier that breaks out every hardware interface in a Mini ITX-sized motherboard.

Raspberry Pi is getting into the services game

...and it's all free—so far.

Raspberry Pi Connect Beta Logo

Raspberry Pi today launched Raspberry Pi Connect, a free remote VPN service for all Pi OS users.

If you create a Raspberry Pi ID, you can sign up for Connect, install rpi-connect on a Pi 4 or 5 running 64-bit Pi OS 12 'Bookworm', and register that Pi with the service.

Then, on any other device's web browser, you can log in and remote control your Pi through Connect's web-based VNC viewer.

Raspberry Pi Connect Demo

The VNC server is based on wayvnc, and the Connect service allows for as many registered Pis as you want (though I'm guessing the interface is optimized for the majority use case of one or a few).

Set a static IP address with nmtui on Raspberry Pi OS 12 'Bookworm'

Old advice for setting a Raspberry Pi IP address to a static IP on the Pi itself said to edit the /etc/dhcpcd.conf file, and add it there.

But on Raspberry Pi OS 12 and later, dhcpcd is no longer used, everything goes through Network Manager, which is configured via nmcli or nmtui. If you're booting into the Pi OS desktop environment, editing the IP settings there is pretty easy.

But setting a static IP via the command line is a little different.

First, get the interface information—you can get a list of all interfaces with nmcli device status:

$ nmcli device status
DEVICE         TYPE      STATE                   CONNECTION         
eth0           ethernet  connected               Wired connection 1 
lo             loopback  connected (externally)  lo                 
wlan0          wifi      disconnected            --                 

In my case, I want to set an IP on eth0, the built-in Ethernet.