After-sales quality for a Bitcoin mining-rig fleet: triage, RCA, CAPA. Independent prototype by Edward Tay.
Loading live network statsHashprice …BTC …Difficulty …Fleet data synthetic

Escalation queue SYNTHETIC FLEETLIVE HASHPRICE

Every open quality issue (failure mode × model) ranked by criticality, frequency and business impact. Impact is priced at today's live hashprice, so the queue reorders when the network moves.

1 Triage here2 Check a unit from its API reply3 Check the signal in Field data4 Investigate: Weibull, concentration, IS / IS NOT5 8D and stakeholder updates7 Lesson lands in the KB
Priority = Severity (1 to 5, from the KB) × Frequency band (returns per 1,000 installed) × Impact band (lost revenue at live hashprice). Days down = bench turnaround + round-trip logistics from each site to its nearest repair centre. P1 ≥ 45, P2 ≥ 20.
IssueModelReturnsPer 1kLost / moS·F·ISignalStatus

Unit check PUBLIC API SCHEMA

Paste a SealMiner stats reply (TCP 4028, Sealminer API V0.5). The desk checks every board, fan and PSU field against the public Error Code Manual, the published spec tolerance (±10% hashrate, ±5% efficiency), the PSU input range and the latest public firmware, then gives a disposition.

Samples follow the documented field list; their values are illustrative.

Result

Run a check.

Fleet scan READ-ONLY COLLECTOR

Run sealminer_collect.py on the site network (Python 3, standard library, sends only {"command":"stats"}), then load the JSON Lines file here. Every unit is checked and the flags are ranked.

UnitModelPR %VerdictFlags

RMA intake log

Units logged from a check. Kept in this browser only.

LoggedSerial (control board)ModelDispositionModes and codes

Field data SYNTHETIC FLEET

Unit-level fleet and return records. Pareto shows where the returns are; the p-chart shows whether this week is a real shift or normal noise.

Pareto of returns by failure mode

Weekly return rate, p-chart (20-week baseline, last 6 tested)

Return records

RMASerialModelLotSiteAge dModeLog line

Import format (one row per installed unit): serial, model, cooling, th, lot, line, site, external, install_date, fail_date, failure_mode. Blank fail_date means still running. Export the sample to get the template.

Investigate

Pick an issue from the escalation queue.

Weibull life analysis: MLE with suspensions, rank-regression plot

Shape by build lot

LotLineUnitsFailsβ (90%)Read

β below 1 means early-life failures: a build, screening or handling escape. β near 1 means random or external stress. β above 1.5 means wear-out: design life, supplier part or maintenance.

Where it concentrates

Failure rate per 1,000 units for each value, against the rate in the rest of the population. Model rows compare each other model with this one. Lift ≥ 2 with at least 3 failures is a lead.

DimensionValueUnitsFailsPer 1kLift

IS / IS NOT (derived from the table above)

Investigation record

Return records for this issue

RMASerialLotLineSiteAge dLog line

8D report and stakeholder updates

The investigation record becomes an 8D draft and audience-specific updates. Each audience gets the detail it acts on. Updates come in English and 简体中文.

8D draft


    

Stakeholder update


    

Close the loop

Closing writes the lesson into the failure-mode KB, so the next engineer who sees this signature starts from it.

Log triage PUBLIC ERROR CODES

Paste a miner log or a bench note. Each line is matched against the KB signatures; the desk proposes the failure mode, the first checks, whether to fix in the field or return, and any open escalation it belongs to.

Error codes, reasons and first actions come from Bitdeer's public SealMiner Error Code Manual V2.0 (A2 series, bilingual). The log layout around them is illustrative. Water-supply and leak codes for hydro models are not in the public manual, so those lines match on wording.

Result

Run triage to see the match.

Failure-mode knowledge base PUBLIC ERROR CODES

One row per failure mode: signature, first checks, usual cause, owner, and an FMEA score. Occurrence (O) is recomputed from field data, so the RPN moves with the fleet. Click a row to edit detection, checks and lessons.

ModeSignatureSODRPNOwnerUsual cause

Data & sources

What is real and what is synthetic

Live: Bitcoin difficulty, fees and price from Blockchair (fallback blockchain.info, then a Worker-cached copy, then a fixed snapshot). They set hashprice, which prices every hour a returned unit is down.

Public: SealMiner error codes and first actions, the stats API field list, rated hashrate and efficiency with their printed tolerance, PSU input range, repair centres and firmware releases (live through the Worker). The Unit check and Fleet scan read real API replies.

Synthetic: the fleet, lots, sites and returns. They come from a seeded generator with known failure physics (Weibull shape and scale per mode, site stress, two planted defects), so every chart has a right answer to find. Model names follow the public SealMiner line; hashrates are rounded public figures. Nothing here is Bitdeer data.

Your own data: import a unit-level CSV on the Field data tab. Edits, investigations and lessons are kept in this browser only.

The maths

Hashprice (USD per TH per day) = 86,400 × 10¹² / (difficulty × 2³²) × (block subsidy + average fees per block) × BTC price.

p-chart: weekly returns over units in service; centre p̄ from a 20-week baseline; limits p̄ ± 3√(p̄(1−p̄)/n) per week, tested on the latest 6 weeks. Signals: a point above UCL, or 8 in a row above centre.

Weibull: every unit counts; other-mode failures and running units are suspensions. The plot uses Johnson adjusted ranks with Bernard median ranks. The verdict uses the maximum-likelihood fit (profile likelihood) with 90% bounds on β from the likelihood ratio (χ²₁ = 2.706), which handles heavy suspension better than rank regression.

Priority = S × F × I, each banded 1 to 5. RPN = S × O × D (AIAG-VDA now prefers Action Priority; RPN is kept because most factory FMEAs still carry it).

Bitdeer public reference data

Repair centreTypeTicketsAddress
FirmwareBuildRelease notes

Sources: Bitdeer shop API (repair-centre list and firmware archive), proxied and cached 6 hours by this Worker; SealMiner Error Code Manual V2.0; Sealminer API V0.5; product-page specs.

Who built it

Built by Edward Tay as a work sample for the Quality Engineer (After Sales) application. It is an independent prototype; it is not Bitdeer software and uses no Bitdeer internal data. Written analysis: bitdeer.edwardtay.com.