ESP8266 Based Internet Radio Receiver is Packed with Features

Have a beautiful antique radio that’s beyond repair? This ESP8266 based Internet radio by [Edzelf] would be an excellent starting point to get it running again, as an alternative to a Raspberry-Pi based design. The basic premise is straightforward: an ESP8266 handles the connection to an Internet radio station of your choice, and a VS1053 codec module decodes the stream to produce an audio signal (which will require some form of amplification afterwards).

Besides the excellent documentation (PDF warning), where this firmware really shines is the sheer number of features that have been added. It includes a web interface that allows you to select an arbitrary station as well as cycle through presets, adjust volume, bass, and treble.


If you prefer physical controls, it supports buttons and dials. If you’re in the mood for something more Internet of Things, it can be controlled by the MQTT protocol as well. It even supports a color TFT screen by default, although this reduces the number of pins that can be used for button input.

The firmware also supports playing arbitrary .mp3 files hosted on a server. Given the low parts count and the wealth of options for controlling the device, we could see this device making its way into doorbells, practical jokes, and small museum exhibits.

To see it in action, check out the video below:

[Thanks JeeCee]

32 thoughts on “ESP8266 Based Internet Radio Receiver is Packed with Features

    1. That uses rtos, this uses arduino, I found edzelf’s project more enjoyable to hack around with also streamed higher bitrate samples better for me. The max I could get streaming on ka-radio was 24kbps not sure why.

        1. Wonder if there was bug fixes since I was testing it out. I basically abandoned ship after getting no response here maybe I should have done another issue for it maybe you can help? I was already on to esp-radio by then and was able to hack in IHeartRadio streams into it which was so my partner could listen to their hometown radio station they loved which they couldn’t get where we are now.

          1. The problem when I was testing it says in 3rd post down before the debug output

            Seems it detects it fine, I guess I just expected too much, that it was going to solve the constant stutter
            Any way to figure out what is wrong with any streams above 24kbps.
            Using an Adafruit Huzzah (ESP8266).
            50Mbps connection, any way to do a speed test on the module?

            I’ll have to recompile the latest code and see if it’s still the case. Do you run the processor @80MHz or 160MHz?

    1. Tried to get both esp-radio & ka-radio projects to add mono dac output like esp8266encoder was doing, both shot me down with it’s not worth the extra effort and doesn’t sound very good.

  1. I like the MQTT feature as it allows you to have audio announcements of events in a smart house, regular time and weather reports plus door bell, email notification. I wonder if you could add RFID so that you could log your presence as you entered a room and have your notifications and music follow you around.

    1. Also liked MQTT as why I was attracted to this code base, hacked around with the code to make it work with OpenHAB with MQTT control interface was lot’s of fun to get working. Over killed the mqtt memory constraints though with too much information.

      I also wanted to send audio prompts to it for notifications from openhab like “hello family, it’s after 10PM your garage door is still open would you like me to close it?” Etc… I did a sample test with online tts engines found out there is a max url size you can send it ~100 chars, then found out you can use POST instead and that allows for longer sentences.

      So that is a fun possibility to feed it any text you want like that or similar.

      You could do some openhab scripting to get your rfid working like that, “sounds” pretty straight forward, interesting idea.

    1. Kinda meh that he still uses a hardware mp3 decoder. The ESP8266 already was pretty capable of decoding mp3s at 80MHz (the mp3 decoder was limited to mono because of memory usage); the ESP32 can do stereo MP3s at any rate while still idling its CPUs most of the time.

        1. Would it be plausible to do AAC in the same way, as most radio stations stream with this format now. MP3 seems to be going the way of the Dodo bird and that encoder ic basically supports almost every format with upgrade possibilities to more formats. It will also encode audio as well to those formats. Would be cool to see someone do a massive roundup of decoding every possible audio format on the fly for the ESP. Probably legal concerns but would be interesting.

          1. VS1053 – Ogg Vorbis / MP3 / AAC / WMA / FLAC / MIDI Audio Codec Chip


            VS1053 is a versatile “MP3 decoder chip” belonging to VLSI Solution’s extensive slave audio processor family. In addition to being able to decode all the most common audio formats – including the advanced features of newer AAC files – functionality of this IC can be greatly expanded just by loading a bit of extra software to its RAM memory. In addition to being able to decode all major audio formats, VS1053 is capable of recording in three different audio formats, from lossless 16-bit PCM to highly compressed, yet high-quality Ogg Vorbis files. For the best headphone listening experience the VS1053 includes EarSpeaker spatial processing which accurately simulates how a room with stereo loudspeakers would sound. This option can naturally be turned off when required. All in all, VS1053 is an easy-to-use, powerful workhorse for audio playback and recording applications.


            Decodes multiple formats

            Ogg Vorbis
            MP3 = MPEG 1 & 2 audio layer III (CBR+VBR+ABR)
            MP1 & MP2 = MPEG 1 & 2 audio layers I & II optional
            MPEG4 / 2 AAC-LC(+PNS), HE-AAC v2 (Level 3) (SBR + PS)
            WMA4.0/4.1/7/8/9 all profiles (5-384 kbps)
            FLAC lossless audio with software plugin (upto 24 bits, 48 kHz)
            WAV (PCM + IMA ADPCM)
            General MIDI 1 / SP-MIDI format 0

            Encodes three different formats from mic/line in mono or stereo

            Ogg Vorbis with software plugin
            IMA ADPCM
            16-bit PCM

            Streaming support
            EarSpeaker Spatial Processing
            Bass and treble controls
            Operates with a single 12-13 MHz or 24-26 MHz clock
            Internal PLL clock multiplier
            Low-power operation
            High-quality on-chip stereo DAC with no phase error between channels
            Zero-cross detection for smooth volume change
            Stereo earphone driver capable of driving a 30­ ohm load
            Quiet power-on and power-off
            I2S interface for external DAC
            Separate voltages for analog, digital, I/O
            16.5 KiB on-chip RAM for user code and data
            Serial control and data interfaces
            Can be used as a slave co-processor
            SPI flash boot for special applications
            UART for debugging purposes
            New functions may be added with software and up to 8 GPIO pins

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s