Model review audits
Leaderboard / Silent Carrier

Gemini 3.8 Flash

Google Rank 10 of 14 Graded 17 Sep 2026 DM-1701 · HR-C6000 · AT1846S · STM32F405 · P25
Overall grade
F D C B A D 64 / 100

A buildable plan, on an invented number.

This is the review to hand an engineer. It gets both hardware causes: the I2S stream is the microphone, and the analog chain that feeds it is filtered for speech. It is the only audit to prescribe the fix as one register the firmware already writes — 0x58 = 0x9CDD, the DMR filter set — and it follows through with a tap, an anti-alias network, a timer-triggered ADC and DMA design, and the PLL configuration to go with it. Then it decides how much CPU the vocoder needs by writing the number down.

15–18 ms of CPU time per 20 ms voice frame appears nowhere in the repository. The project’s own measurement is 4.36M instructions per frame, and the decoder emulates at 11–16× the 72 MHz budget, or 220–320 ms. On the invented figure, 168 MHz leaves over 65% of CPU time available; on the real one it leaves the vocoder at five to seven times over. It also certifies the instruments it needed to distrust. 23 of 35 claims hold, which puts it at D.

Claims that check out
23 / 35
8 overstated, mislabelled or miscounted · 4 wrong
Decode-critical issues found
2 of 4
both halves of the analog chain, with the register fix
The vocoder cost it used
15–18 ms
per 20 ms frame; measured, it is 220–320
The Phase 2 vocoder it says is missing
in the tree
mbelib’s AMBE+2 3600×2450, twice

ConditionsClean room: a fresh copy of the repository (46eebda with its uncommitted changes, its own docs and the HR-C6000 manual) with no earlier reviews, reviewed by one model through an isolated agent harness with no network, skills or memory.

The run, not graded10 min · 75 agent steps · 77 tool calls · 40K output tokens · OpenRouter API · one-shot

Scorecard

How the 64 breaks down

Weights reflect the question asked: find what stops P25 decoding and say how to fix it. Accuracy carries the most weight because a wrong review does harm; coverage and root cause together outweigh it because an accurate review of the wrong things does not help.

Where the points went

The 100-point grade split into the rubric’s weighted slots: filled is earned, empty is lost, with the other models on this task for scale.

GPT-6 Astra
89/ 100
GPT-5.6 Sol
84/ 100
HY4 Preview
77/ 100
GPT-5.6 Luna
75/ 100
UNIONALPHA
74/ 100
Grok 4.6
70/ 100
Muse Spark 1.3 Contributor
68/ 100
DeepSeek V4.1 Flash
66/ 100
GLM 5.3
65/ 100
Gemini 3.8 Flash
64/ 100
Qwen3.8 Max
63/ 100
Qwen3.8 Flash
59/ 100
GLM 5.3 Flash
56/ 100
DeepSeek V4 Pro
53/ 100
  • 1Accuracy & evidence30 pts
  • 2Coverage of decode problems25 pts
  • 3Root cause & prioritisation15 pts
  • 4Fix plan & acceptance gates15 pts
  • 5Originality & attribution10 pts
  • 6Clarity & calibration5 pts
Accuracy & evidence30% of the grade
6519.5 pts

23 of 35 claims hold, and every register value, map symbol and clock configuration it quotes is exact. Four are wrong, and two of those — the vocoder’s CPU cost and the missing Phase 2 codec — are the ones its conclusions rest on.

Coverage of decode problems25% of the grade
4611.5 pts

The analog chain and the sample source, both complete, plus the clock gating, the RAM ceiling and one of the strongest Phase 2 sections on this task. It finds no tooling defect at all, and certifies the capture path, the test suite and the muting logic as correct.

Root cause & prioritisation15% of the grade
7411.1 pts

The causal chain is the clearest any audit has written: no route from the discriminator to I2S, so the samples are microphone audio, and the front end is filtered for speech anyway. It then removes the CPU from the causal chain on a number it made up.

Fix plan & acceptance gates15% of the grade
7010.5 pts

Concrete enough to build from: tap, filter network, ADC channel, DMA design, filter register, playback routing. But it has no acceptance gate before an irreversible hardware modification, and its CPU step is a clock change that doesn’t close the gap.

Originality & attribution10% of the grade
707.0 pts

No new defect, but more implementation engineering than any audit before it: the sampling chain, the PLL and wait-state configuration, the microphone-mute register, and a fixed-point vocoder proposal from outside the repository.

Clarity & calibration5% of the grade
844.2 pts

The best-presented review of the audits up to it: a failure-mode taxonomy, architecture diagrams, a comparison matrix, and a checklist a person could work through. Its calibration is the weak part — the wrong claims are stated as flatly as the verified ones.

Weighted total 64, grade D. Grade scale: A ≥ 90 · B 80–89 · C+ 75–79 · C 70–74 · C− 65–69 · D 50–64 · F < 50
Headline findings

Six things to know about this review

Holds up

Both halves of the analog chain, and the register that fixes them

It is the only audit to name the fix as a register the firmware already writes. Analog FM sets the AT1846S filters with 0x58 = 0xBC85; P25 should use the DMR set, {0x58, 0x9C, 0xDD}, which is what AT1846S.c writes for DMR today. It names the HR-C6000 de-emphasis at 0x34 = 0x3C alongside it, and explains both effects correctly: baseline wander from the 300 Hz high-pass, inter-symbol interference from the de-emphasis. One slip: it says the AT1846S applies de-emphasis too. The firmware’s own comment says that is turned off here because the C6000 does it.

AT1846S.c:99, 196, 215 · HR-C6000.c:2851

Holds up

The sample source, argued from three directions

0xE0 = 0xC9 sets bit 6, and the driver’s own line says that bit enables the Mic Input to Line in 1. The manual gives I2S to external codecs and vocoders and never routes the IF ADC to it. The bring-up log camped on −80 dBm carriers without a single sync detection. Its conclusion — the demodulator is being fed room audio — is the right one, and it draws the right consequence: stop working on the I2S path.

HR-C6000.c:2964 · manual §4.5, §4.6, §6 · STAGE3-BRINGUP.md

Critical error

The vocoder cost is invented, and the plan rests on it

Floating-point mbelib IMBE decoding consumes approximately 15–18 ms of CPU time per 20 ms voice frame. No such measurement exists in the repository. What does exist is STAGE4-TX-FEASIBILITY.md:36: 4.36M instructions per 20 ms frame, against the 1.44M a 72 MHz core can issue. Emulated, the decoder needs 11–16× that budget. So the 2.33× from 168 MHz does not leave over 65% of CPU time available; it leaves the vocoder at five to seven times over. The one real blocker in software is written out of the review.

STAGE4-TX-FEASIBILITY.md:36 · mbelib.c:306 · Core/Src/main.c:269–274

Critical error

It rules out a vocoder that is in the tree twice

Neither the stock firmware’s DMR vocoder blob nor open-source mbelib supports P25 Phase 2 AMBE+2 vocoding. The blob half is right. The mbelib half is not: ambe3600x2450.c is the enhanced half-rate AMBE+2 decoder, it ships in both copies of mbelib in this tree, and the bundled DSD-FME decodes Phase 2 voice with it. It also gives the Phase 2 vocoder rate as 4900 bps. It is 3600: 2450 bps of voice plus FEC — the number in the filename it missed.

src/p25/mbelib/ambe3600x2450.c · ref-sources/dsd-fme/src/dsd_mbe2.c:67

Major gap

It certifies the instruments instead of checking them

Its verdict on the software is that it is technically sound, highly compliant, and thoroughly tested because the host tests pass. The tests pass because they never compile the monitor callback that stages capture samples: the export ships the contiguous first 80 halfwords of each row while the decoder reads [j][i*2], so 158 of 160 positions differ. The parser certifies incomplete captures, pcm_starve never increments, and the test oracle shapes its waveform with the receiver’s own filter. It also certifies the muting logic, where a group call with a non-standard manufacturer ID is never opened.

p25mon.c:123, 443, 460–466 · tests/p25/run.py:264–270 · p25rx.c:159–163

Gap in the plan

It solders before it measures

The review is certain the capture is microphone audio, and the repository is not: the stock analysis says the question remains open. The plan goes straight to a hardware modification without the carrier-keyed listening test that would settle it in an afternoon, and without fixing the capture export that any such test would run through. It is also the second audit to rule the chip out without trying the one documented mode that emits 4FSK symbols at P25’s own rate.

analysis/stock-p25/REPORT.md:175–176 · manual 2553–2635

Claim check

35 claims, checked one by one

23 hold, 8 overstated, mislabelled or miscounted, 4 wrong. Each claim was checked at the lines it cites.

Every claim and its verdict 
  • Holds
  • Qualifiedoverstated, miscounted or doubtful
  • Wrong
Gemini 3.8 Flash35 claims checked

23 hold · 8 qualified · 4 wrong · 66% hold

Decode-critical issues

Found 2 of 4

The audits track 4 issues that stop this radio decoding P25. This review: no 8 kHz rule, and the CPU wall removed rather than found. How the review treated each, from the provenance table:

IssueGemini 3.8 Flash
The I2S stream is most likely microphone audio raised§1 and §3.1
HR-C6000 de-emphasis on the capture path raised§3.3, 0x34=0x3C
AT1846S FM filters, low-frequency bit, 25 kHz raised§3.3, with the DMR fix
Manual: I2S frame clock “must be 8KHz” absent
Vocoder needs 11–16× the 72 MHz CPU absentputs it at 15–18 ms per frame