PaperBoy Game Boy Emulator works at 60 FPS on ESP32-S3 E Ink devkit

PaperBoy E Ink ESP32-S3 Gameboy emulator

60 FPS gaming on an E Ink display? That doesn’t seem right… But that’s exactly what Wenting Zhang’s PaperBoy Game Boy emulator project does, using the M5Stack PaperS3 devkit, pairing an ESP32-S3 wireless microcontroller with a 4.7-inch E Ink display with 960 x 540 resolution. One of the tricks here is that the bottom part of the ePaper touchscreen display is used for control buttons and doesn’t need to be refreshed, while the active part only requires 160 x 144 resolution, scaled three times to represent various shades of grey. Contrary to most small Eink devkits, the PaperS3 features a screen with a raw row/column driver interface, which enabled him to drive the display while bypassing the normal waveform method, and deliver a higher refresh rate up to 60 FPS. Wenting didn’t reinvent the wheel for the Game Boy emulation part, and after testing three different emulators, he went with […]

Bare-metal MSX2+ Emulator for ESP32-S3 offers custom LCD_CAM VGA implementation & Z80 optimizations

MSX2+ Emulator for ESP32-S3

Ivan Svarkovsky’s S3-MSX-PC open-source project implements a bare-metal MSX2+ emulator running on an ESP32-S3 microcontroller and outputting 64-color VGA via a simple R-2R resistor ladder. It’s a fork of the Retro-Go emulator for ODROID-GO and other ESP32 devices, but with various optimizations. It was tested on an off-the-shelf ESP32-S3 board with one core handling the game logic and the other video and audio output. VGA is implemented through a clever resistor network that converts digital data into an analog signal that any old monitor understands, while audio relies on Sigma-Delta modulation with a multi-stage PDM filter. The USB host port on the board allows for the connection of a keyboard. S3-MSX-PC firmware highlights: Emulation Core – fMSX 6.0 — Full MSX1 / MSX2 / MSX2+ support Video Output VGA 640×480@60Hz, 16-bit parallel RGB via LCD_CAM Color Depth – 64 colors (2 bits per channel: R, G, B) Audio – PDM Stereo […]

ESPHome 2026.5.0 released with new ESPHome Device Builder (beta), performance/memory optimizations

ESPHome 2026.5.0 release

ESPHome 2026.5.0 has just been released with the beta version of the new ESPHome Device Builder web app that replaces the legacy in-tree dashboard with a real configuration editor, a firmware job queue, multi-select bulk actions, labels and areas, out-of-sync detection, cross-config search, distributed builds, and a proper settings UI. The firmware itself gains optimizations of the main loop, scheduler, and task watchdog to lower CPU and power usage on supported platforms, and a range of other memory/performance optimizations across the API, audio, and helper hot paths. The audio decoder pipeline has been improved and features new microMP3, microWAV, and microFLAC streaming libraries. OTA has also been enhanced with partition-table and bootloader updates, web-server OTA, and soft-brick recovery, and ESP32 MCUs are now handled by up to the ESP-IDF v6.0.1 framework natively, while Zigbee support has been expanded to ESP32 H2 and ESP32-C6, among other features. Key features of the […]

Study compares Rust and C languages for embedded firmware development

Rust vs Embedded C

There’s a lot of hype around the Rust programming language, and I’m seeing it being adopted by various projects, not least the Linux kernel. However, so far it was unclear to me whether it was suitable for embedded firmware development since the hardware resources are limited on microcontrollers. A low memory and storage footprint is required, and optimal performance may also be important, for example, to lower the power consumption of battery-powered devices. A research paper by STMicroelectronics, Inria, and the Freie Universität Berlin, entitled “Lessons from an Industrial Microcontroller Use Case with Ariel OS” published on ArXiv hosted by Cornell University, attempts to answer this question using embedded C and Rust, and the conclusion is that Rust is a viable option: As Rust gains traction for developing safer systems software, a reality check for the microcontroller hardware segment becomes necessary. How ready is the Rust ecosystem for this segment? Can […]

Reminder: enable ZRAM on your Linux system to optimize RAM usage (and potentially save money)

ZRAM zstd compression ram sticks

With the price of RAM getting out of control, it might be a good idea to remind Linux users to enable ZRAM so they can get better performance without upgrading memory, or save money on their next single board computer by selecting a board with the right amount of memory.

I had already written about the subject when I enabled ZRAM on a ODROID-XU4Q in 2018 using zram-config, and did the same on my Ubuntu laptop at the time. In recent days, I found Firefox crashing often due to running out of memory on my system with 16GB of RAM, and the Linux 7.0 release reminded me about ZRAM, since there were some related changes. So I decided to check the current swap configuration on my Ubuntu 24.04 laptop:

Linux 7.0 Release – Main changes, Arm, RISC-V, and MIPS architectures

Linux 7.0

Linus Torvalds has just released Linux 7.0 on LKML: The last week of the release continued the same “lots of small fixes” trend, but it all really does seem pretty benign, so I’ve tagged the final 7.0 and pushed it out. I suspect it’s a lot of AI tool use that will keep finding corner cases for us for a while, so this may be the “new normal” at least for a while. Only time will tell. Anyway, this last week was a little bit of everything: networking (core and drivers), arch fixes, tooling and selftests, and various random fixes all over the place. Let’s keep testing, and obviously tomorrow the merge window for 7.1 opens. I already have four dozen pull requests pending – thank you to all the early people. Linus This follows the Linux 6.19 release about two months ago, which brought us PCIe link encryption and […]

wolfIP – An open-source, lightweight TCP/IP stack with no dynamic memory allocations for embedded systems

wolfip TCP/IP library no memory allocations

Better known for its open-source wolfSSL SSL/TLS library, wolfSSL (the company) has now released the wolfIP open-source, lightweight TCP/IP stack with no dynamic memory allocations (e.g., no malloc calls) designed for resource-constrained embedded systems.

The company highlights that wolfIP “supports both endpoint-only mode and full multi-interface support with optional IP forwarding. By default, it operates as a network endpoint, but can be configured to forward traffic between multiple network interfaces”.

ESP-IDF v6.0 framework adds support for ESP32-C5 and ESP32-C61, preview for ESP32-H21 and ESP32-H4

ESP-IDF Release v6.0

Espressif Systems released the ESP-IDF v6.0 framework a few days ago with stable support for ESP32-C5 and ESP32-C61 SoCs, as well as preview support for ESP32-H21 and ESP32-H4 low-power wireless microcontrollers. The framework also implements a new ESP-IDF Installation Manager (EIM) to make the ESP-IDF installation easier, relies on the low-footprint Picolibc C library, adds security and tooling updates, as well as a few Wi-Fi enhancements, and the ability to update the bootloader over the air. Here are some of the ESP-IDF v6.0 highlights: ESP-IDF Installation Manager – Unified cross-platform tool to simplify the setup process for ESP-IDF and compatible IDEs. It’s available as a graphical interface or a CLI for automation and CI/CD pipelines. You can check the installation instructions for your OS. Picolibc replaces Newlib for a smaller memory footprint and better performance on resource-constrained devices. Check the Newlib vs Picolibc comparison for details. Contrary to some of […]

Exit mobile version