WiFi Webradio on ESP8266 or ESP32

A fully featured wifi web radio player with only low cost boards.
with or without a vs1053 board

Similar projects worth following
Control with any browsers (ie edge, chrome mozilla etc...).
or with an external hardware panel or with the uart interface or with telnet.
Memory for 255 stations
OTA (On the Air) upgrade,
Read direct mp3 or ogg or WMA streams or playlist .pls .m3u, asx and .xspf
Read up to a 320 kb/s stream,
Encoder, IR, lcd ...
Embedded wifi configuration via the web or serial or telnet.
Metadata displayed (ie Title of the current song if given in the stream),
Permanent setting (sound setting, stations, wifi)
Server multi clients with automatic refresh (websocket),
The stations may be downloaded and uploaded within the web site,
Stations sort management by drag drop.
very quick responsive web by caching local information in the browser and websocket.
additional hardware: a led indicates the state of the equipment
Optional: control switches, lcd display, additional ram for buffering

See for the description of the minimal prototype.

See Github for sources

See github source for the ESP32 version ( vs1053 or i2s or pcm or internal DAC)

See A project derived from KaRadio32 in progress.

See the lcd +IR software's on Github AddOn

See some realizations of users at KaraDio

A nextion touchscreen display for KaraDio from yo2ldk : Here

For more informations or questions, you can enter to the Karadio facebook group

KaRadio32 Release 1.9


Release 1.9 Rev4 - Built on 2019/04/28


  • 1.9 R4:
    • command now disable the AP mode if already connected to an AP in the past.
    • I2S corrected for 32bit output stream. Thanks to har-in-air github user.
    • Instant play: new button "Add/Edit", and update fields on cli commands.
  • 1.9 R3:
    • blank password accepted.
    • New lcd types: LCD_I2C_ST7567, LCD_SPI_ST7567_pi , LCD_SPI_ST7567, LCD_SPI_ST7565_NHD_C12864
    • New and comment line # comment, now permitted.
    • cli.list correction.
    • Minor corrections.
  • 1.9 R2:
    • New option for the active level of buttons.
    • Little bug removed on color lcd.
    • Telnet disabled in AP mode.
    • Key Ctrl space, Ctrl left, ctrl right, ctrl top, ctrl bottom on web page for control.
  • 1.9 R1:
    • Labels in the csv hardware configuration.
    • Toggle main/time now permanent. On time display, an event go to the main screen for 3 seconds then return to time screen.
    • More reactive display on lcd.
  • 1.9 R0:
    • Improved encoder for new chinese device (shorter pulses) (reverse A/B in case of reverse way)
    • Better vs1053 detection.
    • No more fall back to i2s when the vs1053 is not detected.
    • RSSI display needed a click of a button to start.
    • AP mode on init: the web page starts on the "Setting" panel and the stations list is skipped.
    • Wifi option: If wifi is disconnected choose to reset or wait for the connection on the same SSID:
    • Command"x") with x = 0: reboot, x=1: wait for the SSID
    • For internal reasons, the touch screen needs to be calibrated again.
    • Many small improvements in the code.

KaRadio: Release 1.9

Release 1.9 R4 - Built on 2019/05/26


  • 1.9 R4:
    • LWIP layer tuned. Better errno 11 computing.
  • 1.9 R3:
    • Instant play: new button "Add/Edit", and update fields on cli commands.
  • 1.9 R2:
    • AP mode no working. A wrong lwip was the cause. Now is working.
  • 1.9 R1:
    • Keyboard on web page correction.
    • cli.list correction.
  • 1.9 R0:
    • Use of the RTOS SDK 2.0.0.



For ESP32 see the github page KaRadio32. Release 1.6 R4

ESP8266 Simplest prototype:

... Read more »

KaRadio 1.9 Rev4 AP corrected

octet-stream - 421.50 kB - 08/02/2019 at 21:04


KaRadio 1.9 Rev4 AP corrected

octet-stream - 421.50 kB - 08/02/2019 at 21:04



KaRadio32 1.9 Rev 4

octet-stream - 1.40 MB - 06/05/2019 at 13:27


octet-stream - 3.98 kB - 09/17/2017 at 10:26


octet-stream - 4.00 kB - 07/21/2016 at 15:19


View all 6 files

View all 6 components

View all 11 project logs

  • 1
    Step 1


    From ESP8266_ESP12( 3.3 v) or nodeMCU(5v) to VS1053 (5 v)


    ADC : gound if control panel not used

    CH_PD to 3.3v

    GPIO16 led output

    D5:GPIO14 to VS1053 SCK

    D6:GPIO12 to VS1053 MISO (or so)

    D7:GPIO13 to VS1053 MOSI (or si)

    TXD to CH340G UART rx

    RXD from CH340G UART tx

    D1:GPIO05 to VS1053 XDCS

    D2:GPIO04 to VS1053 DREQ

    D3:GPIO00 to VS1053 XRST


    D8:GPIO15 to VS1053 XCS

View all instructions

Enjoy this project?



simon wrote 08/27/2019 at 15:07 point


I have installed your Software on two ESP32 systems and booth working very well, i have only two suggestions.

1. sometimes after power the radio, the ESP32 don´t connect to the wifi and start instead the AP, the router is not far from the ESP... and next time the ESP connect to the WIFI, maybe it is possible to programm a routine, when AP is active, check every 5 minutes to stored WIFI networks.

2. somitimes when i switch a light in the near of the Radio, i hear a knock at the speaker and the radio is loudless, after a restart the radio is working well. Ithink the problem is the VS1053, maybe it is possible to check if the VS1053 is working, if not, give him a reset.

  Are you sure? yes | no

Georde wrote 07/29/2019 at 22:29 point

Hello. I have a problem: I cannot access the web page ( Connection to AP is correct. wifi "WifiWebRadio".  My browser, it says "This site can't be reached." 

What am I not doing well, what am I supposed to do?

Thank you

  Are you sure? yes | no

Curt Parrish wrote 07/25/2019 at 15:35 point


I like this project but haven't had much success. I'm using a nodemcu v.3 with an ESP8266 and a VS1053. After flashing the nodemcu, I can see a response from it in a terminal program. Following the directions in the response, I can connect to WifiKaRadio successfully, but when I enter in my browser, it says "This site can't be reached." There is also no result pinging that IP address, but does respond to the ping. I can't get any farther than this.

Can anyone help?

  Are you sure? yes | no

Sera26 wrote 05/13/2019 at 18:52 point


Playing of radio stations are lagging strongly with KaRadio, the streams are unpalatable.

I have already removed control buttons (ADC and GND bridged) and STM32+LCD but radio can't play stations continuously.

What can be the problem?

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/14/2019 at 08:37 point

What is the log?

  Are you sure? yes | no

Sera26 wrote 05/14/2019 at 09:10 point

Sorry, for ignorance but how can I get log file?

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/31/2019 at 15:47 point

resolved, thanks.

  Are you sure? yes | no

jumpjack wrote 05/13/2019 at 10:35 point

Could this tiny little thing be used as MP3 player module for the ESP8266 version?

<img src="">

DFPlayer mini mp3 module.

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/13/2019 at 11:07 point

No. no sd card allowed.

  Are you sure? yes | no

jumpjack wrote 05/16/2019 at 07:17 point

no, I meant if an MP3 stream could be sent to the module over serial.

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/16/2019 at 08:12 point

no, sorry

  Are you sure? yes | no

jumpjack wrote 05/13/2019 at 10:34 point

Can the project work as-is if I do not connect any display or key, or does it require some tuning?

Is any Arduino-IDE version available?

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/13/2019 at 11:06 point

Yes. no tuning but better with a little effort. (no lcd (sys.lcd("255"))

No, it is an esp_idf project only.

  Are you sure? yes | no

Roman Kot wrote 04/30/2019 at 09:54 point

Is this possible to integrate IR receiver in order to use any remote control. So you can learn commands from your Rc then map it at CSV 

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/13/2019 at 11:08 point

You can learn codes with the log at sys.logd level then map them in the csv.

  Are you sure? yes | no

Sera26 wrote 04/14/2019 at 10:10 point


I would like to use control buttons of KaRadio to Karadio32 instead of encoder.

Is this possible?

Thank you for help in advance.

  Are you sure? yes | no

Sera26 wrote 04/14/2019 at 17:42 point

Dear JPC! Many thanks for your support.

  Are you sure? yes | no

silvercarph wrote 03/11/2019 at 21:35 point

Hi, I appreciate your effort to create KaRadio. My setup works somehow but I need some help with two issues: poor sound quality and noise. 

1. Poor sound quality: I receive only a low quality mono-like sound (with some echo) with no bass unless a GND point (power extension safety GND point) is connected to the V1053 GND. With the external GND connected the sound is excellent but I would prefer to avoid another wire connected so close to 220V.
2. Low freqency noise -
When powered from a 5V power bank, there is no noise (still needs GND to mains GND to have good quality sound) and works perfectly.
When powered from a 5V phone charger and there is no external GND connection there is a loud low freqency noise. With the external GND connected all noise disappears and works perfectly.
Analog GND is connected to digital GND? Noise from the charger? Any ways to eliminate the noise?

My setup:
- MB102 power supply - powered from 5V power bank or phone charger through USB
- NodeMCU ESP8266 ESP-12E V1.0 - ( flashed with flash_download_tools_v3.6.5.exe), powered from MB102 5V, common GND
- VS1053 (red, chip ver. 1815) MP3 with SD Card Slot  - 5V from NodeMCU, GND from NodeMCU, jack connected to HiFi amplifier (which is also connected to UPC TV box)
- STM32F103C8T6 Blue Pill (karadio-addons-master\karadioUCSTM32 ver.07.02.2019 (flashed with HW-597 (CH340)) powered from MB102 5V, common GND
- 1.8" TFT ST7735B - powered from MB102 5V and 3.3V(for LCD), common GND
- KY-040 Rotary Encoder - powered from MB102 3.3V, common GND
So now I got stuck with an operational radio but the external GND line does not look safe. Any suggestions to improve?

  Are you sure? yes | no

Zoltán Tóth wrote 01/15/2019 at 16:44 point


I want a firmware that runs the SH1106 LED display, unfortunately I couldn't solve it ... Thank you! Sorry for my weak English knowledge! If I were to get a link it would be the simplest ... The display is 128x64 size 1.3 ".

  Are you sure? yes | no

nox.air wrote 10/16/2018 at 15:58 point

Hello Jean-Pierre and everybody!

Could you advice me? I'm trying to do KaRadio32 with the ESP32 Devkitv1, but something's wrong. I suspect "Flash download tools" can't do with my ESP properly. 

First it couldn't download KaRadio32 to the ESP32 (esp_sync_blocking), but later I managed to erase (only pressing boot while ....._____....._____). Only after this I finally loaded KaRadio32 to my ESP32. I linked it to WiFi but monitoring worked during near minute and finished. Maybe the device is defected? But later I installed Mongoose OS to the ESP32. It worked and exchanged data via WiFi. I've not recieved an amplifier from Aliexpress yet, so can't test lineout.

Is there another loader for ESP32, not "Flash download tools"? And maybe I can do something else?

Thank you in advance!

  Are you sure? yes | no

makersting wrote 07/04/2018 at 12:54 point

Hello Jean-Pierre,

somehow I managed to get contact to the ESP via my mobile. When I first entered the wifi-settings, I broke up to fast: I only filled in the information for my home-ssid and its passowrd, then I accidently saved before I filled in the IP-adress of the router. Now I cant find the ESP any more in the WiFi-net. What can I do?


Edit: I maneged to fix the problem. Actualy it was a network problem, so it has had nothing to do with Karadio.

Thanx for the effort creating this great internet-radio, Jean-Pierre!

  Are you sure? yes | no

lellobov wrote 06/06/2018 at 13:05 point

kindly there is someone who can show me the schematic and code to used an LCD 16x2 and control with three keys. thanks

  Are you sure? yes | no

PIERRE wrote 05/24/2018 at 11:54 point

Hello, I build this project with a esp32 and all run for the best but i would like to move the VSPI pins (18/19/23/5) to the HSPI pin (12/13/14/15) for a simplification of a PCB design and  this don't run.

The web and telnet is OK, i can use the radio but nothing is display on the LCD.

(Type 197 ) 

I test the screen with another soft and it'ok.

I checked all the GPIO.H and all the files where SPI is called but i didn't found where i made a mistake.

Could you help me ? 

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 06/23/2018 at 22:54 point

How can I?Send the gpio.h may be

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/06/2018 at 11:07 point

Take it at
Thanks, I forgot to mention it.

  Are you sure? yes | no

TheotherMike wrote 05/06/2018 at 16:44 point

Thank you so much ! Sound over vs1053 as well as I2C-OLED are running now. So nice !!

Unfortunately after some minutes it stops music an does not respond until repowering..?

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/06/2018 at 16:46 point

See on telnet or uart log if an error is found..

  Are you sure? yes | no

TheotherMike wrote 05/06/2018 at 17:45 point

Mmh, using telnet/uart I was able to change to the correct display, did a system reboot and an ota that all works nicely.  Log does not show any errors. Log states "playing". So I tested it with vs1053 patch (what is it for?) and without...same behavior, it suddenly stops audio after some short time.

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/08/2018 at 09:09 point

For all url?

  Are you sure? yes | no

TheotherMike wrote 05/08/2018 at 09:48 point

"For all URL?"

Seems so. Whole yesterday evening I tested and had Trouble even with local Radio streams. Webpage and LCD still running until a station Change, then it completely hangs. I will reorder some Hardware.... Interestingly I used exactly this VS1053 with an ESP8266 and your Software without issues...

  Are you sure? yes | no

TheotherMike wrote 05/14/2018 at 19:57 point

Hah, it is working now ! It seems to be an issue with the ESP32. I used a new one and now its perfect !! Also, I think its running faster now...

Best regards,


  Are you sure? yes | no

TheotherMike wrote 05/06/2018 at 09:31 point

Dear JP,

I have an ESP32-WROOM on my desk and want to built your radio.

Unfortunately, I cannot find the "build/karadio32.bin" in your github!? 

Where are the install binaries located ?

Thank you in advance,


  Are you sure? yes | no

Thomas wrote 03/21/2018 at 08:19 point

Hello JP,

are there any known stability issues in 1.6.3?

I tried to build a new  Karadio and after updating  to 1.6.3 i have bootloops.

Tried on different modules. After Reflashing back to 1.0.8 it works stable.

Any Idea?



  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 03/21/2018 at 08:23 point

From 1.0.8 to 1.6.3, it is a big jump. I think that it will be useful to erase all the flash eprom, all 4MB.

  Are you sure? yes | no

Thomas wrote 03/21/2018 at 09:25 point

I have the binaries 1.0.8 laying around. And ever i build a new karadio i flash them and than i update via the Webinterface Update button.

But you're right. It is a big Jump. I will download new binaries from your Github, erease the whole flash and try again.

Flash Pattern is still identical?

1. Boot

2. User1

3. User2

4. blank

5. blank

6. default

7. default



  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 03/21/2018 at 12:38 point

The saved data structure is not compatible with the old one.
<try to erase all.

  Are you sure? yes | no

Kabron wrote 03/11/2018 at 07:08 point

I configured addon.h and gpio.h as following:

#define LCD_COLOR 128 //0x80
#define LCD_SPI 194 //0x40
#define LCD_I2C 0
#define LCD_NONE 255

#define PIN_LCD_CS GPIO_NUM_14 //CS
#define PIN_LCD_A0 GPIO_NUM_27 //A0 or D/C
#define PIN_LCD_RST GPIO_NUM_33 //Reset RES RST or not used`

compiled OK, stations receive OK
##LCD is 194#
but after start I see very very slowly LCD filling with light blue and nothing more.

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 03/11/2018 at 08:35 point

Your mistake is on addon.h. It must not be changed.
#define LCD_SPI            64 //0x40

The lcd type is set by sys.lcd command.

  Are you sure? yes | no

Kabron wrote 03/11/2018 at 10:57 point

Thank you for fast reaction.

I corrected it with no result. Additional test results I putted on github page.

  Are you sure? yes | no

Slovator wrote 03/03/2018 at 15:17 point

Is it possible to add a radio on / off function at the specified time in the project on ESP32?

  Are you sure? yes | no

wlads wrote 02/24/2018 at 13:34 point

Thank you for the project.

I do not have enough cyrillic fonts, please add

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates