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?



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

pilnikov wrote 02/06/2018 at 14:51 point

Hello JeanPierre. Thank you very much for your great useful work for us. I want to modify my radio (add the WEB function to it) So I had an little idea about it, maybe she is not new, of course, but I decided to share it with you. My radio on the side can play files from USB, Micro SD, Bluetooth and AUX. Also my radio have a Ir RC. Aliexpress sells many similar low cost modules.  The idea of controlling my radio by 1 wire (through Ir line) - by small means we get more opportunities. 

How do you like this?

  Are you sure? yes | no

mauro.venturelli wrote 01/21/2018 at 11:10 point

Hello JeanPierre, first of all ,thanks for the beautiful project.

I've built one (KaRadio-32 with integrated addons) and an LCD ILI9341 194 // 240x320

Everything working fine but the image is shifted to right by abt 20 pixels,any possibility of fixing it ?



  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 01/21/2018 at 12:57 point

Look at the lcd switched off. You will see that it is the lcd itself with a black array on left.

  Are you sure? yes | no

petitjp wrote 01/18/2018 at 20:35 point

bonjour Jean-Pierre 

Je m'appelle aussi Jean-Pierre : j'ai 66 ans et j'aurai besoin de votre aide pour adapter votre système pour ma mère de 86 ans... elle écoute France Inter en WiFi mais elle devient très vous dis quoi (je suis chti) par Mel : mode Ip. Merci

  Are you sure? yes | no

Eugene wrote 12/21/2017 at 14:18 point

Hello Jean-Pierre, thank you very much for your wonderfull project. I have some problem with lcd display ( ili9341) initialization . I can see just:


(c) Karawin

IR+clcd V1.1


and nothing more. I use arduino pro mini + lcd ili 9341 + karadioUCglib. Uart speed 28800 same on arduino and esp 12f. (ucglibConf: Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 7, /*data=*/ 6, /*cd=*/ 5 , /*cs=*/ 3, /*reset=*/ 4); ) All worked on 5110 lcd. but i haven't it now. Can you help please? 

ps: sorry for my english =-)

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 01/21/2018 at 13:01 point

Probably a problem of uart if nothing seems received. I don't have a prototype to test it.

  Are you sure? yes | no

koka5675766 wrote 12/09/2017 at 07:27 point

Hello. At me the offer to the author, to add the timer of inclusion and deenergizing on time.

  Are you sure? yes | no

vis22 wrote 11/01/2017 at 17:28 point

Hello, for quality sound it is important to know the level of wi-fi signal. Is there a possibility to bring the level indicator wi-fi access the management page of Karadio.

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 11/01/2017 at 18:05 point

I tried some time ago, but it broke somethings. I agree that it is a good feature. I will try again.

Done in 1.6.2

  Are you sure? yes | no

vis22 wrote 11/02/2017 at 20:35 point

Many thanks for your promptness. Updated to 1.6.2, the wi-fi indicator is working.

  Are you sure? yes | no

Thomas wrote 09/03/2017 at 12:33 point

Hi JP, i have a big problem. After upgrading from 1.1.7 to 1.6 I have no sound anymore. The slider for loudness goes from minus 127 to 0. Is there a change from a variable to a signed type? I tried to enable the patch as well but no success. Any further Idea what to try?

Thanks a lot and have a nice Sunday


  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 09/03/2017 at 13:04 point

It seems that your vs1053 doesn't like the vs patch. To disable it on the uart interface or with telnet type the command
and reset the esp8266<

The slider in db is from -127db to 0db

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 09/03/2017 at 13:11 point

Or may be another problem on wire because it is the only cause i can imagine. See the log on the serial at the beginning to see if the vs is well detected.

  Are you sure? yes | no

Thomas wrote 09/11/2017 at 06:55 point

Hi JP, it seems to be a defect in Flash memory.

I tried several things. A reflash ended in a blinking Pattern twice a second and no serial output. So i assume the flash is dead. I replaced the ESP8266 board and now it runs good again.



  Are you sure? yes | no

satos wrote 08/27/2017 at 13:26 point

Hi,I like your projekt very much.
Now i have a little problem with the OLED Display.
Sometimes it loses connection to ESP and the Text  becomes  static.
I use a Wemos D1 mini and the Arduino ATmega 328 mini pro 8Mhz 3.3V to
drive the OLED. I also use IR and the Switches.
When i set the uart speed again (sys.uart("28800") it works
for some time, only the displayed Ip at startup is then But Sound is ok and the "real" IP is also reachable with the Browser.
I work with Version 1.6 and i believe it worked better with 1.4 in my Case. Any Ideas?

  Are you sure? yes | no

jan wrote 08/22/2017 at 18:04 point

Is it possible to make a soft reset from the ardruino 

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 08/22/2017 at 20:08 point

from the arduino? I don't have an arduino on this project apart the addon for lcd and controls. Anyway, to send a reboot on the serial, the command is

  Are you sure? yes | no

ernie 881 wrote 06/09/2017 at 14:59 point

I personally think that the red VS1053B modules e. g. are much better than the blue ones labeled "lcsoft studio" or "lc technology". These were or damaged at arrival or dead after a few hours and don't have pin 34 pulled down (mp3 enabled at startup see ).

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 06/13/2017 at 20:19 point

I own all models lcsoft, red one and alientek (more complete than other) and all play for month now without problem.

The pin 34 is not a problem with the software patch.

  Are you sure? yes | no

ldv82 wrote 05/30/2017 at 13:44 point

Most likely, this depends on the compatibility of VS1053 and DAC. You will use an external DAC instead of the built-in VS1053.

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/30/2017 at 16:37 point

I am not an expert on DAC. All I know is:
##I2S speed: 0, 0=48kHz, 1=96kHz, 2=192kHz#
from the vs1053.

  Are you sure? yes | no

brony wrote 05/20/2017 at 04:53 point

Hi. Could you implement so called "radio buttons" to select preset stations?

  Are you sure? yes | no

aqvarius-sey wrote 05/18/2017 at 14:57 point

on version 1.1.5 strange problem. if you have installed memory and increase the volume of the radio goes silent. only a reboot helps. if the memory is to retrieve all works. checked all the connection is correct.

  Are you sure? yes | no

aqvarius-sey wrote 05/18/2017 at 10:05 point

hi! in the beginning I want to say thank you for a great project! I have a question to the Creator. updated from version 1.1.5 to 1.2.1. buttons connected to an analog input. problems: 1. when adjusting the volume there is no smooth adjustment while holding the button. 2. when you press short the volume randomly changes (jumps from low to high and back). in version 1.1.5 often, she cleared the EEPROM in the esp8266, you need to re-set the network settings, and list of stations.

  Are you sure? yes | no

AndrzejSc wrote 05/16/2017 at 14:32 point

I have a problem when change uart to 9600, after reset radio doesn't play. If I change back to 115200 it's play again. Debug informations is the same at both cases. Any ideas ?

  Are you sure? yes | no

ldv82 wrote 05/16/2017 at 09:44 point
What are the advantages of ESP32? Any new functions will be at the radio?

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/16/2017 at 09:53 point

Don't know yet ;-)
Just for fun and may be bluetooth, but I have to learn it before.

  Are you sure? yes | no

ldv82 wrote 05/15/2017 at 13:54 point

jp cocatrix 

Do not plan a version STM32+SSD1306+encoder?

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/15/2017 at 22:32 point

Yes, i'am working on it. Some technical problem with u8glib ...

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/30/2017 at 16:33 point

Too busy to study the STM32. I have one but unpacked for the moment.

  Are you sure? yes | no

Roman wrote 05/13/2017 at 15:29 point

HI,Problem! Radio sometimes stops working (hangs)!!!!


Best regards,
~~ Roman

  Are you sure? yes | no

Flex wrote 05/14/2017 at 15:04 point


I’ve got a similar problem, sometimes stops the VS Coding and needs a reset. The NodeMCU and Website keep working well, but the speaker didn’t get a signal from the decoder. It seems to happen randomly, sometimes after 20min and othertimes the systems run over hours perfectly.

I use an NodeMCU connected to an Arduino (for the OLED and a FM transmitter), buttons and such an VS1053:

It could be a pointer issue of the VS, when I stream from my Shoutcast-Server with 320kbps stereo it feels like the problem comes earlier as if I stream with 98kbps mono signal.



  Are you sure? yes | no

cwojtala wrote 05/03/2017 at 11:49 point

Hi, i've got an issue. I flashed the esp8266 with the esptool like this: write_flash 0x000 boot_v1.6.bin 0x01000
0x81000 0x7e000 blank.bin 0x3fe000 blank.bin
0xfc000 esp_init_data_default.bin 0x3fc000 esp_init_data_default.bin

and it seemed to work. i can connect to the AP but when i fill in the SSID ans password an then click validate nothing happens, after a reset its still in ap mode....

pls hlp


  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/03/2017 at 13:46 point

dhcp, or ip,mask,  gateway?

In dhcp the ip may be read on the uart interface.

  Are you sure? yes | no

cwojtala wrote 05/03/2017 at 13:59 point tried both. it starts always in ap mode again

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/03/2017 at 14:01 point

check with a terminal on the usb com port. You will see the error. Certainly a bad password.

  Are you sure? yes | no

cwojtala wrote 05/03/2017 at 14:51 point

dont ask m how but after a couple resets ist working now. what i observed is tha at the beginning there was no mac adress next to the wlan security options, but now is is there and its working. thx for this very cool project

  Are you sure? yes | no

Jean-Pierre Cocatrix wrote 05/03/2017 at 14:23 point

notice that the validate will reset automatically. It is the validate on right of the Wifi & Network label

  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