Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
Y

yoradio

> 编程语言
Open source

Web-radio based on ESP32-audioI2S library

1.1K stars0 likes1 views
WebsiteGitHub

About

Web-radio based on ESP32-audioI2S library

ёRadio

Web-radio based on ESP32-audioI2S or/and ESP32-vs1053_ext library

  • Hardware
  • Connection tables
  • Software dependencies
  • Hardware setup
  • Quick start
  • Detailed start
  • Update
  • Update over web-interface
  • Controls
  • MQTT
  • Home Assistant
  • More features
  • Plugins
  • Version history
  • Описание на 4PDA

NEW!

yoRadio Printed Circuit Boards repository:

https://github.com/e2002/yopcb


More images in Images.md

Hardware

Required:

ESP32 board: https://aliexpress.com/item/32847027609.html
I2S DAC, roughly like this one: https://aliexpress.com/item/1005001993192815.html
https://aliexpress.com/item/1005002011542576.html
or VS1053b module : https://aliexpress.com/item/32893187079.html
https://aliexpress.com/item/32838958284.html
https://aliexpress.com/item/32965676064.html

Optional:

Displays
  • ST7735 1.8' or 1.44' https://aliexpress.com/item/1005002822797745.html
  • or SSD1306 0.96' 128x64 I2C https://aliexpress.com/item/1005001621806398.html
  • or SSD1306 0,91' 128x32 I2C https://aliexpress.com/item/32798439084.html
  • or Nokia5110 84x48 SPI https://aliexpress.com/item/1005001621837569.html
  • or ST7789 2.4' 320x240 SPI https://aliexpress.com/item/32960241206.html
  • or ST7789 1.3' 240x240 SPI https://aliexpress.com/item/32996979276.html
  • or SH1106 1.3' 128x64 I2C https://aliexpress.com/item/32683094040.html
  • or LCD1602 16x2 I2C https://aliexpress.com/item/32305776560.html
  • or LCD1602 16x2 without I2C https://aliexpress.com/item/32305776560.html
  • or SSD1327 1.5' 128x128 I2C https://aliexpress.com/item/1005001414175498.html
  • or ILI9341 3.2' 320x240 SPI https://aliexpress.com/item/33048191074.html
  • or ILI9341 2.8' 320x240 SPI https://aliexpress.com/item/1005004502250619.html
  • or SSD1305 (SSD1309) 2.4' 128x64 SPI/I2C https://aliexpress.com/item/32950307344.html
  • or SH1107 0.96' 128x64 I2C https://aliexpress.com/item/4000551696674.html
  • or GC9106 0.96' 160x80 SPI (looks like ST7735S, but it's not him) https://aliexpress.com/item/32947890530.html
  • or LCD2004 20x4 I2C https://aliexpress.com/item/32783128355.html
  • or LCD2004 20x4 without I2C https://aliexpress.com/item/32783128355.html
  • or ILI9225 2.0' 220x176 SPI https://aliexpress.com/item/32952021835.html
  • or Nextion displays - more info
  • or ST7796 3.5' 480x320 SPI https://aliexpress.com/item/1005004632953455.html?sku_id=12000029911293172
  • or GC9A01A 1.28' 240x240 https://aliexpress.com/item/1005004069703494.html?sku_id=12000029869654615
  • or ILI9488 3.5' 480x320 SPI https://aliexpress.com/item/1005001999296476.html?sku_id=12000018365356570
  • or ILI9486 (Testing mode) 3.5' 480x320 SPI https://aliexpress.com/item/1005001999296476.html?sku_id=12000018365356568
  • or SSD1322 2.8' 256x64 SPI https://aliexpress.com/item/1005003480981568.html
  • or ST7920 2.6' 128x64 SPI https://aliexpress.com/item/32699482638.html
  • or ST7789 2.25' 284x76 SPI https://aliexpress.ru/item/1005009016973081.html

(see Wiki for more details)

Controls
  • Three tact buttons https://www.aliexpress.com/item/32907144687.html
  • Encoder https://www.aliexpress.com/item/32873198060.html
  • Joystick https://aliexpress.com/item/4000681560472.html
    https://aliexpress.com/item/4000699838567.html
  • IR Control https://www.aliexpress.com/item/32562721229.html
    https://www.aliexpress.com/item/33009687492.html
  • Touchscreen https://aliexpress.com/item/33048191074.html
RTC
  • DS1307 or DS3231 https://aliexpress.com/item/4001130860369.html

Connection tables

Use this tool to build your own connection table and myoptions.h file.

https://e2002.github.io/docs/myoptions-generator.html


Dependencies

Libraries:

Library Manager: Adafruit_GFX, Adafruit_ST7735*, Adafruit_SSD1306*, Adafruit_PCD8544*, Adafruit_SH110X*, Adafruit_SSD1327*, Adafruit_ILI9341*, Adafruit_SSD1305*, TFT_22_ILI9225* (* depending on display model), OneButton, IRremoteESP8266, XPT2046_Touchscreen, RTCLib
Github: ESPAsyncWebServer, AsyncTCP, async-mqtt-client (if you need MQTT support) / , add stations to playlist (or import WebStations.txt from KaRadio) 9. Well done!

See wiki for details


Update

  1. Backup your settings:
    download http:///data/playlist.csv and http:///data/wifi.csv and place them in the yoRadio/data/data/ folder
  2. In ArduinoIDE - upload sketch data via Tools→ESP32 Sketch Data Upload
  3. Upload the sketch to the board
  4. Go to page http:/// in the browser and press Ctrl+F5 to update the scripts.
  5. Well done!

Update over web-interface

  1. Backup your settings:
    download http:///data/playlist.csv and http:///data/wifi.csv and place them in the yoRadio/data/data/ folder

  2. Get firmware binary: Sketch → Export compiled binary

  3. Get SPIFFS binary: disconnect ESP32 from your computer, click on ESP32 Data Sketch Upload.
    You will get an error and file path

  4. Go to page http:///update and upload yoRadio.ino.esp32.bin and yoRadio.spiffs.bin in turn, checking the appropriate upload options.

  5. Well done!


MQTT

  1. Copy file examples/mqttoptions.h to yoRadio/ directory
  2. In the mqttoptions.h file, change the options to the ones you need
  3. Well done!

Home Assistant

  1. Requires MQTT integration
  2. Copy directory HA/custom_components/yoradio to .homeassistant/custom_components/
  3. Add yoRadio entity into .homeassistant/configuration.yaml (see example)
  4. Restart Home Assistant
  5. Add Lovelace Media Player card to UI (or mini-media-player card)
  6. Well done!

More features

  • Can add up to 65535 stations to a playlist. Supports and imports KaRadio playlists (WebStations.txt)

  • Telnet with KaRadio format output
    see list of available commands

  • MQTT support
    Topics:
    MQTT_ROOT_TOPIC/command - Commands
    MQTT_ROOT_TOPIC/status - Player status
    MQTT_ROOT_TOPIC/playlist - Playlist URL
    MQTT_ROOT_TOPIC/volume - Current volume
    Commands:
    prev - prev station
    next - next station
    toggle - start/stop playing
    stop - stop playing
    start, play - start playing
    boot, reboot - reboot
    volm - step vol down
    volp - step vol up
    vol x - set volume
    play x - play station x

  • Home Assistant support


Plugins

The Plugin class serves as a base class for creating plugins that hook into various system events.
To use it, inherit from Plugin and override the necessary virtual methods.
Place your new class in the src/plugins/ directory More details can be found in the comments within the yoRadio/src/pluginsManager/pluginsManager.h file and at here.
Additional examples are provided in the examples/plugins folder. Work is in progress...


Version history

v0.9.720

  • PR #211 https://github.com/e2002/yoradio/pull/211
  • fix packets lost in HLS-TS
  • fix stuttering if datatransfer is chunked
  • split processWebStream/processWebFile
  • fixed the error of connecting to the next access points from the list if the first one is unavailable
  • fixed playback control errors from Home Assistant
  • the DEF_SPI_FREQ parameter, intended for setting the user speed SPI of displays, has been removed from the settings (they work fine anyway)
  • fixed an error connecting to the MQTT server during initial boot in SDCARD mode

v0.9.711

  • fixed compilation error for LCD displays #210

v0.9.710

  • rewritten ILI9225 display driver: now it supports framebuffer like the others and is more stable
  • fixed clock update bug when changing timezone in settings
  • bug/warnings fixes

v0.9.702

  • fixed compilation error for Nokia5110 displays

v0.9.700

  • added support for ST7789 320x170 displays
    #define DSP_MODEL DSP_ST7789_170
  • added support for LCD 20x2 displays (e.g. WH2002A)
    #define DSP_MODEL DSP_2002 or
    #define DSP_MODEL DSP_2002I2C
  • added Russian language support for LCD displays that natively support Russian
    to enable, add #define LCD_RUS in myoptions.h
    PS: I cannot say in advance whether your LCD display supports Russian.
    PS2: the method of “Russification” for LCD displays without native Russian support (based on 8 custom characters) cannot be used, since 8 symbols are too few to display all the required information.
  • bug fixes

v0.9.693

  • fixed incorrect behavior of the HIDE_VU setting #205
  • fixed CORRUPT HEAP error when playing "invalid links" #203
  • optimized code of utfToAscii utf8Rus

v0.9.689

  • fixed artifacts in scrolling text

v0.9.686

  • fixed SD card connection bug in configurations with SD_SPIPINS defined
  • time synchronization setting

v0.9.682

  • fixed bug with redundant epoch time being added to the tag in SD mode https://t.me/yoradiochat/66688

v0.9.680

  • fixed clock display bug when exiting screensaver in playback mode
  • increased number of SD card initialization attempts when switching mode

v0.9.676

  • fixed bug with incorrect text clipping on scrolling widgets

v0.9.670

  • display performance optimization
  • to improve rendering smoothness, a framebuffer has been added for TFT SPI displays ST7735, ST7789, ILI9341, GC9106, ST7796, GC9A01A, ILI9488, ILI9486
    the framebuffer is applied only to moving elements (scrolling text, VU meter, clock)
    the framebuffer works on modules with additional PSRAM
    on such modules, the framebuffer is enabled automatically, no extra steps required
    to disable the framebuffer, add #define USE_FBUFFER false in myoptions.h
    on modules without PSRAM, the framebuffer is disabled by default. It can be forced on by adding #define SFBUFFER in myoptions.h
    but in that case, free memory (as well as HTTPS streams) will be severely limited
  • fixed compilation error for Nextion displays
  • code cleanup, optimization, and refactoring
  • bug fixes

v0.9.574

  • fixed compilation error for certain displays when #define DSP_INVERT_TITLE false is set
  • fixed compilation error for DSP_DUMMY

v0.9.570

  • added support for ST7789 284x76 2.25' SPI displays https://aliexpress.ru/item/1005009016973081.html
    note: the brightness pin of this display should be pulled up to GND

v0.9.561

!!! a full update with Sketch data upload is required !!!
or-> just upload `yoRadi

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C++

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言