Wifi Webradio With ESP8266 and VS1053 (KaraDio)




Introduction: Wifi Webradio With ESP8266 and VS1053 (KaraDio)

About: Old retired engineer

A wifi web radio player with only two low costs boards.

2017/08/25 New release 1.6: See The hackaday page
For more informations or questions, you can enter to the Karadio facebook group


Control with any browsers (ie edge, chrome mozilla etc...).or with an external hardware panel or with the uart interface.

Memory for 256 stations

OTA upgrade

Read direct mp3 or ogg streams or playlist .pls .m3u and .xspf

Read up to a 320 kb/s stream,

New web page, Fit well on mobile or computer.

Embedded wifi configuration via the web or uart interface

Metadata displayed (ie Title of the current song if given in the stream),

All settings saved (sound setting, stations, wifi)

Server multi clients with automatic refresh for all (websocket),

The stations can be downloaded and uploaded within the web site,

Very quick responsive web by caching local information in the browser and websocket.

a led indicates the state of the equipment . Speed blink: init, 90%in 10%out: connection in progress, 10% in 90%out: Equipment ready.

External DAC i2s interface on the vs1053 enabled.

Autostart on power on if the autoplay is checked.

Step 1: Step1: What You Need

Parts required:

A nodeMcu V3 (on aliexpress)

A VS1053 module (aliexpress)

A Fiberglass board epoxy boards (aliexpress)

2.54mm 40 Pin Stright Female Single Row Pin Header Strip PCB Connector (aliexpress)

Some wires and Soldering Iron.

A pc or other with an usb port

and an usb to micro usb cable. (aliexpress)

An external amplifier or earphone.

A prototype can also be made using a breadboard and some jumper wires.

See The hackaday page

Step 2: Step2: Build the Webradio Hardware

Follow the schematic to wire the board.

Be careful, the vs1053 is hard to soldier. Pins are very close each other.
Use a very thin iron.

Check each wire before the next step.
The power comes from the micro usb of the nodeMcu linked to the pc or a 5 volts transformer.

Step 3: Step3: Loading the Software and First Use

Loading the software

You need the ESP flash download tool.

Load it at the Espressif page

The binaries files can be found on Github or hackaday

Follow the image to configure the tool depending of the tool release

To enter the flash mode of the nodeMcu, press and hold the flash button, the press the reset button. You ca release the flash button.
Start the download with the start button of the ESP flash tool.

After a while, the Finish green indication is shown.

Press the reset button of the nodeMcu. If succesful, the nodeMcu les blinks.

First use

If the acces point of your router is not known,

the webradio init itself as an AP. Connect your wifi to the ssid "WifiWebRadio", Browse to to display the web page, got to "setting" "Wifi" and configure your ssid ap, the password if any, the wanted IP or use dhcp if you know how to retrieve the dhcp given ip (terminal or scan of the network).
In the gateway field, enter the ip address of your router.Validate. The equipment restart to the new configuration. Connect your wifi to your AP and browse to the ip given in configuration.
Congratulation, you can edit your own station list.
Dont forget to save your stations list in case of problem or for new equipments.if the AP is already know by the esp8266, the default ip is given by dhcp.
A sample of stations list can be uploaded via the web page and loaded to the webradio.

All future update will be made within the webradio interface via the ota feature.

Step 4: Some Images

The esp8266 is an incredible processor. This project is made with the freertos environment and contains many tasks: a web client to connect to the radio stream, a web server to provide the browser interface 'and a child task for each client), an uart task to display and and send commands to the webradio, a task to manage an external panel command on the adc entry (schematic in the hardware directory on github), a task for each client websocket, etc.
It is a complex project, but the processor is really powerful. The only limit is the lack of ram, which can be removed by adding an external chip on the spi bus. See the hackaday page or github page.

The uart interface can show some debug informations and can send controls to the webradio.
For a command list see the uartinterface.txt file at


20 People Made This Project!


  • Fix It! Contest

    Fix It! Contest
  • Tiny Home Contest

    Tiny Home Contest
  • Water Contest

    Water Contest

176 Discussions


5 months ago

can't connect to WifiWebRadio WIn10/Android also it won't connect to my AP
using an Lolin 8266 V3

Now if I use an wemos version it works great.
what could be wrong.

7 replies

Hi karawin, Thanks for your reply.
here is the screendump I don't see an issue but maybe you do.
wifi.list give no result


your ap SNLK not found. Check it.

Ok Fixed this problem.
First of all when you have strange output on the serial port /USB
this is because your board runs at 40Mhz so set the Xtal setting good in the Firmware tool. or the baud rate will be 40/26=177.230 Bps.
In my case I not sure whats wrong with the V3 boards but this is how i solved it:
Using Firmware-loader 3.63. go to the RFConfig.
Set 40Mhz,SetFeqEnable,PracticalFreqOffset=320,FullRFCalinRFInit
And GenInitBin the file "esp8266_init_data_setting.bin" must be loaded in your device so place that in SPIDownload.
I had 3 Lolin V3 units NEW that did not connect to the Wifi.
Now they DO!.

Hope it helps others as I'm new to 8266 needed to read a lot to understand it.


<connect the wifi of your computer to the wifiwebradio ap, then the browser to

your ap SNLK not found. Check it

Its only this Lolin that does not see the AP's my other version/Wemos
connects with no problem, Ap is here. wifi.list gives no response and can't connect to the SoftAp from multiple other clients..
I assume there is someting wrong with this Lolin V3 board.


Question 6 months ago

I have Nodemcu devkit v0.9. Will this also work or do I need specifically Nodemcu V3?

1 more answer

Yes it works with devkit 0.9 :)

Hi, I have a problem and I hope someone can help.
First, I apologize for my bad English. I have a working system with an Arduino Mini, and an LCD display. (Project karadioU8glib) Communication 115200baud
Now I'm trying on this ESP8266_ESP12 (3.3 v) to connect a larger LCD module.
This LCD module (ST7735_18x128x160) is already running alone with an STM32 and a KY40 encoder. The display starts and shows me various information.
This display I have now connected to the above running system. (TX, RX, VCC and Ground, 115200baud)
Unfortunately there is no communication between STM32 and the ESP8266_ESP12 (3.3 v).
Can it hang together with the height of the signal, with the Arduino min (5V) it runs.
Thank you, Markus

4 replies

The stm32 must have been flashed with a boot file.
If not, the serial1 is shifted. This is a frequent error.. See the .h file for informations.

Hello and have a nice day. As you already mentioned, the serial port is not in its right place.
I also found them and the system runs on two small things. I get in the second picture with the clock
the IP address is not displayed. Also, the display system seems to run slowly compared to your video.
The flashing LED on the STM flashes slower than on an Arduino mini with 0.96 display. Your suggestion with the special bootloader
I have followed , but seems to be of no use. Best regards from Germany, Markus

And check your arduino setting for the stm32 cpu speed at 72MHz

The boot loader is crucial. Without it, the serial numbering is shifted.
The delivered software works with a stm32 and the bootloader, else the serialx is wrong.


9 months ago

Hi Karawin again,
A0 is connected to CTR. SW. but i tried also with connection to GND -- nedo help.
All wires are solderd.
At startup Bl. Led blinks twice, that´s it. Sometimes it plays for a few minutes then silence. Ping is then successful but Webpage
does not show.


External ram not detected
uart speed: 28800
Release 1.6.2, Revision 3
SDK 1.4.2(f57d61a)
data : 0x3ffe8000 ~ 0x3ffe88fc, len: 2300
rodata: 0x3ffe8900 ~ 0x3ffea358, len: 6744
bss : 0x3ffea358 ~ 0x3fff1778, len: 29728
heap : 0x3fff1778 ~ 0x40000000, len: 59528
Heap size: 30616
size_map: 4
Eeprom_start: 3e0000
Eeprom_start1: 3d0000
Flash size: 4194304
t0 task: 3fff8a10
t1 task: 3fff8c98
t2 task: 3fff92b8
t3 task: 3fff96a8
t4 task: 3fff9cf0
Heap size: 23832
mode : sta(2c:3a:e8:24:2e:d1)
add if0

1 reply

If the log stop here, it seems that the vs1053 is not detected. Check the dreq wire.


9 months ago

strange Problem.

Hi Karawin!

Since Release 1.6.2 i have a curious issue with my Karadio.
either it does not start to connect or when it connects then only for
a few minutes and then stops playing.
i flashed a new Wemos - no help.
i changed power supply 5V 2Amps -no help.
i changed MP3 shield from
to Adafruit https://www.voelkner.de/products/954898/Adafruit-Erweiterungsboard-VS1053-Codec-MicroSD-Breakout-MP3-WAV-MIDI-OGG-Play-Record-v4-13.html?ref=43&products_model=S983431&gclid=Cj0KCQiA_5_QBRC9ARIsADVww16ySUG5FnDw9mvi7-B0r5Wp7fuLjyAT1Xy-QIpoEJu0EmS80oV9FakaAjdmEALw_wcB
but no help.
I use the colour oled addon, it all worked for weeks before.
The same happens when i start without Display.
do you have an idea what can cause this behavior???
greetings GL
greetings GL

1 reply

Are you sure to have A0 connected to the ground?
An uart log or telnet log is better to answer


I have a little problem in no way want to give voice to yourself!

you will not make a mistake at startup! I've looked at wiring several times!

Does anyone have any idea?

External ram not detected

uart speed: 115200

Release 1.6.1, Revision 1

SDK 1.4.2(f57d61a)

data : 0x3ffe8000 ~ 0x3ffe88fc, len: 2300

rodata: 0x3ffe8900 ~ 0x3ffea2b4, len: 6580

bss : 0x3ffea2b8 ~ 0x3fff16d8, len: 29728

heap : 0x3fff16d8 ~ 0x40000000, len: 59688

Heap size: 30776

size_map: 4

Eeprom_start: 3e0000

Eeprom_start1: 3d0000

Flash size: 4194304

t0 task: 3fff8970

t1 task: 3fff8bf8

t2 task: 3fff9218

t3 task: 3fff9608

t4 task: 3fff9c50

Heap size: 23992

mode : sta(2c:..:..:....:f3)

add if0

SCI_Mode (0x4800) = 0x0

SCI_Status (0x48) = 0x0

VS Version (VS1053 is 4) = 0

SCI_ClockF = 0x0

device: 3fffa6e8

volume: 248


AP1: M....ly, AP2:

AP1:Station Ip:

Trying Muhely , I: 0 status: 1


state: 0 -> 2 (b0)

state: 2 -> 3 (0)

state: 3 -> 5 (10)

add 0

aid 4

pm open phy_2,type:2 0 0


connected with M...ly, channel 3

dhcp client start...


sleep enable,type: 2

ADC Div: 3 from adc: 11

autostart: playing:1, currentstation:238

##CLI.STOPPED# from playStationInt

##CLI.NAMESET#: 238 Hotmix Hiphop

##CLI.URLSET#: hotmixradio-frenchy.ice.infomaniak.ch

##CLI.PATHSET#: /hotmixradio-hiphop-128.mp3



##CLI.VOL#: 248

##CLI.STOPPED# from Adc Stop

##CLI.ICY0#: Hotmixradio Hip Hop

##CLI.ICY3#: http:\/\/www.hotmixradio.fr\/hiphop

##CLI.ICY5#: 128

##CLI.ICY7#: ice-samplerate=44100;ice-bitrate=128;ice-channels=2