A wifi webradio with only low cost boards ESP8266 and VS1053
Assembly C C++ Makefile Python JavaScript
Switch branches/tags
Nothing to show
Clone or download
Latest commit 17123d4 Jan 19, 2018


** ESP8266 & VS1053 Wifi WebRadio **

Ka-Radio, a WiFi shoutcast player based on ESP8266 and VS1053b chips

See also the esp32 version at https://github.com/karawin/Ka-Radio32

Basic informations

Release 1.6.3- Built on 2017/12/27


  • 1.6.3 R0: Correction for stations with the char & in path.
  • 1.6.2 R4: server NTP changed
  • 1.6.2: Add of the rssi (Received Signal Strength Indication -30:best, -99:worst) at top right of the web page.
  • 1.6.1: Click on the header to rewind to the top
  • Header stays on top of the web page
  • gzipped html tranfert. More stable and improved speed
  • The page content follows the header size.
### Release 1.5- Built on 2017/08/07 New:
  • Deeply tuned and optimized
  • Added: a button erase on the station edit
  • Little change of the menu labels.
  • If the same meta is repeated in the stream, it is filtered
  • telnet server now accepts the negociation.
  • Only one task for all servers: websocket, web interface and telnet.
  • Optimized threshold to start playing.It depends now of the size of the reception buffer.
  • New web command: version, infos and list. See the interface.txt file on setting menu.

Bugs resolved: (Thanks Kim)

  • autoplay was broken

  • monitor doesn't always start well.

  • A bug in meta for low stream stations removed.

Release 1.4.2 - Built on 2017/08/01

Unable to make the Espressif RTOS SDK 1.5.0-dev working, so I fed up.

  • This 1.4.2 is able to play every 320Kb/s stations.
  • New command: sys.version : Display the current Release and Revision.
  • As always, more free ram memories. The websocket and telnet tasks are now one task for both.
  • The web interface loading speed is improved.
  • A telnet server multi clients on port 23. It is the same interface as the uart one. So the low level management can be done via the network and it offer a complete interface for remote addons.
  • A deep modification of the memory management. More free room.
  • new commands: help and sys.adc.
  • The web volume command is now on a POST if the websocket is not ready.
  • Play all 320Kb/s Stations
    -new command: sys.version

Bugs resolved:
- a problem on the web interface close resolved.
A lot!
1.4.1 crashed on stations reload and some other occasions.
Improved: the second AP connection.
Improved: low bitrate stations meta decoding.
cli.list modified. Now for a complete listing, each line begins with CLI.LISTNUM to avoid interference with addons.

### Release 1.3.4 - Built on 2017/07/11 Bugs removed:
- Internal optimization on websocket. More free ram for the web interface multi-user. - 1.3.3 A problem when a control panel and an addon are present is removed
- 1.3.3 A problem with the AP2 password not working is removed (regression).

### Release 1.3.2 - Built on 2017/06/19 New features:
- The test task is replaced with an os timer to have more free memories - Edit station now in modal window
- Many internal optimizations
- New control buttons on the web interface
- A potential huge bug removed

###Add On: add a lcd, a remote control, and other goodies: see https://github.com/karawin/Karadio-addons

The optional led is now on GPIO2. The blue led on the ESP8266 is blinking at the same rate.
GPIO16 is now the Chip select for the external ram if any.
The external ram is detected at boot time if present.

To load this release, please flash
boot_v1.6.bin at 0x0000,
user1.4096.new.4.bin at 0x1000 ,
user2.4096.new.4.bin at 0X81000,
esp_init_data_default.bin at 0x3FC000
and blank.bin at 0x3fe000
After that, all next updates are done with the On The Air (OTA) feature.

See also https://hackaday.io/project/11570-wifi-webradio-with-esp8266-and-vs1053

Loading the esp8266

The binaries are on ESP8266-Firmware/bin/upgrade/

First use

  • If the acces point of your router is not known, the webradio inits itself as an AP. Connect the wifi of your computer to the ssid "WifiWebRadio",
  • Browse to to display the 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 is on https://github.com/karawin/ESP8266-WebRadio/blob/master/ESP8266-Firmware/WebStations.txt . Can be uploaded via the web page.
  • Karadio can be controlled by the web interface or by the uart interface or by telnet. List of commands: type help
  • See the list of command at http://karadio.karawin.fr/Interface.txt


Please tell me if you succeded or something more can be done, thanks.
The second step will add some hardware buttons (vol + -, station + -, play ...)




Generate Ka-Radio

see the http://karadio.karawin.fr/readme.txt file.


TXD to CH340G UART rx
RXD from CH340G UART tx
GPIO05 to VS1053 XDCS
GPIO04 to VS1053 DREQ
GPIO00 to VS1053 XRST
GPIO15 to VS1053 XCS

Optional external ram (23LCV1024) support (1:CS/=GPIO16 2:MISO=GPIO12 3:NC 4:GND 5:MOSI=GPIO13 6:SCK=GPIO14 7:GND 8:3.3v)
If your chip has a /Vhold in place of /VBAT, the pin 7 must be wired to VCC (pin8)
The optional led is now on GPIO2. The blue led on the ESP8266 is blinking at the same rate.
GPIO16 is now the Chip select for the external ram if any.
The external ram is detected at boot time if present.

Used hardware

WiFi : ESP8266 (ESP-12 with 32Mbits flash)
Additional MCU (as a bridge UART<=>UI): AVR
Audio decoder: VS1053