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
82 lines
2.4 KiB
TeX
82 lines
2.4 KiB
TeX
% ============================================================
|
|
% DigiRadio — Technical Manual (main file)
|
|
%
|
|
% Compile with LuaLaTeX or XeLaTeX for the real Optima font
|
|
% (a system font on macOS):
|
|
% latexmk -lualatex manual.tex
|
|
% pdfLaTeX also works and falls back to Linux Biolinum.
|
|
% ============================================================
|
|
\documentclass[12pt,a4paper,oneside]{scrreprt}
|
|
|
|
\usepackage{digiradio-manual}
|
|
\usepackage{tikz}
|
|
\usetikzlibrary{positioning, arrows.meta, fit, backgrounds}
|
|
|
|
\begin{document}
|
|
|
|
% ---------------- Cover ----------------
|
|
\begin{titlepage}
|
|
\thispagestyle{empty}
|
|
\vspace*{3.5cm}
|
|
{\color{drPetrol}\fontsize{48}{52}\selectfont\bfseries DigiRadio\par}
|
|
\vspace{3mm}
|
|
{\color{drAmber}\rule{\linewidth}{2.5pt}}
|
|
\vspace{6mm}
|
|
|
|
{\color{drInk}\LARGE Open-Source Hi-Fi DAB+/FM Receiver\par}
|
|
\vspace{3mm}
|
|
{\color{drGray}\Large Technical Manual\par}
|
|
|
|
\vfill
|
|
{\color{drInk}\large Michele Bigi\par}
|
|
\vspace{2mm}
|
|
{\color{drGray}Firmware 0.9.0 \quad\textbullet\quad 2026\par}
|
|
\vspace{2mm}
|
|
{\color{drGray}Hardware: CERN-OHL-S v2 \quad\textbullet\quad Firmware: Apache-2.0\par}
|
|
\vspace{2mm}
|
|
{\color{drGray}\small \url{https://github.com/manvalan/DigiRadio}\par}
|
|
\end{titlepage}
|
|
|
|
% ---------------- Contents ----------------
|
|
\pagestyle{plain}
|
|
{\color{drPetrol}\tableofcontents}
|
|
\clearpage
|
|
|
|
% ---------------- Chapters ----------------
|
|
\include{ch-intro}
|
|
\include{ch-hardware}
|
|
\include{ch-sigmastudio}
|
|
\include{ch-firmware}
|
|
\include{ch-si4684}
|
|
\include{ch-adau1701}
|
|
\include{ch-bt1035}
|
|
\include{ch-api}
|
|
\include{ch-classes}
|
|
\include{ch-build}
|
|
\include{ch-licensing}
|
|
|
|
% ---------------- Back cover (acknowledgements) ----------------
|
|
\cleardoublepage
|
|
\thispagestyle{empty}
|
|
\vspace*{\fill}
|
|
\begin{center}
|
|
{\color{drPetrol}\Large\bfseries Acknowledgements\par}
|
|
\vspace{1.2cm}
|
|
\begin{minipage}{0.82\textwidth}
|
|
\centering
|
|
{\color{drInk}
|
|
\textbf{PCBWay} sponsored part of the prototype PCB fabrication and assembly
|
|
costs for DigiRadio. Their contribution did not cover the full production
|
|
budget, but it materially reduced the out-of-pocket expense of the first
|
|
manufacturing run. We thank the PCBWay team for believing in this open hardware
|
|
project and for helping bring the first boards to life.\par}
|
|
\vspace{1.2cm}
|
|
\includegraphics[width=0.32\textwidth]{figures/pcbway-logo.png}%
|
|
\vspace{0.8cm}
|
|
{\color{drGray}\small\url{https://www.pcbway.com}\par}
|
|
\end{minipage}
|
|
\end{center}
|
|
\vspace*{\fill}
|
|
|
|
\end{document}
|