FM radio app for the Flipper Zero that controls external FM tuner boards over I2C. Supports TEA5767 and Si4703 chips with automatic detection.
- Dual chip support β auto-detects TEA5767 or Si4703 at startup (or force a chip in Settings)
- Volume control (Si4703) β OK cycles Low β Med β High β Mute; hold OK for instant mute/restore
- Start Volume setting (Low / Med / High / Last) β "Last" remembers your volume between runs
- Resume Station β reopens the frequency you were listening to last time
- Region-based station lists loaded from SD card (auto-creates defaults if missing)
- Preset up/down with on-screen indicators
- Seek up/down with adjustable seek strength (1β15)
- Fine tuning in 0.1 MHz steps (Tuner view)
- Audio mode: Stereo / Mono (Left) / Mono (Right)
- Mute on exit (standby behavior) toggle
- In-app station file viewer
- All settings saved to SD card
| Chip | Datasheet |
|---|---|
| TEA5767 | Datasheet |
| Si4703 | Datasheet |
| Signal | Flipper Pin |
|---|---|
| VCC | 3V3 (Pin 9) |
| GND | GND (Pin 18) |
| SCL (SCLK) | C0 (Pin 16) |
| SDA (SDIO) | C1 (Pin 15) |
| Signal | Flipper Pin |
|---|---|
| VCC | 3V3 (Pin 9) |
| GND | GND (Pin 18) |
| SCL (SCLK) | C0 (Pin 16) |
| SDA (SDIO) | C1 (Pin 15) |
| RST | A4 (Pin 4) β required |
| SEN | tie to 3.3V (selects I2C mode; tied HIGH on most breakouts) |
Note: The Si4703 will not respond on I2C without the RST pin wired β it needs a special powerup sequence (SDIO held low while RST rises).
A full Flipper Zero pinout diagram is in docs/flipper-zero-pinout.jpg.
| Button | Action |
|---|---|
| Up | Preset Up β² |
| Down | Preset Down βΌ |
| Left | Seek Down |
| Right | Seek Up |
| OK | Volume: Low β Med β High β Mute (Si4703) / Toggle Mute (TEA5767) |
| OK (hold) | Instant mute β hold again to restore previous volume |
In the Tuner view, Left/Right fine-tune in 0.1 MHz steps and Up/Down auto-seek.
Station lists are .txt files on your SD card at:
/ext/apps_data/fm_radio/
Default files (auto-generated if missing):
toronto.txtβ Toronto, Canadausa.txtβ USA major citieseurope.txtβ Europe generalcustom.txtβ edit this for your own stations!
Format, one station per line (up to 100 per region):
88.5|Cool FM
95.3|Rock Station
101.1|Jazz Radio
# Lines starting with # are comments
To change regions: open the app β Settings β choose your region. Use Station Files in the main menu to browse each region file in-app.
| Setting | Description |
|---|---|
| Chip Select | Auto (detect) / TEA5767 / Si4703 |
| Region | Which station list to load |
| Start Volume | Low / Med / High / Last β "Last" restores the volume from your previous session (Si4703) |
| Resume Station | On = reopens the last tuned frequency at startup; Off = starts at the first preset |
| Mute On Exit | On = radio goes to standby when you exit; Off = keeps playing |
| Seek Strength (1β15) | Lower = finds weaker stations, higher = only strong stations (default 7) |
| Audio Mode | Stereo / Mono (Left) / Mono (Right) β Si4703 supports Stereo/Mono only |
Settings are saved automatically to /ext/apps_data/fm_radio/settings.cfg.
Build with ufbt from the project directory:
ufbt
To build and launch on a connected Flipper:
ufbt launch
- DUAL_CHIP_SUPPORT.md β how dual-chip detection and the unified radio API work
- docs/si4703-datasheet.pdf β Si4703 chip reference
- docs/arduino-reference-Si4703.ino β Arduino reference sketch used during Si4703 driver development
- Cleaner "Connect FM Tuner" screen: per-chip pinout (Si4703 / TEA5767) with shared power line
- Removed stale fallback wiring text that listed the wrong RST pin
- Fixed Si4703 tuning β two init bugs kept the crystal oscillator from starting (TEST1 must be written as literal
0x8100, and GPIO3 must stay high-impedance because the 32.768 kHz crystal hangs off RCLK/GPIO3). Tune and seek now complete reliably. - Volume control on Si4703 β OK cycles Low β Med β High β Mute; hold OK for instant mute with restore
- New Start Volume setting (Low / Med / High / Last)
- New Resume Station setting β reopens your last frequency on startup
- Last volume and last station persist across runs
- Si4703 support with automatic chip detection (TEA5767 still fully supported)
- Chip Select setting (Auto / TEA5767 / Si4703)
- Unified radio API routing to the detected chip
- Signal display shows chip type
- Updated wiring docs and error screens
- Settings menu with region selection
- Station lists load from SD card (.txt files), auto-generates defaults
- Mute On Exit toggle
- Adjustable RSSI seek strength (1β15)
- Audio mode selection (Stereo / Mono-L / Mono-R)
- Preset up/down icons
- Station files viewer
- Reformatted code
- Added station names
- Created TEA5767 library and first functioning app
- Redirect TEA5767 audio to a GPIO and play back on the Flipper internal speaker
- Favorite station marking
- Recent stations history
- RDS support (Si4703)
GPLv3
Coolshrimp β https://CoolshrimpModz.com



