AudioTools: Adding Support for the ESP32‐S3 AI Smart Speaker Development Board

Recently I found the ESP32‐S3 AI Smart Speaker Development Board on Aliexpress for around 15 USD. It has quite some interesting functionality: ES8311 Codec DAC Chip ES7210 Codec ADC Chip with stereo microphones SD Card 6 Neopixel Multicolor LEDs A PCF85063A Real Time Clock 3 User Definable Keys GPIO interface camera interface lcd interface This week I got this board in my mailbox and I expected it to be quite easy to be added to Read more

Implementing a DLNA Control Point in Arduino

In my last blogs, I was showing how to create DLNA devices. In my final blog about this topic I will demonstrate how to create a DLNA Control Point (=Client) which uses the functionality of these devices. I will demo a simple Control Point for a Media Renderer which will start playing some music: The Arduino Sketch First we define the relevant objects: In the Arduino setup() we start the processing: We just start the Read more

Implementing a DLNA Media Server in Arduino

After having demonstrated how to implement a DLNA Media Renderer in the last blog, I show that it is equally simple to define a DLNA media server. Here is the outline of a basic sketch: The logic for setting up and starting a server is basically the same like the one for the Media Renderer just using the DLNAMediaServer class: The key for this scenario however are two callbacks: one for preparing and the other Read more

Walking an Entire Arduino SD Card Directory Tree: A Performance Guide

I was searching for the most efficient generic way to process the whole SD directory tree in Arduino: this can be helpful if you want to search for files or if you want to store the whole file system in a tree in RAM. The Standard SD API Way When using the API provided by the SD library, we need to open each file/directory to find it’s children. So to process all files in the Read more

Building an Arduino DLNA Network Wireless Speaker

Im my last blog I was describing the DLNA Architecture. So we are ready now to dig into my first Arduino DLNA Sketch. By combining my arduino-dlna with the arduino-audio-tools library it is quite easy to build a Network Audio Renderer that can e.g. be controlled via an Android Application: I can recommend Hi-Fi-Cast that let’s you select the Music Sources and Playback Devices. When running this sketch you should find and entry named __ArduinoMediaRenderer__ Read more

DLNA: The Architecture

The major advantage of the DLNA architecture is it’s clear separation of concerns. This split into specialized roles allows developers to create focused, efficient devices that, when combined, form a sophisticated whole-house audio system. The architecture is built around three core components: Media Servers, which store and distribute (e.g. audio) content; Media Renderers, which receive and play that audio; and Control Points, which act as the intelligent conductors, discovering devices and orchestrating playback between them. Read more

DLNA: Challenges

Introduction Last year, I started to work on a DLNA library for Arduino. There are some existing implementations, but they only implement “Control Points”, but no “Devices”. Now that the weather is getting colder, I decided to give this topic some more “love”. The Digital Living Network Alliance (DLNA) aimed to establish interoperability among PCs, consumer appliances, and mobile devices across wired and wireless networks. The goal was to provide a common solution for sharing Read more

Playing RTTTL with STL Instruments

Yesterday I was ask to extend my Arduino AudioTools library to support RTTTL. To be honest, I had no clue what this is, so I had to look it up: RTTTL stands for Ring Tone Text Transfer Language and was developed by Nokia to transfer ringtones to cellphones. It basically descibes the notes and durations in simple text form. My library supports different sound generators and also provides the frequencies of all notes: so all Read more

Pimping up RTSP

In my last Arduino AudioTools Release I have integrated a RTSP server and client. The server was using RTOS tasks for the session management und a timer for timing the audio data. I decided to make things more flexible by providing different implementations for the Server and Streamer. Here is the overview of all available classes. I added a taskless server, so that we can use it w/o RTOS. Apart from the timer based standard Read more

Arduino Emulator: Major Architecture Improvements and Raspberry Pi Support

October 2025 I’m excited to share some significant updates to the Arduino Emulator project that make it more robust, easier to use, and better aligned with official Arduino standards. These changes represent a major step forward in cross-platform Arduino development. 🔄 Arduino Core as Official Submodule The most significant architectural change is migrating to the official Arduino Core API as a git submodule. Previously, we maintained our own fork of the Arduino Core, but now Read more