Model review audits
Leaderboard / P25 firmware review

DeepSeek V4.1 Flash

DeepSeek Rank 1 of 2 Graded 17 Sep 2026 DM-1701 · HR-C6000 · AT1846S · STM32F405 · P25
Overall grade
F D C B A C− 68 / 100

Right about the chip, wrong about the CPU.

DeepSeek goes where UNIONALPHA didn’t. It makes the HR-C6000 path the central question and flips the burden of proof: the I2S stream the decoder reads is most likely microphone audio. It finds the monitor leaves the chip in an undocumented hybrid state with de-emphasis switched on. On its own, that setting leaves zero decodable voice frames in my model. It also proposes the best experiment in either review: the chip’s documented one-layer 4FSK test mode, which hands demodulated bits to the MCU over SPI.

The trouble is precision. It calls the mbelib vocoder “not the blocker” and marks the sample-drain budget “verified adequate”, yet emulated instruction counts put IMBE synthesis at 11–16 times the radio’s 72 MHz CPU. Neither of its executed MCU findings holds as stated, and 5 of the 30 claims I checked are wrong. That leaves it three points ahead of UNIONALPHA, not a letter grade.

Claims that check out
17 / 30
8 overstated, miscounted or doubtful · 5 wrong
Decode-critical issues found
3 of 4
misses the vocoder CPU wall
Ideas no earlier review had
4
one-layer tap · hybrid state · 8 kHz limit · executed knee
Voice frames with de-emphasis on
0 / 180
3 kHz low-pass alone: 180 / 180 (model)

ConditionsSame brief, with UNIONALPHA’s findings handed over as a baseline, which the review acknowledges.

Scorecard

How the 68 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.

DeepSeek V4.1 Flash
68/ 100
UNIONALPHA
65/ 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
6820.4 pts

Most citations and its reading of the manual hold, but 5 of 30 checked claims are wrong, including that mbelib is not a blocker and that the drain budget is adequate, and its “executed” first-LDU loss is a harness artifact.

Coverage of decode problems25% of the grade
6616.5 pts

Finds the microphone route, the de-emphasis hybrid state and the 8 kHz frame-clock limit that UNIONALPHA missed. Misses the vocoder CPU wall, the circular RRC test oracle and, in its final synthesis, the AT1846S filter set.

Root cause & prioritisation15% of the grade
649.6 pts

Rightly makes the chip path the central question and flips the burden of proof to the microphone. Then says to fix an unreachable clock-error knee first, and clears the vocoder that cannot run in real time.

Fix plan & acceptance gates15% of the grade
7411.1 pts

The one-layer 4FSK experiment, a scoped I2S test with mic excitation and the M17 tap with pins are concrete and decisive. Its ±0.5% rate gate, reset suppression and restoring 0x10=0x80 would each create new failures.

Originality & attribution10% of the grade
707.0 pts

Credits UNIONALPHA and the Sep 8 review and adds genuinely new work: one-layer mode, the register-level hybrid state, the 8 kHz limit. Omits the Sep 10 review, which already had two of the deltas it claims.

Clarity & calibration5% of the grade
683.4 pts

Clear certainty labels and a falsification test, undercut by overclaims: “by anyone, ever”, a “confirmed defect that silently destroys voice”, “verified adequate”.

Weighted total 68, grade C−. Same rubric and scale as the UNIONALPHA grade: 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

It puts the chip path at the centre, and it’s right to

The MCU reads the HR-C6000’s C_SDO/I2S_TX pin. The manual gives that pin two personalities, vocoder PCM and CodecADC voice, neither of them discriminator audio. OpenGD77 reads the same slot and calls it “Mic Audio”. Where UNIONALPHA called the route unproven “either direction”, DeepSeek flips the presumption, adds the manual’s “must be 8KHz” frame-clock limit, and names a falsification test.

manual 496–506, 1217–1221 · main.c:464 · sound.c:444 (it cites i2s.c:444)

Validated

Its de-emphasis finding is decisive

The monitor never writes HR-C6000 register 0x34, so it inherits 0x3C from the FM receive setup: de-emphasis plus a 3 kHz low-pass. DeepSeek calls that plausibly destructive. My model makes it concrete: through the firmware’s demodulator, de-emphasis alone leaves 0 of 180 frames, while the 3 kHz low-pass alone costs nothing.

HR-C6000.c:2846–2854 · manual 2803–2808 · model: de-emphasis −6 dB/oct from 300 Hz

New idea

It found a documented bit-level path nobody had tried

Manual §5.4.6: in one-layer test mode the HR-C6000 demodulates 4FSK and leaves 36-byte frames in RX RAM at 0x30 for the MCU to read over SPI. That bypasses the codec, I2S, de-emphasis and the resampler. 36 bytes every 30 ms is exactly 4,800 symbols per second, so contiguous frames would carry every P25 symbol. Whether the mode waits for DMR sync is the open question, and the review says so.

manual 2553–2635, Table 5.6 · 1455–1461

Critical error

It clears the vocoder that cannot run in real time

The executive verdict calls the mbelib path “the correct architecture and not the blocker”, and its evidence marks the drain budget “verified adequate” because 128 samples per 1 ms tick is a 5× margin. That tick is a minimum, not a guarantee. Emulated counts put mbelib at 11–16 times the 72 MHz CPU, about 430 ms of CPU for a loud 20 ms frame, which overruns the 21 ms sample ring on every frame.

DEEPSEEK41_REVIEW.md §0 item 1 · MCU_CHAIN_FINDINGS.md N6 · mbelib.c:306

Overstated

Its executed MCU findings don’t hold as stated

B4: the “lost first LDU with zero impairments” comes from starting the synthetic stream exactly on the frame sync. Add a 40-dibit lead-in and its own harness decodes 36/36. B3: the clock-error knee is real, but the radio’s 24 kHz clock is a crystal-derived integer divide measured at exactly 24,000 Hz, so it is not the defect to fix first. Its ±0.5% gate fix would flap on 1 Hz counts quantised to ±0.67%.

adv_chain.py rerun · STAGE3-BRINGUP.md (300/300 reports at 24,000 Hz) · p25mon.c:1151–1156

Careless

Several factual slips a reviewer should have caught

DSD does skip the non-standard c0 pattern (p25p1_ldu.c:126–141). The Phase 2 sync is 20 symbols, not 12. The “1,674 references” into the codec blob are mostly the blob’s own lines; 27 lines actually reference it. “Mic Audio” is cited in the wrong file, and “108+ PASS” doesn’t match the 78 PASS lines in its own log.

ref-sources/dsd-master · ref-sources/dsd-fme dsd.h:1027 · stock-v0203.dis · run_py.log

Claim check

30 claims, checked one by one

17 hold, 8 overstated, miscounted or doubtful, 5 wrong. Each claim was checked at the lines it cites.

Every claim and its verdict 
  • Holds
  • Qualifiedoverstated, miscounted or doubtful
  • Wrong
DeepSeek V4.1 Flash30 claims checked

17 hold · 8 qualified · 5 wrong · 57% hold

Decode-critical issues

Found 3 of 4

The audits track 4 issues that stop this radio decoding P25. This review: misses the vocoder CPU wall. How the review treated each, from the provenance table:

IssueDeepSeek V4.1 Flash
The I2S stream is most likely microphone audio raisedB1
HR-C6000 de-emphasis on the capture path raisedB2, register 0x34
AT1846S FM filters, low-frequency bit, 25 kHz partlyevidence file only
Manual: I2S frame clock “must be 8KHz” raisednew
Vocoder needs 11–16× the 72 MHz CPU absent“not the blocker”