Skip to content

[dev test] TMM27128AD — FAIL (ce5bfe529b0d) #73

Open

Description

@dim20

canonical part number: AM27128A
elapsed: 30.8s

Step Verdict Runs Took Reason
id BAD 1 3.53s chip-ID check did not return OK
read BAD 2 6.91s -
blank-check SKIPPED 1 - Programmer error during init: Chip ID 0x303 does not match expected ID 0x189
write-partial SKIPPED - - chip-ID mismatch — destructive steps gated (chip left pristine)
verify SKIPPED - - no write target available for verify
erase NA - - -
write-baseline-b NA - - -
write-baseline-a NA - - -
sdp-lock NA - - -
write-inhibited NA - - -
sdp-unlock NA - - -
write-restored NA - - -
{
  "schema_version": "2.0",
  "generated": "2026-09-12T20:00:29Z",
  "elapsed": 30.804,
  "auto_capture": {
    "host_version": "3.0.0b39",
    "fw_board_identity": "3.0.0b27:uno",
    "hw_revision": "Rev 2.0-class",
    "chip": "AM27128A",
    "protocol": "7",
    "chip_id_expected": 393,
    "chip_id_actual": 771,
    "chip_id_mismatch_reason": null,
    "canonical_part_number": "AM27128A"
  },
  "transport_health": {
    "cobs_errors": "not measured",
    "crc_failures": "not measured",
    "decode_failures": 0,
    "probe_timeouts": 0,
    "resync_body_truncated": 0,
    "resync_length_missing": 0,
    "retries": "not measured",
    "timeouts": 0,
    "transport_suspect": false
  },
  "steps": [
    {
      "op": "id",
      "verdict": "BAD",
      "status": "COMPLETE",
      "run_count": 1,
      "reason": "chip-ID check did not return OK",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": 771,
      "duration_s": 3.529,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "read",
      "verdict": "BAD",
      "status": "COMPLETE",
      "run_count": 2,
      "reason": "",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": 6.913,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "blank-check",
      "verdict": "SKIPPED",
      "status": "COMPLETE",
      "run_count": 1,
      "reason": "Programmer error during init: Chip ID 0x303 does not match expected ID 0x189",
      "error_code": 185,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "write-partial",
      "verdict": "SKIPPED",
      "status": "SKIP",
      "run_count": 0,
      "reason": "chip-ID mismatch \u2014 destructive steps gated (chip left pristine)",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": "chip-ID mismatch \u2014 destructive steps gated (chip left pristine)"
    },
    {
      "op": "verify",
      "verdict": "SKIPPED",
      "status": "SKIP",
      "run_count": 0,
      "reason": "no write target available for verify",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "erase",
      "verdict": "NA",
      "status": "SKIP",
      "run_count": 0,
      "reason": "",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "write-baseline-b",
      "verdict": "NA",
      "status": "SKIP",
      "run_count": 0,
      "reason": "",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "write-baseline-a",
      "verdict": "NA",
      "status": "SKIP",
      "run_count": 0,
      "reason": "",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "sdp-lock",
      "verdict": "NA",
      "status": "SKIP",
      "run_count": 0,
      "reason": "",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "write-inhibited",
      "verdict": "NA",
      "status": "SKIP",
      "run_count": 0,
      "reason": "",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "sdp-unlock",
      "verdict": "NA",
      "status": "SKIP",
      "run_count": 0,
      "reason": "",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    },
    {
      "op": "write-restored",
      "verdict": "NA",
      "status": "SKIP",
      "run_count": 0,
      "reason": "",
      "error_code": null,
      "fingerprint": null,
      "fingerprint_total": null,
      "fingerprint_bad": null,
      "fingerprint_bad_pct": null,
      "fingerprint_evidence": null,
      "divergence": null,
      "chip_id_detected": null,
      "duration_s": null,
      "write_region_start": null,
      "write_region_length": null,
      "write_bits_cleared": null,
      "write_bits_retained": null,
      "write_current_source": null,
      "write_coverage": null
    }
  ],
  "banner": {
    "n_ran": 2,
    "m_applicable": 5
  },
  "voltage": {
    "vpp_before_mv": "not measured",
    "vpp_after_mv": "not measured",
    "vpe_before_mv": "not measured",
    "vpe_after_mv": "not measured"
  },
  "is_submittable": true,
  "dedup_fingerprint": "ce5bfe529b0d",
  "db_diff": {
    "current_support_status": "supported",
    "proposed_disposition": "suggests: community-fail signal (advisory -- human triage required)",
    "ladder_state": "community-fail"
  },
  "sdp_hold_state": "NOT-RUN",
  "run_status": "COMPLETE",
  "is_uv": true,
  "rail_reading_disclosure": "vpp/vpe readings measure the regulator rail only -- they do not show whether the eprom socket is connected (advisory)"
}

Activity

  1. dim20 commented on Sep 12, 2026

    @dim20
    Author

    The physical chip tested here is a Toshiba TMM27128AD/TMM27128A (D stands for quartz window), which is not currently listed in the database.

    I executed the dev test using the AM27128A profile as a close equivalent in order to generate this diagnostic report. The chip ID mismatch error is expected due to this substitution. As shown in the logs, the programmer successfully read the actual chip ID for the Toshiba part as 0x0303.

    Please let me know if any further testing is needed to add the TMM27128A to the database.

  2. henols commented on Sep 16, 2026

    @henols
    Owner

    Triage — this is not an AM27128A failure, and 0x0303 is probably not an identity

    Thanks for saying up front that the physical part is a Toshiba TMM27128AD and that the
    AM27128A profile was a deliberate substitution, @dim20 — that saved a pointless datasheet pass
    on the AMD part. Nothing here is evidence about the AM27128A entry, so no cross-check of it is
    posted.

    Two things to flag before this turns into a database row, though, because I think the reading
    of 0x0303 may not hold.

    1. The read step failed on its own, and that is the part that does not fit.

    A substituted profile explains the ID mismatch completely — different part, different
    signature, mismatch expected. What it does not explain is this:

    Step Verdict Status Runs Gating reason
    id BAD COMPLETE 1 — (detected 0x0303)
    read BAD COMPLETE 2 none — the field is empty
    blank-check SKIPPED — — Chip ID 0x303 does not match expected ID 0x189
    write-partial SKIPPED — — chip-ID mismatch — destructive steps gated
    verify SKIPPED — — no write target available

    The three steps the ID gate stopped say so explicitly. read does not: it ran to COMPLETE over
    two runs, carries no gating reason and no recorded divergence, and still came back BAD. A
    TMM27128A and an AM27128A are both 16 KB 28-pin parts on the same JEDEC 2764/27128 map, so the
    substituted profile drives the identical read path. A profile substitution should have read
    that chip fine.
    It didn't.

    2. 0x0303 is the pattern this rig produces when an ID read gets nothing.

    A floating or poorly-seated socket returns a distinctive not-quite-random value on the ID read
    alongside bad or all-0xff data, and 0x0303 is one that has turned up before in exactly that
    situation. Two further points push the same way:

    • There is no chip anywhere in the upstream infoic.xml database with a chip ID of
      0x0303
      — I checked all of it. For a real signature that would be unusual.
    • Signature mode is not universal on parts of this vintage. Many original 27128-class devices,
      Toshiba's included, implement no electronic signature at all, in which case an ID read has
      nothing to return.

    Taken with the unexplained read failure, the likelier story is a seating or contact
    problem
    , not a discovered identity. Worth re-seating the chip, checking for bent or oxidised
    pins, and re-running — if read comes back OK and the ID still reads 0x0303, that is real and
    this changes. If the ID moves, or read starts passing, it was the socket.

    3. On adding TMM27128A to the database.

    Happy to, but it cannot go in the way it might look. chip_database.json is generated from
    upstream infoic.xml and is never hand-edited — a hand-added row is overwritten by the next
    regeneration. And upstream has nothing to generate from here: there is no Toshiba TMM27128
    record in infoic.xml at all
    , and no Toshiba vendor section in the generated database either.

    So there are two honest routes, and neither is blocked by this issue staying open:

    • User override — ~/.firestarter/database.json takes a local entry and needs no upstream
      change. That is the right place for it today, and it would let you test immediately.
    • A sourced addition to the generator — a deliberate, datasheet-backed entry, in the same
      spirit as the existing correction tables that already override upstream values where upstream
      is known to be wrong.

    Either way, please do not let 0x0303 become the entry's chip_id until point 1 is settled.
    Baking a floating-bus artefact into a database row is very hard to notice later and would make
    every correctly-seated TMM27128A fail its ID check.

    What would help most: the re-seat and re-run above, and — if you have it — the Toshiba
    TMM27128AD datasheet, specifically whether it documents an electronic signature at all and what
    VPP and program pulse width it specifies. With those, a properly sourced entry is
    straightforward.

  3. added
    dev-testCommunity `dev test` chip-validation report
    cause:rigOperator wiring, socket or voltage fault — not a software defect
    needs:reportWaiting on a fresh `dev test` run from the reporter
    on Sep 16, 2026
  4. dim20 commented on Sep 16, 2026

    @dim20
    Author

    I found the actual PDF datasheet for the Toshiba TMM27128AD and as it turns out there is a twist!

    You were totally right that the 0x0303 reading is a floating-bus artifact, and a quick hexdump confirmed it. The chip is completely dead and outputting nothing but 0x03 across the entire 16KB space.

    However, the datasheet shows this chip does in fact have an Electronic Signature mode! I've attached it for reference.

    Here are the true specs so we can add a mathematically correct row to the database for anyone else who has a working one:
    Chip ID: 0x98D3 (Manufacturer 0x98, Device 0xD3).
    VPP (Program): 12.5V (As is written on the chip itself).
    VCC (Program): 6.0V ± 0.25V.
    Pulse Width: 1.0 ms nominal (0.95 ms - 1.05 ms).

    Sorry I didn't think of reading through a hexdump first! Thanks for catching the floating bus issue, this chip is going in the bin.

    Toshiba TMM27128A.pdf

  5. henols commented on Sep 16, 2026

    @henols
    Owner

    That hexdump settles it — thanks for going and checking, @dim20, and for saying
    so directly rather than leaving it ambiguous.

    No re-test is possible or wanted here. The physical part is dead: 0x03
    across the entire 16 KB is a floating bus, not data, which is also where the
    0x0303 "chip ID" came from. You have binned the chip, so there is nothing left
    to run. I am removing needs:report — this issue is not waiting on a report
    from you, and leaving that label on would misrepresent it.

    What this issue is actually worth keeping, though. Two things came out of it
    that outlive the dead chip:

    1. The part tested was a Toshiba TMM27128AD, which is not in the database at
      all. It was run under the AM27128A profile, so the original FAIL was never
      an AM27128A result.
    2. Your datasheet gives real values for a row: chip ID 0x98D3
      (manufacturer 0x98, device 0xD3), VPP 12.5 V, VCC (program)
      6.0 V ± 0.25 V
      , pulse width 1.0 ms nominal (0.95–1.05 ms).

    One thing to flag before anyone tries this part with a working sample. That
    6.0 V programming VCC is the same wall the three Fujitsu reports hit (#66, #70,
    #71) — the shield holds VCC at 5.0 V and nothing applies an elevated rail. So a
    healthy TMM27128AD would very likely still fail to program, for that reason
    rather than this one. Adding the database row is still worth doing; it just will
    not be sufficient on its own.

    Re-titling this away from AM27128A would be reasonable given the part was
    never that chip.

  6. removed
    needs:reportWaiting on a fresh `dev test` run from the reporter
    on Sep 16, 2026
  7. changed the title [-][dev test] AM27128A — FAIL (ce5bfe529b0d)[/-] [+][dev test] TMM27128AD — FAIL (ce5bfe529b0d)[/+] on Sep 16, 2026
  8. dim20 commented on Sep 16, 2026

    @dim20
    Author

    Renamed the issue as suggested! I'll leave this open so the TMM27128AD specs can be added to the database.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cause:rigOperator wiring, socket or voltage fault — not a software defectdev-testCommunity `dev test` chip-validation report

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions