How to use iperf3 in multi-thread mode for 10Gps+ Ethernet testing

iperf3 10GbE multi thread test

With 10GbE becoming more widespread and often found in entry-level hardware, the CPU may become the bottleneck, so I’ll explain how to use iperf3 in multi-thread mode to fully saturate the 10GbE bandwidth even with a system based on a relatively low-end multi-core processor.

For this tutorial, I use two iKOOCORE R2 Max mini PCs with two 10GbE interfaces each and an Intel N100 quad-core processor running an OpenWrt fork (QWRT) and Proxmox VE (Debian) respectively. I will show how I can fully saturate the 10GbE interfaces using multithreading, but not with a typical iperf3 single-core test.

Arduino Core for Zephyr beta released – Let’s give it a try!

Arduino Zephyr Boards llext

Last July, Arduino announced plans to switch from the soon-to-be deprecated Arm Mbed to Zephyr RTOS, and the company has now outed the first beta release of “Arduino Core for Zephyr OS” for a range of boards. From the user’s perspective, this should not change anything. However, there are massive changes under the hood and Arduino sketches are built and executed differently with the Arduino Core for Zephyr.  Some highlights of the new Zephyr-based Arduino core implementation include: Dynamic sketch loading – Sketches are compiled as ELF files and dynamically loaded by a precompiled Zephyr-based firmware. Zephyr subsystems support threading, inter-process communication, and real-time scheduling. Fast compiling and smaller binaries since a thin layer of user code and libraries are compiled, while the rest of the ZephyrOS is already binary. You can get started straightaway with the code and instructions on GitHub. You’ll need Arduino 2.x.x for this to work. […]

Getting Started with Raspberry Pi AI HAT+ (26 TOPS) and Raspberry Pi AI camera

Raspberry Pi AI HAT+ and AI camera review

Raspberry Pi recently launched several AI products including the Raspberry Pi AI HAT+ for the Pi 5 with 13 TOPS or 26 TOPS of performance and the less powerful Raspberry Pi AI camera suitable for all Raspberry Pi SBC with a MIPI CSI connector. The company sent me samples of the AI HAT+ (26 TOPS) and the AI camera for review, as well as other accessories such as the Raspberry Pi Touch Display 2 and Raspberry Pi Bumper, so I’ll report my experience getting started mostly following the documentation for the AI HAT+ and AI camera. Hardware used for testing In this tutorial/review, I’ll use a Raspberry Pi 5 with the AI HAT+ and a Raspberry Pi Camera Module 3, while I’ll connect the AI camera to a Raspberry Pi 4. I also plan to use one of the boards with the new Touch Display 2. Let’s go through a […]

Mitigating a DoS attack with GoAccess and Cloudflare

Cloudflare Under Attack Mode

In this off-topic post, I’m going to discuss some behind-the-scenes “fun” that may happen when managing the web server used to host the CNX Software website. From time to time, the server becomes unreachable, but I can still access its console, and notice a very high CPU load (over 100) on a VPS with four cores, while the CPU load is typically 0.5 to 2 under normal circumstances. That’s usually due to a DoS (denial of service), DDoS (distributed denial of service), or some bug I can’t identify. An easy way to solve this issue is to log in to Cloudflare and set the “Under Attack Mode” to on. It will show all visitors a JavaScript challenge the first time they visit the website, and the CPU usage typically drops back to normal level within a minute or so. That means I can access my website and so do regular […]

Arduino CLI 1.0 released – Let’s try it with the Raspberry Pi Pico 2

Arduino CLI Raspberry Pi Pico 2

Arduino has just announced the release of the Arduino CLI version 1.0.0, the first stable release for which users and developers can be confident the software API won’t change over time, or at least with minimal changes that will not impact the workflow of applications based on it. We first looked at the Arduino CLI when it was still at the alpha stage way back in 2018. Arduino CLI version 1.0.0 was actually quietly released about two months ago, but Arduino only announced it now and the utility is now at version 1.0.4 with several bug fixes. Arduino CLI 1.0 release The goal of the API is to easily program the boards from the command line without having to use the Arduino IDE, and the CLI can be integrated into your own script to automatize various processes. Arduino explains there are three ways to integrate and utilize the capabilities of […]

How to recover a “bricked” Raspberry Pi Pico 2 or other RP2350 board

Recover Bricked Raspberry Pi Pico 2 or RP2350 board with flash_nuke.uf2

In theory, it’s close to impossible to brick your Raspberry Pi Pico 2 or other RP2350 boards because the bootrom code (source code) is stored in the 32KB ROM of the microcontroller and is by definition “read-only memory”.  But I managed to “brick” my Raspberry Pi Pico 2 the other day, and even a blinky sample would not run on the board. So I’ll explain a simple method to recover/perform a factory reset of sorts. First, let me explain what happened. My board became unusable after I ran the following command while building RISC-V Linux for RP2035 and my Pico 2 was connected to the build machine:

At some point, it will copy a UF2 firmware binary designed for boards with PSRAM which the Raspberry Pi Pico 2 lacks:

After that, I could still see the Raspberry Pi Pico 2 board as an “RP2350” drive on my computer, […]

Using RISC-V cores on the Raspberry Pi Pico 2 board and RP2350 MCU – From blinking an LED to building Linux

Raspberry Pi Pico 2 RP2350 RISC-V review

Raspberry Pi Pico 2 was released last month with a Raspberry Pi RP2350 microcontroller equipped with two Arm Cortex-M33 cores and two 32-bit RISC-V “Hazard3” cores with up to two cores usable at any time. So in this guide, we’ll show how to use the RISC-V cores on the RP2350 MCU, compare their performance against the Arm Cortex-M33 cores, and even build Linux for RISC-V for RP2350 boards that have PSRAM. Apart from the extra memory and more powerful cores, plus new features related to security and the HSTX interface, the Raspberry Pi Pico 2 and Pico will be very similar to the end user and the instructions in our article “Getting Started with Raspberry Pi Pico using MicroPython and C” remain valid. I don’t think there’s a MicroPython RISC-V image yet, so we’ll focus on running C programs on the RISC-V cores. A quick check with the Arm cores […]

Raspberry Pi Pico Arduino core 4.0 adds support for RP2350 boards

Raspberry Pi RP2350 Arduino

Earle F. Philhower, III has just released the Raspberry Pi Pico Arduino core 4.0 with support for a range of Raspberry Pi RP2350 boards beside the official Raspberry Pi Pico 2. Shortly after the RP2040-based Raspberry Pi Pico board was released, we got two Arduino SDKs, the first being the community-supported Raspberry Pi Pico Arduino core maintained by Earle, and the second being the official Arduino Core Mbed 2.0 for boards as such as Arduino Nano Connect RP2040. We are again likely to have two Arduino SDKs for the RP2350 starting with the Raspberry Pi Pico Arduino core. Key changes in Raspberry Pi Pico Arduino core 4.0: Adds Raspberry Pi RP2350 support (Arm only; RISC-V cores are not supported at this stage) Migrates to Pico SDK 2.0 since it is required for RP2350 support and includes a new OpenOCD and Picotool. Tested features: SPI, I2C, LittleFS, EEPROM, PWMAudio, LWIP-based networking, […]

EmbeddedTS embedded systems design