Skip to content

Releases: hardcoreerik/OrcSDR

OrcSDR v0.2.0-beta.2

Choose a tag to compare

@hardcoreerik hardcoreerik released this 05 Sep 06:49
3e0f6e0

OrcSDR v0.2.0-beta.2

This beta brings the latest OrcSDR main-branch work to the M5Stack Tab5. It improves the Home screen, changes how dashboards share control of the radio, adds automated checks for scanning and memory problems, and addresses the old receiver overlay and a visualizer scheduling problem.

This is still a beta. The changes and tests below describe what we have evidence for. They are not a promise that the firmware cannot crash.

What you will notice on the Home screen

  • The top status panel has been moved and widened so its contents have more room. The sound, visualization, and settings buttons also have more space around them.
  • Uptime has a larger label and displays hours, minutes, and seconds. The extra UP text has been removed.
  • Frequency controls and spectrum frequency labels use larger text. The layout was adjusted around those labels rather than shrinking them again.
  • Waterfall contrast now sits with the frequency controls. The old Waterfall heading has been removed to leave more room for the display.
  • The spectrum and waterfall have more viewing space. The Span/Step and Filter/Signal boxes have matching heights, and the current frequency is better positioned within its area.
  • The dashboard list now has seven visible rows. The Wi-Fi entry is called 2.4 GHz WIFI.
  • The receiver status badge now says RTL-SDR READY or NOT READY using the radio driver's readiness information. Previously, it used a USB power reading that is unavailable in the installed Tab5 library and could show disconnected even while the receiver was working. This badge reports receiver readiness; it is not a new USB power meter.

Changes to radio control and scanning

Dashboards now share a radio session system that tracks which mode is allowed to control the tuner. Work from an older session is checked before it is allowed to retune the radio. The purpose is to stop a scan or other background work from taking control back after the user selects a different mode.

FM preset scanning and the P25 control-channel survey now use one shared background scan engine. That engine handles tuning, waiting for a measurement to settle, collecting results, reporting progress, cancellation, errors, and restoring a frequency when requested.

This is a step in separating radio behavior from the screen code. It does not mean the whole radio engine has been made independent of the Tab5 interface. The LoRa survey still uses its existing path because moving it would also change how its measurements are taken and needs separate device testing.

Visualizer and receiver connection fixes

The background RF analysis task now runs at a lower priority. This gives the processor's idle task a chance to run during continuous analysis and visualization work, addressing the scheduling problem behind the investigated watchdog behavior.

The obsolete startup status painter has been removed. That code could draw the former Open SDR radio button and status strip over the FM dashboard when the RTL-SDR was connected after startup.

These changes do not establish that every possible visualizer crash or reboot has been fixed. See the limitations below.

Automated regression checks

The radio session and scan work includes host tests for normal operation and failure cases. Optimized builds and memory-checking builds cover scan cancellation, mode changes, stale work, timing rollover, and repeated scans. The memory-checking runs use tools that detect invalid memory access, leaks, and undefined behavior.

The recorded host testing includes 10,000 scan cycles without scan-time memory allocations. The device test script also checks for unexpected resets, watchdog failures, stale frequency restoration, and configured limits for free memory and task stack space. These checks improve our chances of catching a regression; they do not replace device testing.

Installing or upgrading

Use the OrcSDR beta.2 package for M5Stack Tab5 with an RTL-SDR Blog V4 receiver. For a normal upgrade, do not erase the device. The normal installation writes the P4 firmware and preserves the saved settings and Wi-Fi profiles stored separately on the device.

The package includes the same ESP-Hosted 3.0.6 C6 update design used in beta.1. The C6 is the Tab5's Wi-Fi coprocessor. M5Burner installs the P4 application; it does not automatically rewrite the C6 as part of a normal burn.

After installation, open Settings → Firmware & Updates. If the C6 is already current, no update is needed. If OrcSDR can reach it and reports a different version, use the explicitly confirmed in-app update. If the internal connection cannot be established, the device needs the separate recovery procedure rather than this normal update route.

Downloading the C6 image from GitHub or loading it from an SD card is not part of this release. USB hub support also remains disabled and deferred. The release does not increase the radio sample rates.

Earlier testing of the included changes

The following results were recorded during development before the exact beta.2 package was built:

  • The native ESP-IDF 5.5.4 build passed. The host tests passed locally and in GitHub Actions, including the memory-checking runs.
  • Device radio-scan tests completed runs of 10, 3, and 1 cycles without the test detecting a panic, watchdog failure, assertion, unexpected reset, stale frequency restoration, or configured memory-limit failure.
  • The visualizer and hot-plug changes were built and flashed with image hash verification. Phosphor Persistence was opened with a live source and no panic, watchdog, or reboot was recorded during the observed intervals. A later health sample was taken after approximately 2 hours 13 minutes of uptime, but the view had changed to Constellation. We do not count that entire time as a continuous Phosphor Persistence test.
  • The Home layout was adjusted using device captures and the owner's feedback. The final receiver-badge change was built, flashed, and passed the automated device UI workflow before PR #48 was merged. A fresh visual inspection and physical disconnect/reconnect check of that final badge were not recorded in that PR.
  • The owner previously verified the C6 update by returning the reachable C6 to 2.14.6 and updating it to 3.0.6 through OrcSDR. That earlier result applies to the unchanged update route; exact package checks are recorded separately below.

Known observations that remain unresolved

During development, a saved Wi-Fi connection became stuck while the serial log showed repeated failures on the internal P4-to-C6 connection. A separate observation showed the interface accepting FM frequencies while the receiver continued being tuned to the ADS-B frequency of 1090 MHz. Both behaviors recovered after a full reboot, but the cause was not established. Recovery after a reboot does not prove that the problems cannot return or that the radio refactor caused them.

A captured boot also reported a previous panic and a UI self-check failure followed by a successful self-check. Those observations were not diagnosed or repaired by the Home layout PR. They remain relevant to further stability testing.

After reboot, the device successfully stopped ADS-B, started FM, and connected to Wi-Fi. The owner also observed the ADS-B dashboard running with Wi-Fi enabled, but no aircraft were seen during that observation. We do not describe that as proof of decoded aircraft reception.

CodeRabbit reviewed the earlier Home layout changes without actionable findings. Its requested review of the final small badge correction was rate-limited, so we do not claim that the final correction received a completed CodeRabbit review.

Exact beta.2 package verification

The final beta.2 package was rebuilt from the exact local release tag and passed the release bundle validator. The validator checked the release version, combined P4 firmware hash, embedded C6 firmware and provenance, and the local M5Burner package layout.

The Windows installer dry-run tests also passed. They checked a matching C6 pair, a mismatched pair that safely continues with the final P4 installation, the guarded recovery route, and preservation of the NVS settings area in every simulated install plan. This was a dry run; the exact package's physical installation was performed through M5Burner as described below.

The owner then uploaded the generated firmware to M5Burner privately and confirmed that the private installation worked on the Tab5. The installed firmware booted, detected the RTL-SDR Blog V4, and reported ESP-Hosted 3.0.6 on both the P4 host and C6 coprocessor with a matching version and working internal connection.

The authenticated UI regression passed every reported screen, header, Home, RF Lab, font, workflow, transition, and state-restoration check. It returned the radio to Home in FM mode at 103.718 MHz.

A one-cycle hardware smoke test then exercised FM, ADS-B, LoRa, P25, Home, Settings, and RF Lab. FM audio continued producing buffers, the speaker on/off cycle passed, the P25 test received valid control-channel blocks, and the device returned to its starting Home/FM state. At the end of that run, the test reported no panic, watchdog, assertion, unexpected reset, USB overrun, USB drop, or audio drop.

The first Wi-Fi coexistence attempt stopped without exercising Wi-Fi because the newly installed device had no saved network profile. After the owner saved and connected a network, the exact same test passed. It disconnected and reconnected the saved network in 4.124 seconds while FM continued streaming. It also scanned the 2.4 GHz RF page, found six access points, returned to FM, and reported zero USB overruns, USB drops, and audio drops. The final health sample showed approximately 19 MB free heap, an 18.6 MB recorded minimum, 87,667 bytes of free DMA-capable memory, an 81,327-byte recorded DMA minimum, and 2,192 bytes of main-task stack headroom.

An ad hoc Win...

Read more

OrcSDR v0.2.0-beta.1

Choose a tag to compare

@hardcoreerik hardcoreerik released this 03 Sep 19:50
7694403

Highlights

  • One OrcSDR M5Burner package for M5Stack Tab5.
  • Includes a reproducibly built, pinned ESP-Hosted C6 3.0.6 image.
  • When the internal C6 is reachable but mismatched, open Settings > Firmware & Updates and explicitly confirm the in-app update. Normal upgrades preserve OrcSDR settings and saved Wi-Fi profiles.

Verified

A Tab5 was downgraded to C6 Hosted 2.12.6 using M5Stack's updater, then restored by this OrcSDR package's in-app update. After reboot, the Tab5 reported P4 host 3.0.6 and C6 3.0.6 as current.

The exact tag was rebuilt and validated: P4 image, embedded C6 provenance and hash, M5Burner bundle layout, and Windows installer dry-run safeguards.

Install

Use the M5Burner package for normal installation. If Firmware & Updates reports an unreachable C6, use the documented recovery path; do not repeatedly retry the in-app update.

This is a prerelease.

OrcSDR v0.2.0-alpha.6

OrcSDR v0.2.0-alpha.6 Pre-release
Pre-release

Choose a tag to compare

@hardcoreerik hardcoreerik released this 29 Aug 03:49
b011c1f

What's Changed

Full Changelog: v0.2.0-alpha.5...v0.2.0-alpha.6

v0.2.0-alpha.5

Choose a tag to compare

@hardcoreerik hardcoreerik released this 19 Aug 04:43

OrcSDR v0.2.0-alpha.5

Hardware-testing release for the M5Stack Tab5 and RTL-SDR Blog V4. Native ESP-IDF only.

Highlights

  • Live FM RDS on air: sequential A–B–C–D groups, confirmed PS slots, voted PTY, Radio Text from the winning lock.
  • Last tuned FM station is saved as the channel (not the 13 kHz LO command). Power-button restart lands on Home and that station.
  • Home no longer walks the LO every second, which had chopped music and frozen the scope.
  • Root installer: install-orcsdr.ps1 installs requirements.txt, flashes the P4, and checks that ESP-Hosted host/slave are both 2.12.6.
  • TV Mission Control / Hosted+speaker DRAM split from the same mainline.

Before installing

  • Windows PC with Espressif ESP-IDF 5.5.3.
  • M5Burner ESP-Hosted 2.12.6 on the Tab5 C6 (the P4 image cannot update the C6).
  • Tab5 on the PC USB Serial/JTAG port. Keep the RTL-SDR disconnected while flashing.

Copy/paste install

git clone https://github.com/hardcoreerik/OrcSDR.git
Set-Location .\OrcSDR
git checkout v0.2.0-alpha.5
Set-ExecutionPolicy -Scope Process Bypass
.\install-orcsdr.ps1

The script finds the Tab5 COM port (VID 303A PID 1001) if you omit -Port. To pass the port explicitly:

.\install-orcsdr.ps1 -Port COM17

If the C6 is still on a different Hosted version, the installer prints the M5Burner steps. After you burn 2.12.6 on the C6, re-check without rebuilding:

.\install-orcsdr.ps1 -CheckHostedOnly -Port COM17

A matching boot line looks like:

RTL_WIFI_HOSTED host=2.12.6 slave=2.12.6 match=1

Saved NVS settings and Wi-Fi profiles are preserved. After flash, unplug the PC USB Serial/JTAG cable for living-room use.

Alpha limitations

  • Hardware still varies with power, USB devices, antennas, and local RF.
  • Encrypted P25 voice is not decoded.
  • Bluetooth speaker audio is not available on the Tab5 C6.
  • Back up SD recordings before testing a new alpha.

OrcSDR v0.2.0-alpha.4

OrcSDR v0.2.0-alpha.4 Pre-release
Pre-release

Choose a tag to compare

@hardcoreerik hardcoreerik released this 16 Aug 03:04
397c737

OrcSDR v0.2.0-alpha.4

Early hardware-testing release for the M5Stack Tab5 and RTL-SDR Blog V4.

Highlights

  • ScreenController now gives Home, FM, P25, ADS-B, LoRa, Settings, and documentation capture one visible-screen owner.
  • Settings restores the exact originating dashboard; background RTL work requests UI handoff rather than drawing directly.
  • Documentation capture explicitly claims and restores screen ownership.
  • Native ESP-IDF build uses ESP-Hosted 2.12.6, M5GFX 0.2.22, and M5Unified 0.2.17.

Install

Use the native ESP-IDF workflow only. Do not use PlatformIO.

Set-Location .\OrcSDR\apps\orcsdr-tab5
.\tools\install-tab5.ps1 -Port COM17

See flash_args-v0.2.0-alpha.4.txt and RELEASE-SHA256SUMS.txt for manual ESP-IDF/esptool installation and verification. Preserve an existing known-good device image before testing an alpha release.

Validation

  • Exact source: 397c73761adb5bcbfea9ab302631e33e5a9ec71b
  • Native ESP-IDF build passed; application size: 2,024,752 bytes; 52% free in the smallest app partition.
  • On-device dashboard transition acceptance was recorded before release packaging. This release itself was not flashed as a separate hardware gate.

OrcSDR Data Catalog v1

Choose a tag to compare

@hardcoreerik hardcoreerik released this 15 Aug 15:43
6f8e452

Signed manual U.S. data catalog. Includes FAA aircraft registration lookup plus the complete FAA releasable archive, and FAA aviation-frequency lookup plus the complete NASR CSV archive. Install from Settings > Data & Maps; no automatic download. NOAA and FCC packs are not yet published.

OrcSDR v0.2.0-alpha.1

OrcSDR v0.2.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@hardcoreerik hardcoreerik released this 14 Aug 07:04
8e55638

OrcSDR v0.2.0-alpha.1

This is an early hardware-testing release for the M5Stack Tab5 and RTL-SDR Blog V4.

Highlights

  • Native ESP-IDF 5.5.3 build and flash workflow; PlatformIO is not supported.
  • ESP-Hosted 2.12.6 host pairing with Wi-Fi scan/connect while RTL reception continues.
  • Four-view FM dashboard: Listen, Spectrum, Station/RDS, and RF Health.
  • FM audio buffering and dashboard redraw fixes verified on a physical Tab5.
  • ADS-B dashboard, live aircraft tracking, FAA registration lookup, and SD database support.
  • Global Settings foundation with Wi-Fi power, antenna, rotation, and power telemetry controls.
  • Staged USB Host, RTL-SDR, and speaker startup with power-transition diagnostics.

Before installing

  • Install Espressif ESP-IDF 5.5.3 for Windows.
  • Use M5Burner to install the ESP-Hosted 2.12.6 slave firmware on the Tab5 C6.
  • Connect the Tab5 PC USB port and note its COM port.
  • Keep the RTL-SDR disconnected while flashing; reconnect it after installation.

Copy/paste install

git clone https://github.com/hardcoreerik/OrcSDR.git
Set-Location .\OrcSDR
Set-ExecutionPolicy -Scope Process Bypass
.\apps\orcsdr-tab5\tools\install-tab5.ps1 -Port COM8

Replace COM8 with the Tab5 port shown by:

Get-CimInstance Win32_SerialPort | Select-Object DeviceID, Name

The installer builds the pinned component graph, applies the guarded Tab5 integration patches, and flashes the P4 without erasing NVS settings.

Alpha limitations

  • Hardware behavior can still vary with power source, USB devices, antennas, and local RF conditions.
  • ADS-B and RDS acceptance remains ongoing.
  • Bluetooth-speaker audio is not supported by the onboard BLE-only ESP32-C6.
  • Back up any important SD recordings or databases before testing a new alpha.

OrcSDR v0.1.0

OrcSDR v0.1.0 Pre-release
Pre-release

Choose a tag to compare

@hardcoreerik hardcoreerik released this 10 Aug 03:48
87b3d69

OrcSDR v0.1.0

First public release of OrcSDR.

OrcSDR turns the ESP32-P4 / M5Stack Tab5 into a standalone
software-defined radio using an RTL-SDR Blog V4 directly over USB Host.

Highlights

  • M5Stack Tab5 reference application
  • Direct RTL-SDR Blog V4 USB Host operation
  • Live spectrum and waterfall
  • Touchscreen frequency tuning
  • FM and AM radio
  • Weather Radio / WX
  • CB radio interface
  • VHF / amateur-radio spectrum browsing
  • LoRa monitoring tools
  • Speaker audio and volume controls
  • IQ capture and analysis tooling
  • RTL-SDRv4-ESP reusable ESP-IDF component

Hardware

Tested reference configuration:

  • M5Stack Tab5 / ESP32-P4
  • RTL-SDR Blog V4
  • USB Host connection

Status

This is an early development release.

🚀 Build & Flash to M5Stack Tab5

Requirements

  • M5Stack Tab5
  • RTL-SDR Blog V4
  • PlatformIO
  • Python 3.10–3.13

1. Clone

git clone https://github.com/hardcoreerik/OrcSDR.git
cd OrcSDR/apps/orcsdr-tab5

2. Find your Tab5 port

Connect the Tab5 to your computer over USB, then run:

pio device list

Note the port assigned to the Tab5, for example COM8.

3. Build

pio run -e m5tab5_ui

4. Flash

Replace COMxx with your Tab5 port:

pio run -e m5tab5_ui -t upload --upload-port COMxx

Example:

pio run -e m5tab5_ui -t upload --upload-port COM8

Tip

After flashing, connect the RTL-SDR Blog V4 to the Tab5 USB Host port and power-cycle the Tab5 if needed.

Feedback, hardware testing, bug reports, and contributions are welcome.