Files
DigiRadio/Software/docs/manual/ch-intro.tex
T
micheleandClaude Sonnet 5 c0eee4a4ad Firmware review pass: BT1035 boot retry, BluetoothJson tests, doc catch-up
BT1035Driver::boot() had zero retry on the reset+AT-init sequence — a
single hardware RESET# pulse followed immediately by AT commands,
with no second attempt if the module didn't come up in time. This is
the most plausible explanation for the intermittent "no spontaneous
UART bytes after hardware reset" / "AT init failed" boot failures
logged in docs/si4684-rf-investigation-report.md and observed again
live this morning on otherwise-identical hardware/wiring — classic
power-up timing jitter, not a permanent fault. Extracted the reset+
init sequence into resetAndInitOnce() and wrapped it in a 3-attempt
retry loop with a short delay between attempts; the one-time GPIO
config and UART driver install stay outside the loop since they don't
need repeating. Root cause of the underlying jitter is still open.

BluetoothJson.hpp was the only *Json.hpp module in the core with zero
host test coverage (status/scan/paired serialisation, auto-reconnect/
connect/speaker parsing) — every sibling module already has one.
Added bluetooth_json_test.cpp following the existing tuner_json_test
pattern; ctest now covers 20 suites instead of 19.

Documentation catch-up, found doing a full firmware re-review at the
user's request:
- POST /api/tuner/calibrate-antenna and the antcap field on
  POST /api/tuner/tune (added in a previous commit, never documented)
  are now in ch-api.tex.
- kFirmwareVersion was still hardcoded "0.8.5" despite the RF fixes,
  BLE provisioning, phone streaming, antenna calibration, and generic
  DSP param API landed since that version's actual release commit
  (0a1188a). Bumped to 0.9.0 everywhere it's mentioned (health JSON,
  the manual's title page, intro, classes, and API chapters).
- instructions.md and docs/TODO.md still described the firmware as
  frozen at 0.8.5 awaiting hardware-in-the-loop testing that has since
  happened extensively; docs/TODO.md's H5 verdict specifically still
  said "suspect U6 RF ground (re-open PCBWay)" for a bug that turned
  out to be firmware, not hardware — actively misleading, corrected.
  Both files now summarise the post-0.8.5 HIL findings and current
  open items (BT1035 root cause, intermittent HTTP unresponsiveness
  under load, antenna-limited signal quality, possibly-undersized 24 KB
  nvs partition).

Verified: idf.py build, doxygen (0 warnings), check-manual-sync,
check_si4684_blobs, ctest (20/20), two-pass xelatex manual build all
green. Flashed and confirmed live: fw reports 0.9.0, BT1035 booted on
the first attempt post-flash.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0178rASQ6ZETPMUamvpoR2KR
2026-08-19 09:23:36 +02:00

48 lines
2.2 KiB
TeX

\chapter{Introduction}
\label{ch:introduction}
DigiRadio is an open-source, high-fidelity digital radio receiver. It
receives DAB+ and FM broadcasts, processes the audio through a dedicated
signal processor, and streams the result over Bluetooth using a
high-resolution codec. Firmware~0.9.0 on \texttt{main} provides encrypted
storage, a tabbed configuration web UI, and the full REST API documented
in Chapter~\ref{ch:api}. The whole project --- hardware and firmware --- is
released as open source for the maker and audio community to study,
build, and improve.
\section{What DigiRadio is}
Most DAB+/FM hobby projects stop at basic reception. DigiRadio adds two
things that lift it into hi-fi territory: a real audio DSP stage for
equalisation and mixing, and a premium-codec Bluetooth output. The result
is a genuine wireless audio source rather than a bench demo, and, being
fully documented, a practical reference for anyone learning multi-chip
audio design or RF-aware PCB layout.
\begin{drkey}[At a glance]
A four-chip design --- Si4684 tuner, ADAU1701 DSP, ESP32-S3 host, and an
FSC-BT1035 Bluetooth transmitter --- on a six-layer board, powered from
USB-C, configured through an elegant web interface.
\end{drkey}
\section{Who this manual is for}
This manual documents the system for someone building, flashing, or
extending DigiRadio: the hardware at a block level
(Chapter~\ref{ch:hardware}), the firmware architecture
(Chapter~\ref{ch:firmware}), dedicated companion-chip guides for the
Si4684 tuner (Chapter~\ref{ch:si4684}) and ADAU1701 DSP
(Chapter~\ref{ch:adau1701}), FSC-BT1035 Bluetooth
(Chapter~\ref{ch:bt1035}), the HTTP JSON API exposed by the web UI
(Chapter~\ref{ch:api}), the per-class design reference that grows with
the code (Chapter~\ref{ch:classes}), and how to build and flash
(Chapter~\ref{ch:build}). Exact C++ signatures are generated by Doxygen
from the source; this manual explains design, behaviour, and the
reasoning behind it.
\section{Licensing summary}
The hardware is licensed under CERN-OHL-S v2 and the firmware under
Apache-2.0; full details are in Chapter~\ref{ch:licensing}. The project
repository is at \url{https://github.com/manvalan/DigiRadio}.