FAQ
TL;DR: DIY ESP32-S3 radio/player pulls 100 internet stations per bank and boots in ≈3 s; “building it on a breadboard is priceless learning” [Elektroda, MAJSTER XXL, #20998118]. Average parts cost ≈ €55. Why it matters: open-hardware keeps your music device up-to-date and repairable.
Quick Facts
• Core: ESP32-S3-WROOM-1-N16R8, 240 MHz dual LX7, 16 MB Flash, 8 MB PSRAM [Elektroda, MAJSTER XXL, #20998118]
• Display options: 2.42” 128×64 OLED (SSD1309) or 3.12” 256×64 OLED (SSD1322) SPI-4-wire [Elektroda, MAJSTER XXL, #21331457]
• Station banks: 1–15; up to 100 URLs each, fetched from GitHub on power-up [Elektroda, MAJSTER XXL, #20998118]
• Audio path: I²S → PCM5102A DAC, 16-24 bit / 44.1-96 kHz; FLAC/MP3/AAC via ESP32-audioI2S [Schreibfaul, 2023]
• Typical BOM: ESP32 (€10) + OLED (€15) + PCM5102A (€6) + encoders & buttons (€5) + misc PCB/box (€20)
What hardware do I need for the v2 ESP32 radio?
Minimum: 1 × ESP32-S3-WROOM-1-N16R8 module, 1 × SSD1322 256×64 SPI OLED, 1 × PCM5102A I²S DAC, micro-SD reader, two rotary encoders with push-buttons, 5 V/3 A supply, and eight jumper wires [Elektroda, MAJSTER XXL, #21331457].
How do I switch the 256×64 OLED to 4-wire SPI?
Solder a single jumper so that pads R5 and R8 are bridged; this disables the default parallel bus and enables 4-wire SPI mode [Elektroda, MAJSTER XXL, #21376526].
Why does the sketch hang after “Brak połaczenia z serwerem pogody”?
Large FLAC files reset my ESP32—what’s the fix?
Files ≥ 30 MB can overrun the audio buffer; split albums, reduce sample-rate, or compile ESP32-audioI2S with larger ring-buffer (inputBufferSize ≥ 320 kB) [Elektroda, MAJSTER XXL, #21338559].
How can I store the last played station?
Current build writes bank/station numbers to SD-card files (station_nr.txt, bank_nr.txt). On boot the sketch reloads them; no EEPROM wear and works even after power loss [Elektroda, MAJSTER XXL, #21365665].
I see “Hostaddress is not valid” in Serial—why?
Your station string contains the name plus URL. The parser now trims everything before “http” or “https”; update to commit eba3d0c6 or ensure each line starts with the protocol [Elektroda, MAJSTER XXL, #21359014].
How do I compile without SD-card attached?
Comment out writeSDCard() and readSDStations() calls; otherwise the code polls CS pin 47 and stops playback when the reader is absent [Elektroda, MAJSTER XXL, #21358386].
Can I control the radio with just two encoders?
Yes. Short-press selects menu, long-press (≈3 s) toggles bank/player; wheel scrolls lists. A joystick or 5-way tact switch can add up/down/OK if you want quick access [Elektroda, MAJSTER XXL, #21375300].
What is the typical boot and station-load time?
Cold boot to music ≤ 3 s; downloading an unseen 100-URL bank adds 1–4 s depending on Wi-Fi (–65 dBm RSSI) [Elektroda, robgold, post #21369916]
Edge case: the folder “System Volume Information” appears in the player list.
Filter the directory array so paths containing that name are skipped; otherwise the player shows a blank entry and fails to open files [Elektroda, robgold, post #21372146]
How do I update station lists?
- Fork https://github.com/sarunia/ESP32_stream
- Edit any bank*.txt online (42-char name + URL per line).
- Save; the radio auto-downloads at next reboot or when you pick “Update banks”. “GitHub editing is the fastest workflow.” [Elektroda, MAJSTER XXL, #21329513]
Can I print a ready enclosure?
STL and SketchUp files for a 160 × 40 mm aluminium-profile case (front bezel, encoder mounts, SD slot) are published in fork evo2 / cad directory [Elektroda, robgold, post #21373875]
Which libraries and versions compile cleanly?
• ESP32 board package 3.0.7
• ESP32-audioI2S 1.9.1
• U8g2 2.34.22
• Adafruit_SH110X 2.1.11
• WiFiManager 2.0.17 (change byte→uint8_t in DNS_PORT) [Elektroda, simw, post #21288589]
My OLED is blank although SPI works—what next?
Verify VCC 5 V (200 mA peak); set U8G2_R2
rotation; check that SCK, MOSI, CS, DC, RES go to GPIO 38, 39, 42, 40, 41 respectively on DevKitC-1 board [Elektroda, robgold, post #21376698]