From 856185c44c69edf8482d8dba4b2f4721d91be078 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Wed, 18 Mar 2026 10:41:51 +0000 Subject: [PATCH] Update requirements to reflect RTLSDR-Airband implementation MP3 instead of WAV-only, flexible config format, 3-4 channel scope, and verified hardware details for the Pi 400 target. Co-Authored-By: Claude Opus 4.6 (1M context) --- REQUIREMENTS.md | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md index 6412fd6..cfa380f 100644 --- a/REQUIREMENTS.md +++ b/REQUIREMENTS.md @@ -53,9 +53,9 @@ Single user — no additional stakeholders. | FR-001 | Simultaneous frequency monitoring | Must | | FR-002 | NFM demodulation | Must | | FR-003 | Squelch-based activity detection | Must | -| FR-004 | Automatic WAV recording | Must | +| FR-004 | Automatic audio recording | Must | | FR-005 | Conversation grouping via hang time | Must | -| FR-006 | YAML configuration | Must | +| FR-006 | Configuration file | Must | | FR-007 | Console activity logging | Must | ### 3.2 Detailed Requirements @@ -65,7 +65,7 @@ Single user — no additional stakeholders. - **Description:** Monitor all configured frequencies in parallel using a single RTL-SDR IQ capture - **User Story:** As the operator, I want all my frequencies monitored at once so that I don't miss activity on one channel while another is being recorded - **Acceptance Criteria:** - - All configured frequencies (up to 10) are monitored simultaneously + - All configured frequencies (3-4 channels) are monitored simultaneously - Uses a single RTL-SDR device with one tuning window covering the 27 MHz CB band - **Priority:** Must @@ -90,11 +90,11 @@ Single user — no additional stakeholders. #### FR-004: Automatic WAV Recording -- **Description:** Record demodulated audio to WAV files when activity is detected -- **User Story:** As the operator, I want recordings saved as WAV files named with frequency and timestamp so I can easily find and review them +- **Description:** Record demodulated audio to files when activity is detected +- **User Story:** As the operator, I want recordings saved as audio files named with frequency and timestamp so I can easily find and review them - **Acceptance Criteria:** - - Output format: WAV (raw PCM, no encoding overhead) - - Filename format: `{frequency}_{timestamp}.wav` + - Output format: MP3 (preferred) or WAV + - Filename format: `{frequency}_{timestamp}.mp3` - Files are written to a configurable output directory - **Priority:** Must @@ -108,12 +108,13 @@ Single user — no additional stakeholders. - If silence exceeds the hang time, the file is closed and a new recording starts on next activity - **Priority:** Must -#### FR-006: YAML Configuration +#### FR-006: Configuration File -- **Description:** All user-configurable parameters are specified in a YAML config file +- **Description:** All user-configurable parameters are specified in a config file - **User Story:** As the operator, I want to edit a simple config file to set my frequencies and squelch levels - **Acceptance Criteria:** - Config file includes: frequency list, squelch threshold(s), hang time, output directory + - Format: YAML, libconfig, or similar human-readable format - System reads config at startup - **Priority:** Must @@ -140,15 +141,15 @@ Single user — no additional stakeholders. ### 3.4 Data Model (Conceptual) - **Configuration:** List of frequencies, squelch threshold(s), hang time, output directory -- **Recording:** WAV file with associated metadata (frequency, start time) encoded in filename +- **Recording:** MP3 (or WAV) file with associated metadata (frequency, start time) encoded in filename - **Log entry:** Timestamp, frequency, event type, filename ## 4. Non-Functional Requirements ### 4.1 Performance -- **NFR-001:** Must handle simultaneous demodulation and recording of up to 10 channels on a Raspberry Pi 400 (quad-core ARM, 4GB RAM) — **Priority: Must** -- **NFR-002:** WAV output (no encoding overhead) to minimize CPU usage — **Priority: Must** +- **NFR-001:** Must handle simultaneous demodulation and recording of 3-4 channels on a Raspberry Pi 400 (quad-core ARM, 4GB RAM) — **Priority: Must** +- **NFR-002:** MP3 output preferred (smaller files, acceptable CPU overhead for 3-4 channels); WAV acceptable as fallback — **Priority: Must** ### 4.2 Availability & Reliability @@ -173,9 +174,14 @@ Single user — no additional stakeholders. ### 5.1 Technical Constraints -- **Hardware:** Raspberry Pi 400, RTL-SDR dongle with TCXO -- **OS:** Raspberry Pi OS 64-bit (Debian-based) +- **Hardware:** Raspberry Pi 400 (quad-core ARM Cortex-A72, 4GB RAM) +- **OS:** Raspberry Pi OS 64-bit (Debian-based), OpenSSH 10.0p2 +- **SDR dongle:** Realtek RTL2838UHIDIR with Rafael Micro R820T tuner (TCXO-equipped, no drift concerns) +- **Tuner gain range:** 0.0–49.6 dB in 29 steps - **SDR bandwidth:** ~2 MHz tuning window (sufficient for 27 MHz CB band) +- **SDR libraries:** librtlsdr built from source (`rtl_test`, `rtl_fm`, `rtl_sdr` at `/usr/local/bin/`) +- **Docker:** Installed on Pi; user `m` is in the `docker` group (no sudo required). Preferred deployment method. +- **Verified:** Hardware and driver stack confirmed working on target Pi (2026-03-18) ### 5.2 Business Constraints @@ -239,10 +245,10 @@ Single user — no additional stakeholders. | FR-001 | Simultaneous frequency monitoring | Must | Core capability — monitoring one at a time defeats the purpose | | FR-002 | NFM demodulation | Must | Required to produce listenable audio | | FR-003 | Squelch-based activity detection | Must | Without this, recordings would be continuous noise | -| FR-004 | Automatic WAV recording | Must | Primary output of the system | +| FR-004 | Automatic audio recording | Must | Primary output of the system | | FR-005 | Conversation grouping (hang time) | Must | Prevents fragmented recordings, much more usable output | -| FR-006 | YAML configuration | Must | Needed for frequency list and tuning parameters | +| FR-006 | Configuration file | Must | Needed for frequency list and tuning parameters | | FR-007 | Console activity logging | Must | Operator awareness of system activity | | NFR-001 | Pi 400 performance | Must | Hardware constraint — must run on target platform | -| NFR-002 | WAV format (no encoding) | Must | Minimizes CPU overhead on Pi | +| NFR-002 | MP3 format (preferred) | Must | Smaller files; WAV acceptable as fallback | | NFR-003 | Long-running stability | Should | Nice to have but not blocking initial delivery |