Turn a Raspberry Pi 5 (or any Linux SBC) into a portable RF monitoring station with a CrowPanel 7" ESP32 HMI display and CrowView Note laptop monitor.
This project was built on an Indiedroid Nova but works identically on a Raspberry Pi 5 — see Raspberry Pi Setup Guide for a quick start.
The CrowPanel acts as a compact heads-up display for an SDR scanning station:
- LIVE/DEMO status indicator
- Active band and real-time frequency readout
- SNR bar (color-coded) + 30-point scrolling SNR history chart
- ML signal classifier with confidence percentage
- Scan and anomaly counters
- System telemetry — CPU, RAM, temperature (°F arc gauge), uptime
- Polls the SBC every 2 seconds over HTTP
The CrowView Note displays the full web dashboard with spectrum waterfall, anomaly timeline, and intelligence analysis — turning the whole setup into a portable cyberdeck laptop.
This project runs on any Linux SBC with USB and WiFi/Ethernet. Tested and compatible hardware:
| Platform | Status | Notes |
|---|---|---|
| Raspberry Pi 5 | ✅ Recommended | Best community support, widely available |
| Raspberry Pi 4 | ✅ Compatible | Slightly slower, still works great |
| Indiedroid Nova | ✅ Power User | RK3588S, 16GB RAM — what this demo was built on |
| Jetson Nano | ✅ Compatible | NVIDIA GPU bonus for ML workloads |
| Orange Pi 5 | ✅ Compatible | RK3588S, good Nova alternative |
| Any ARM64/x86 Linux | ✅ Compatible | 4GB+ RAM, USB 2.0+, Python 3.11+ |
You just need: USB port (for SDR dongle) + network (for CrowPanel to reach the SBC).
| Component | Details |
|---|---|
| Compute | Raspberry Pi 5 (recommended) or Indiedroid Nova (power user) |
| SDR | RTL-SDR Blog V4 (USB) |
| Status Display | CrowPanel 7.0" — ESP32-S3, 800×480 RGB, capacitive touch |
| Main Display | CrowView Note — 15.6" 1080p portable monitor (USB-C DP Alt Mode) |
| Antenna | Telescoping whip (pictured) |
Full parts list with purchase links: hardware/parts-list.md
See the dedicated Raspberry Pi Setup Guide for the fastest path.
-
Flash the CrowPanel — Connect via USB, build with PlatformIO:
cd crowpanel-dashboard pio run --target upload -
Run the stats sender on your Pi/Nova/SBC:
pip install psutil python3 nova-stats-sender/stats_sender.py
-
Connect CrowPanel to WiFi — Edit the WiFi credentials in
main.cppand reflash. -
The CrowPanel will start polling
http://<your-sbc-ip>:8088/statsevery 2 seconds.
See the full Setup Guide for details.
[RTL-SDR V4] ──USB──▶ [Raspberry Pi 5 / Nova / Any SBC]
│
stats_sender.py
(port 8088)
│
WiFi HTTP GET
│
[CrowPanel ESP32-S3]
800×480 LVGL UI
The stats sender (stats_sender.py) reads live scanner output and system metrics, then serves a simple JSON endpoint. The CrowPanel firmware polls this endpoint and updates the LVGL widgets in real time. It runs on any Linux SBC — the code is hardware-agnostic.
The CrowView Note runs Chromium in kiosk mode pointing at the full web dashboard, creating a portable laptop-style cyberdeck.
crowview-cyberdeck/
├── crowpanel-dashboard/ # ESP32-S3 firmware (PlatformIO + LVGL + LovyanGFX)
│ ├── src/
│ │ ├── main.cpp # Full LVGL UI + HTTP polling
│ │ └── display_driver.h # LovyanGFX RGB LCD driver
│ └── platformio.ini
├── nova-stats-sender/ # Python bridge server (runs on any Linux SBC)
│ └── stats_sender.py # Reads scanner data, serves JSON on port 8088
├── hardware/
│ └── parts-list.md
├── images/
├── docs/
│ ├── setup-guide.md
│ ├── raspberry-pi-setup.md # Quick start for Pi 5 users
│ └── troubleshooting.md
└── README.md
- rtl-ml — AI-powered radio signal classification using RTL-SDR and machine learning. The ML classifier referenced in the CrowPanel UI connects to this project.
- CrowPanel Firmware: C++ / Arduino framework, LVGL 8.3, LovyanGFX, ArduinoJson
- Stats Sender: Python 3, psutil (runs on any Linux)
- Build System: PlatformIO (espressif32@6.5.0)
- Display Driver: Custom LovyanGFX class with PCA9557 I2C GPIO expander for touch reset
![]() |
![]() |
![]() |
![]() |
- Elecrow — CrowPanel 7.0" ESP32-S3 HMI display and CrowView Note portable monitor
- AmeriDroid — Indiedroid Nova hardware partner
MIT License — see LICENSE for details.



