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
48 lines
2.2 KiB
TeX
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}.
|