Skip to content

OrcSDR v0.2.0-beta.2

Latest

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 Windows serial-status attempt opened COM17 in a way that caused a USB reset. The subsequent boot reported reset reason 11 (usb), not a panic or watchdog. Later no-reset-aware regression checks passed. This host-caused reset is included here so the verification record does not hide it.

Source and package record

  • Release: v0.2.0-beta.2.
  • Source commit: 3e0f6e00f0a3eb4f61c9cb12f09c7003996840e3, matching origin/main when release preparation began.
  • Build platform: native ESP-IDF 5.5.4.
  • The ESP-IDF boot banner reports the base application version v0.2.0. The beta.2 identity is carried by the Git tag, release record, package filename, and M5Burner metadata.
  • C6 source: ESP-Hosted 3.0.6, pinned to e1a4f5492ac44fa248d77ac971d2055f8c565442.
  • Combined Tab5 firmware: 3,380,736 bytes, SHA-256 cb724c318e942bf0078e3973dcd7b70be78a16ddd4140e72660eac8d3863e8c6.
  • Embedded C6 firmware: 1,108,768 bytes, SHA-256 5b3c3bc66ba9e57629c7d0056006f7af14ffa32218755e7de220314113051c36.
  • Local M5Burner ZIP: SHA-256 b3ae571d2f9b2ff2c8b2fafbaee69ca3a75c6fa2e9fa1e440629e8301a378632.
  • Bundle validation: M5BURNER_BUNDLE_OK.
  • Private M5Burner installation: completed and confirmed by the project owner.
  • Public M5Burner listing: the project owner confirmed pressing Publish after the private installation and exact-package device checks passed.
  • Exact-package UI, radio/dashboard, saved Wi-Fi, RF24 scan, FM audio, C6-version, and memory checks: passed as described above.

Included work: #43, #44, #45, #46, #47, and #48.

All source changes since beta.1