Skip to content

We're upgrading our operations to serve you better. Orders ship as usual from Laval, QC. Questions? Contact us

Bitcoin accepted at checkout  |  Ships from Laval, QC, Canada  |  Expert support since 2016

/* ============================================================ ASIC Repair Cost Estimator — D-Central Technologies “Bitcoin Mining Hackers” — Transparent Repair Pricing ============================================================ */ @import url(‘https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&family=Barlow+Condensed:wght@600;700;800&display=swap’); .repair-estimator { –bg-primary: #0D0D0D; –bg-secondary: #1E1E2E; –bg-tertiary: #242432; –bg-terminal: #0A0A0A; –accent: #FF6E00; –accent-glow: rgba(255, 110, 0, 0.15); –accent-glow-strong: rgba(255, 110, 0, 0.3); –text-primary: #E8E8E8; –text-secondary: #8A8A8A; –text-muted: #6A6A6A; –border: #333333; –border-subtle: #2A2A2A; –success: #10B981; –warning: #F59E0B; –danger: #EF4444; –info: #3B82F6; –font-body: ‘Inter’, -apple-system, BlinkMacSystemFont, sans-serif; –font-heading: ‘Barlow Condensed’, ‘Inter’, sans-serif; –font-mono: ‘JetBrains Mono’, ‘Fira Code’, ‘Source Code Pro’, monospace; max-width: 1280px; margin: 0 auto; padding: 0 20px; font-family: var(–font-body); color: var(–text-primary); line-height: 1.6; -webkit-font-smoothing: antialiased; } .repair-estimator *, .repair-estimator *::before, .repair-estimator *::after { box-sizing: border-box; } /* — SEO Intro Section — */ .re-intro { margin-bottom: 48px; padding-bottom: 40px; border-bottom: 1px solid var(–border-subtle); } .re-intro h1 { font-family: var(–font-heading); font-size: clamp(2rem, 5vw, 3rem); font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(–text-primary); margin: 0 0 8px 0; line-height: 1.1; } .re-intro h1 span { color: var(–accent); } .re-intro .re-tagline { font-family: var(–font-mono); font-size: 14px; color: var(–accent); margin-bottom: 20px; opacity: 0.9; } .re-intro .re-tagline::before { content: ‘> ‘; opacity: 0.5; } .re-intro p { color: var(–text-secondary); font-size: 16px; max-width: 800px; margin: 0 0 12px 0; } .re-intro p strong { color: var(–text-primary); } /* — Trust Strip (top) — */ .re-trust-strip { display: flex; flex-wrap: wrap; gap: 24px; margin: 28px 0 0 0; padding: 16px 20px; background: var(–bg-secondary); border: 1px solid var(–border-subtle); border-radius: 6px; } .re-trust-item { display: flex; align-items: center; gap: 8px; font-family: var(–font-mono); font-size: 13px; color: var(–text-secondary); } .re-trust-item .re-trust-number { color: var(–accent); font-weight: 700; font-size: 15px; } .re-trust-item .re-trust-icon { font-size: 18px; line-height: 1; } /* — Progress Bar — */ .re-progress { margin-bottom: 40px; position: sticky; top: 0; z-index: 10; background: var(–bg-primary); padding: 16px 0; } .re-progress-bar { display: flex; align-items: center; gap: 0; position: relative; } .re-progress-step { flex: 1; display: flex; flex-direction: column; align-items: center; position: relative; cursor: pointer; } .re-progress-step::after { content: ”; position: absolute; top: 16px; left: 50%; width: 100%; height: 2px; background: var(–border); z-index: 0; } .re-progress-step:last-child::after { display: none; } .re-progress-step.active::after, .re-progress-step.completed::after { background: var(–accent); } .re-step-circle { width: 32px; height: 32px; border-radius: 50%; background: var(–bg-secondary); border: 2px solid var(–border); display: flex; align-items: center; justify-content: center; font-family: var(–font-mono); font-size: 13px; font-weight: 700; color: var(–text-muted); position: relative; z-index: 1; transition: all 0.3s ease; } .re-progress-step.active .re-step-circle { border-color: var(–accent); color: var(–accent); box-shadow: 0 0 12px var(–accent-glow-strong); } .re-progress-step.completed .re-step-circle { background: var(–accent); border-color: var(–accent); color: #fff; } .re-step-label { font-size: 11px; font-family: var(–font-mono); text-transform: uppercase; letter-spacing: 0.5px; color: var(–text-muted); margin-top: 8px; white-space: nowrap; } .re-progress-step.active .re-step-label { color: var(–accent); } .re-progress-step.completed .re-step-label { color: var(–text-secondary); } /* — Step Panels — */ .re-step-panel { display: none; animation: reFadeIn 0.4s ease; } .re-step-panel.active { display: block; } @keyframes reFadeIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } .re-step-header { margin-bottom: 24px; } .re-step-header h2 { font-family: var(–font-heading); font-size: clamp(1.4rem, 3vw, 1.8rem); font-weight: 700; text-transform: uppercase; color: var(–text-primary); margin: 0 0 6px 0; } .re-step-header p { color: var(–text-secondary); font-size: 15px; margin: 0; } /* — Miner Select (Step 1) — */ .re-select-wrapper { position: relative; max-width: 600px; } .re-select-wrapper select { width: 100%; padding: 14px 44px 14px 16px; background: var(–bg-secondary); border: 2px solid var(–border); border-radius: 6px; color: var(–text-primary); font-family: var(–font-mono); font-size: 15px; appearance: none; cursor: pointer; transition: border-color 0.2s; } .re-select-wrapper select:focus { outline: none; border-color: var(–accent); box-shadow: 0 0 0 3px var(–accent-glow); } .re-select-wrapper select option { background: var(–bg-secondary); color: var(–text-primary); padding: 8px; } .re-select-wrapper select optgroup { font-weight: 700; color: var(–accent); font-style: normal; } .re-select-wrapper::after { content: ”; position: absolute; right: 16px; top: 50%; transform: translateY(-50%); width: 0; height: 0; border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 6px solid var(–accent); pointer-events: none; } .re-miner-preview { margin-top: 20px; padding: 20px; background: var(–bg-secondary); border: 1px solid var(–border-subtle); border-radius: 6px; display: none; } .re-miner-preview.visible { display: block; animation: reFadeIn 0.3s ease; } .re-miner-preview h3 { font-family: var(–font-heading); font-size: 18px; font-weight: 700; color: var(–text-primary); margin: 0 0 12px 0; text-transform: uppercase; } .re-miner-specs { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; } .re-miner-spec { padding: 10px 12px; background: var(–bg-terminal); border: 1px solid var(–border-subtle); border-radius: 4px; } .re-miner-spec-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; color: var(–text-muted); font-family: var(–font-mono); margin-bottom: 4px; } .re-miner-spec-value { font-family: var(–font-mono); font-size: 16px; font-weight: 600; color: var(–accent); } /* — Issue Checkboxes (Step 2) — */ .re-issues-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; } .re-issue-card { display: flex; align-items: flex-start; gap: 12px; padding: 16px; background: var(–bg-secondary); border: 2px solid var(–border-subtle); border-radius: 6px; cursor: pointer; transition: all 0.2s ease; user-select: none; } .re-issue-card:hover { border-color: var(–border); background: var(–bg-tertiary); } .re-issue-card.selected { border-color: var(–accent); background: rgba(255, 110, 0, 0.05); box-shadow: 0 0 12px var(–accent-glow); } .re-issue-card input[type=”checkbox”] { display: none; } .re-issue-check { flex-shrink: 0; width: 22px; height: 22px; border: 2px solid var(–border); border-radius: 4px; display: flex; align-items: center; justify-content: center; transition: all 0.2s; margin-top: 1px; } .re-issue-card.selected .re-issue-check { background: var(–accent); border-color: var(–accent); } .re-issue-check-mark { display: none; color: #fff; font-size: 13px; font-weight: 700; line-height: 1; } .re-issue-card.selected .re-issue-check-mark { display: block; } .re-issue-content { flex: 1; min-width: 0; } .re-issue-name { font-weight: 600; font-size: 14px; color: var(–text-primary); margin-bottom: 4px; line-height: 1.3; } .re-issue-severity { display: inline-block; font-family: var(–font-mono); font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; padding: 2px 8px; border-radius: 3px; line-height: 1.5; } .re-severity-common { background: rgba(16, 185, 129, 0.15); color: var(–success); border: 1px solid rgba(16, 185, 129, 0.3); } .re-severity-moderate { background: rgba(245, 158, 11, 0.15); color: var(–warning); border: 1px solid rgba(245, 158, 11, 0.3); } .re-severity-serious { background: rgba(239, 68, 68, 0.15); color: var(–danger); border: 1px solid rgba(239, 68, 68, 0.3); } .re-severity-diagnosis { background: rgba(59, 130, 246, 0.15); color: var(–info); border: 1px solid rgba(59, 130, 246, 0.3); } /* — Step 3: Symptom Details — */ .re-details-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin-bottom: 24px; } .re-detail-card { padding: 20px; background: var(–bg-secondary); border: 1px solid var(–border-subtle); border-radius: 6px; } .re-detail-label { display: block; font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(–text-secondary); margin-bottom: 12px; font-family: var(–font-mono); } .re-toggle-group { display: flex; gap: 8px; } .re-toggle-btn { flex: 1; padding: 10px 16px; background: var(–bg-terminal); border: 2px solid var(–border-subtle); border-radius: 4px; color: var(–text-secondary); font-family: var(–font-mono); font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.2s; text-align: center; } .re-toggle-btn:hover { border-color: var(–border); } .re-toggle-btn.active { border-color: var(–accent); color: var(–accent); background: rgba(255, 110, 0, 0.08); } .re-textarea { width: 100%; min-height: 100px; padding: 14px 16px; background: var(–bg-terminal); border: 2px solid var(–border-subtle); border-radius: 6px; color: var(–text-primary); font-family: var(–font-body); font-size: 14px; resize: vertical; transition: border-color 0.2s; } .re-textarea:focus { outline: none; border-color: var(–accent); box-shadow: 0 0 0 3px var(–accent-glow); } .re-textarea::placeholder { color: var(–text-muted); } /* — Buttons — */ .re-btn-group { display: flex; gap: 12px; margin-top: 32px; flex-wrap: wrap; } .re-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 28px; border-radius: 6px; font-family: var(–font-body); font-size: 15px; font-weight: 600; cursor: pointer; transition: all 0.25s ease; border: 2px solid transparent; text-decoration: none; min-height: 48px; } .re-btn-primary { background: var(–accent); color: #ffffff; border-color: var(–accent); box-shadow: 0 0 16px var(–accent-glow); } .re-btn-primary:hover { background: #ff8a33; border-color: #ff8a33; box-shadow: 0 0 24px var(–accent-glow-strong); transform: translateY(-1px); } .re-btn-secondary { background: transparent; color: var(–accent); border-color: var(–accent); } .re-btn-secondary:hover { background: var(–accent); color: #ffffff; } .re-btn:disabled { opacity: 0.4; cursor: not-allowed; transform: none !important; box-shadow: none !important; } /* — Results Panel (Step 4) — */ .re-results-summary { margin-bottom: 32px; padding: 24px; background: var(–bg-secondary); border: 2px solid var(–accent); border-radius: 8px; box-shadow: 0 0 24px var(–accent-glow); position: relative; overflow: hidden; } .re-results-summary::before { content: ”; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(–accent), #ff8a33, var(–accent)); } .re-results-miner-name { font-family: var(–font-heading); font-size: 20px; font-weight: 700; text-transform: uppercase; color: var(–text-primary); margin-bottom: 4px; } .re-results-issues-count { font-family: var(–font-mono); font-size: 13px; color: var(–text-secondary); margin-bottom: 20px; } .re-total-estimate { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; } .re-total-box { padding: 16px; background: var(–bg-terminal); border: 1px solid var(–border-subtle); border-radius: 6px; text-align: center; } .re-total-label { font-family: var(–font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(–text-muted); margin-bottom: 6px; } .re-total-value { font-family: var(–font-mono); font-size: clamp(22px, 4vw, 28px); font-weight: 700; color: var(–accent); } .re-total-value.green { color: var(–success); } .re-results-note { margin-top: 16px; padding: 12px 16px; background: rgba(255, 110, 0, 0.06); border-left: 3px solid var(–accent); border-radius: 0 4px 4px 0; font-size: 13px; color: var(–text-secondary); } .re-results-note strong { color: var(–text-primary); } /* — Individual Issue Results — */ .re-issue-results { display: flex; flex-direction: column; gap: 16px; margin-bottom: 32px; } .re-issue-result-card { padding: 20px; background: var(–bg-secondary); border: 1px solid var(–border-subtle); border-radius: 6px; animation: reFadeIn 0.4s ease both; } .re-issue-result-card:nth-child(2) { animation-delay: 0.1s; } .re-issue-result-card:nth-child(3) { animation-delay: 0.2s; } .re-issue-result-card:nth-child(4) { animation-delay: 0.3s; } .re-issue-result-card:nth-child(5) { animation-delay: 0.4s; } .re-issue-result-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; } .re-issue-result-name { font-weight: 600; font-size: 16px; color: var(–text-primary); } .re-issue-result-cost { font-family: var(–font-mono); font-size: 18px; font-weight: 700; color: var(–accent); white-space: nowrap; } .re-issue-result-details { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 14px; } .re-issue-detail { display: flex; flex-direction: column; gap: 4px; } .re-issue-detail-label { font-family: var(–font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: var(–text-muted); } .re-issue-detail-value { font-family: var(–font-mono); font-size: 14px; font-weight: 500; } .re-difficulty-easy { color: var(–success); } .re-difficulty-moderate { color: var(–warning); } .re-difficulty-complex { color: var(–danger); } .re-success-rate { color: var(–success); } .re-issue-result-desc { font-size: 13px; color: var(–text-secondary); line-height: 1.5; padding-top: 12px; border-top: 1px solid var(–border-subtle); } /* — Economic Analysis — */ .re-economic-analysis { margin-bottom: 32px; padding: 24px; background: var(–bg-secondary); border: 1px solid var(–border-subtle); border-radius: 8px; } .re-economic-analysis h3 { font-family: var(–font-heading); font-size: 20px; font-weight: 700; text-transform: uppercase; color: var(–text-primary); margin: 0 0 6px 0; } .re-economic-subtitle { font-family: var(–font-mono); font-size: 12px; color: var(–text-muted); margin-bottom: 20px; } .re-economic-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 20px; } .re-econ-item { padding: 14px; background: var(–bg-terminal); border: 1px solid var(–border-subtle); border-radius: 4px; text-align: center; } .re-econ-label { font-family: var(–font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: var(–text-muted); margin-bottom: 6px; } .re-econ-value { font-family: var(–font-mono); font-size: 18px; font-weight: 700; } .re-recommendation { display: flex; align-items: center; gap: 12px; padding: 16px 20px; border-radius: 6px; font-weight: 600; font-size: 15px; } .re-recommendation-repair { background: rgba(16, 185, 129, 0.1); border: 1px solid rgba(16, 185, 129, 0.3); color: var(–success); } .re-recommendation-compare { background: rgba(245, 158, 11, 0.1); border: 1px solid rgba(245, 158, 11, 0.3); color: var(–warning); } .re-recommendation-contact { background: rgba(59, 130, 246, 0.1); border: 1px solid rgba(59, 130, 246, 0.3); color: var(–info); } .re-recommendation-icon { font-size: 22px; line-height: 1; } .re-replacement-warning { margin-top: 16px; padding: 14px 16px; background: rgba(245, 158, 11, 0.08); border: 1px solid rgba(245, 158, 11, 0.25); border-radius: 6px; font-size: 13px; color: var(–text-secondary); } .re-replacement-warning strong { color: var(–warning); } /* — CTA Section — */ .re-cta-section { margin: 40px 0; padding: 32px; background: linear-gradient(135deg, var(–bg-secondary) 0%, rgba(255, 110, 0, 0.06) 100%); border: 1px solid var(–border); border-radius: 8px; text-align: center; } .re-cta-section h3 { font-family: var(–font-heading); font-size: 24px; font-weight: 700; text-transform: uppercase; color: var(–text-primary); margin: 0 0 8px 0; } .re-cta-section p { color: var(–text-secondary); font-size: 15px; margin: 0 0 24px 0; } .re-cta-buttons { display: flex; justify-content: center; gap: 16px; flex-wrap: wrap; margin-bottom: 24px; } .re-cta-address { font-family: var(–font-mono); font-size: 13px; color: var(–text-muted); padding-top: 20px; border-top: 1px solid var(–border-subtle); } .re-cta-address strong { color: var(–text-secondary); } /* — Trust Strip (bottom) — */ .re-bottom-trust { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1px; background: var(–border-subtle); border: 1px solid var(–border-subtle); border-radius: 6px; overflow: hidden; margin: 40px 0; } .re-bottom-trust-item { padding: 16px 20px; background: var(–bg-secondary); text-align: center; font-family: var(–font-mono); font-size: 13px; font-weight: 500; color: var(–text-secondary); } .re-bottom-trust-item strong { display: block; font-size: 20px; color: var(–accent); margin-bottom: 4px; } /* — Process Section — */ .re-process { margin: 48px 0; padding-top: 40px; border-top: 1px solid var(–border-subtle); } .re-process h2 { font-family: var(–font-heading); font-size: clamp(1.4rem, 3vw, 1.8rem); font-weight: 700; text-transform: uppercase; color: var(–text-primary); margin: 0 0 8px 0; } .re-process > p { color: var(–text-secondary); margin: 0 0 28px 0; } .re-process-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 16px; } .re-process-card { padding: 20px 16px; background: var(–bg-secondary); border: 1px solid var(–border-subtle); border-radius: 6px; text-align: center; position: relative; } .re-process-number { font-family: var(–font-mono); font-size: 28px; font-weight: 700; color: var(–accent); opacity: 0.3; position: absolute; top: 8px; right: 12px; } .re-process-icon { font-size: 28px; margin-bottom: 10px; line-height: 1; } .re-process-title { font-weight: 700; font-size: 14px; color: var(–text-primary); margin-bottom: 6px; text-transform: uppercase; font-family: var(–font-heading); } .re-process-desc { font-size: 12px; color: var(–text-secondary); line-height: 1.5; } /* — FAQ Section — */ .re-faq { margin: 48px 0; padding-top: 40px; border-top: 1px solid var(–border-subtle); } .re-faq h2 { font-family: var(–font-heading); font-size: clamp(1.4rem, 3vw, 1.8rem); font-weight: 700; text-transform: uppercase; color: var(–text-primary); margin: 0 0 24px 0; } .re-faq details { background: var(–bg-secondary); border: 1px solid var(–border-subtle); border-radius: 6px; margin-bottom: 8px; overflow: hidden; } .re-faq details[open] { border-color: var(–border); } .re-faq summary { padding: 16px 20px; cursor: pointer; font-weight: 600; font-size: 15px; color: var(–text-primary); list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; transition: color 0.2s; } .re-faq summary::-webkit-details-marker { display: none; } .re-faq summary::after { content: ‘+’; font-family: var(–font-mono); font-size: 20px; color: var(–accent); flex-shrink: 0; transition: transform 0.2s; } .re-faq details[open] summary::after { content: ‘\2212’; } .re-faq summary:hover { color: var(–accent); } .re-faq .re-faq-answer { padding: 0 20px 16px; color: var(–text-secondary); font-size: 14px; line-height: 1.7; } /* — Related Links — */ .re-related { margin: 48px 0 16px; padding-top: 40px; border-top: 1px solid var(–border-subtle); } .re-related h2 { font-family: var(–font-heading); font-size: clamp(1.2rem, 2.5vw, 1.5rem); font-weight: 700; text-transform: uppercase; color: var(–text-primary); margin: 0 0 16px 0; } .re-related-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; } .re-related-link { display: flex; align-items: center; gap: 10px; padding: 14px 16px; background: var(–bg-secondary); border: 1px solid var(–border-subtle); border-radius: 6px; color: var(–text-primary); text-decoration: none; font-weight: 500; font-size: 14px; transition: all 0.2s; } .re-related-link:hover { border-color: var(–accent); color: var(–accent); transform: translateY(-1px); } .re-related-link-icon { font-size: 20px; line-height: 1; } .re-related-link-arrow { margin-left: auto; color: var(–text-muted); transition: color 0.2s; } .re-related-link:hover .re-related-link-arrow { color: var(–accent); } /* — Responsive — */ @media (max-width: 768px) { .repair-estimator { padding: 0 16px; } .re-trust-strip { gap: 16px; padding: 12px 16px; } .re-trust-item { font-size: 12px; } .re-step-label { font-size: 9px; } .re-issues-grid { grid-template-columns: 1fr; } .re-total-estimate { grid-template-columns: 1fr 1fr; } .re-issue-result-header { flex-direction: column; align-items: flex-start; gap: 6px; } .re-economic-grid { grid-template-columns: 1fr 1fr; } .re-cta-section { padding: 24px 16px; } .re-cta-buttons { flex-direction: column; align-items: stretch; } .re-process-steps { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); } .re-btn-group { flex-direction: column; } .re-btn { width: 100%; } } @media (max-width: 480px) { .re-progress-bar { gap: 0; } .re-step-label { font-size: 8px; letter-spacing: 0; } .re-step-circle { width: 28px; height: 28px; font-size: 11px; } .re-miner-specs { grid-template-columns: 1fr 1fr; } .re-total-estimate { grid-template-columns: 1fr; } .re-economic-grid { grid-template-columns: 1fr; } .re-bottom-trust { grid-template-columns: 1fr 1fr; } .re-process-steps { grid-template-columns: 1fr 1fr; } } @media (max-width: 360px) { .re-bottom-trust { grid-template-columns: 1fr; } }

ASIC Miner Repair Cost Estimator

get_repair_estimate –transparent –no-surprises

Know what you’re getting into before shipping your miner. D-Central Technologies has repaired over 2,500 ASIC miners since 2016 — from Bitmain Antminers and MicroBT Whatsminers to Canaan AvalonMiners and Innosilicon units. Our repair cost estimator gives you a transparent price range based on your specific model and reported issues.

Most repair shops make you ship your miner before they’ll even talk numbers. We believe you deserve upfront information. Select your miner and describe the issue — you’ll get an instant estimate, economic analysis, and a clear picture of whether repair makes sense. No competitor offers this level of transparency.

2,500+ Miners Repaired
Operating Since 2016
Most Repairs in < 7 Days
All Work Guaranteed
1
Select Miner
2
Select Issues
3
Details
4
Estimate

Step 1: Select Your Miner

Choose the ASIC miner model you need repaired. This helps us provide an accurate cost estimate.

— Select your miner model — Antminer S9 Antminer S9i Antminer S9j Antminer S15 Antminer T15 Antminer S17 Antminer S17+ Antminer S17 Pro Antminer T17 Antminer T17+ Antminer S19 Antminer S19 Pro Antminer S19j Antminer S19j Pro Antminer S19 XP Antminer S19k Pro Antminer S19a Antminer T19 Antminer S21 Antminer T21 Antminer L3+ Antminer L7 Antminer Z15 Antminer D9 Antminer KA3 Whatsminer M20S Whatsminer M30S Whatsminer M30S+ Whatsminer M30S++ Whatsminer M50 Whatsminer M50S Whatsminer M56S AvalonMiner 1066 AvalonMiner 1146 AvalonMiner 1166 AvalonMiner 1246 AvalonMiner A13 Innosilicon A10 Innosilicon A10 Pro Innosilicon T3+ Innosilicon A4+

Algorithm
Hashrate
Power
Generation
Used Value

Step 2: What’s Wrong?

Select all issues you’re experiencing. You can choose multiple issues for a combined estimate.

Step 3: Additional Details

Optional information that helps us refine your estimate. You can skip this step if you prefer.

Does the miner power on?
Hashboards affected
Still under warranty?
Describe the symptoms (optional)

Your Repair Estimate

Based on the information provided. Final cost determined after hands-on diagnosis.

Important: This is an estimate based on common repair outcomes. D-Central provides a firm, no-obligation quote after diagnosis — before any work begins. You only pay if you approve the repair.

Repair Economic Analysis

Should you repair or replace? Here’s the math.

Ready to Get Your Miner Fixed?

Our technicians are standing by. Get an exact quote with no obligation — you only pay if you approve the repair.

Ship your miner to:
D-Central Technologies — 1325 Rue Bergar, Laval, QC H7L 4Z7, Canada
2,500+ Miners Repaired
Since 2016 In Business
Expert Technicians
All Work Guaranteed

Our Repair Process

From diagnosis to delivery — here’s how D-Central gets your miner back to full hashrate.

01
🔎
Diagnosis
We run comprehensive diagnostics on every component — hashboards, control board, PSU, fans, firmware.
02
📄
Quote
You receive a detailed quote with exactly what needs to be repaired and the total cost. No hidden fees.
03
Approval
You decide. Approve the repair or decline — there is no obligation. If you decline, we ship your miner back.
04
🔧
Repair
Our technicians perform the repair using quality replacement parts. Most repairs completed within 5-10 business days.
05
Testing
Every repaired miner is burn-tested at full hashrate for 24-48 hours to ensure stability before shipping.
06
📦
Ship
Your miner is carefully packaged and shipped back to you with tracking. Back to hashing in no time.

Frequently Asked Questions

How accurate is this repair cost estimate?
This estimator is based on our experience repairing over 2,500 ASIC miners since 2016. The ranges reflect typical costs for each issue type, adjusted for your specific model. However, the actual cost depends on the exact components that need replacement, which can only be determined through hands-on diagnosis. D-Central always provides a firm, itemized quote after diagnosis — before any work begins. You never pay more than the quoted amount.
How do I ship my miner to D-Central for repair?
Package your miner securely in its original box or a sturdy box with adequate padding (foam, bubble wrap). Remove any aftermarket modifications and include a note with your contact information and a description of the issue. Ship to: D-Central Technologies, 1325 Rue Bergar, Laval, QC H7L 4Z7, Canada. We recommend using a carrier with tracking and insurance. For customers outside Canada, ensure proper customs documentation listing the item as “electronic equipment for repair” to avoid import duties.
Do you offer a warranty on repairs?
Yes. All D-Central repairs come with a warranty on the work performed and parts replaced. If the same issue recurs within the warranty period, we will re-repair it at no additional cost. The specific warranty duration depends on the repair type and is communicated with your quote. We stand behind our work — we have been in business since 2016 and our reputation depends on quality repairs.
What if the repair cost exceeds the miner’s value?
We will always tell you upfront if a repair doesn’t make economic sense. After diagnosis, if we determine that the repair cost approaches or exceeds the used market value of the miner, we will clearly communicate this and discuss alternatives — including sourcing a replacement unit, using your miner for parts, or exploring a partial repair to get some hashboards running. The decision is always yours.
How long does a typical ASIC repair take?
Most repairs are completed within 5-10 business days from the time we receive your miner. Simple issues like fan replacements or firmware recovery can be done in 1-3 days. Complex repairs involving chip-level work on multiple hashboards may take up to 15 business days. We will provide an estimated turnaround time with your quote. During peak periods, timelines may extend slightly — we always prioritize quality over speed.
What if I’m not sure what’s wrong with my miner?
That’s perfectly fine — and actually very common. Select “Unknown / won’t turn on” in the estimator, or simply describe your symptoms as best you can. Our diagnostic process is designed to identify the root cause. The diagnostic fee ($75-100 CAD) is applied toward your repair cost if you proceed with the repair. We will provide a detailed report of everything we find, even if you decide not to repair.
(function() { ‘use strict’; /* ================================================================ DATA: Miner specifications, repair costs, issue definitions ================================================================ */ var MINERS = { ‘antminer-s9’: { name: ‘Antminer S9’, algo: ‘SHA-256′, hashrate: ’14 TH/s’, power: ‘1350W’, gen: ‘Legacy’, tier: ‘old’, usedValue: 100, dailyRevCAD: 0.35 }, ‘antminer-s9i’: { name: ‘Antminer S9i’, algo: ‘SHA-256’, hashrate: ‘14.5 TH/s’, power: ‘1365W’, gen: ‘Legacy’, tier: ‘old’, usedValue: 100, dailyRevCAD: 0.36 }, ‘antminer-s9j’: { name: ‘Antminer S9j’, algo: ‘SHA-256’, hashrate: ‘14.5 TH/s’, power: ‘1350W’, gen: ‘Legacy’, tier: ‘old’, usedValue: 100, dailyRevCAD: 0.36 }, ‘antminer-s15’: { name: ‘Antminer S15’, algo: ‘SHA-256′, hashrate: ’28 TH/s’, power: ‘1596W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 150, dailyRevCAD: 0.55 }, ‘antminer-t15’: { name: ‘Antminer T15’, algo: ‘SHA-256′, hashrate: ’23 TH/s’, power: ‘1541W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 120, dailyRevCAD: 0.45 }, ‘antminer-s17’: { name: ‘Antminer S17’, algo: ‘SHA-256′, hashrate: ’56 TH/s’, power: ‘2520W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 350, dailyRevCAD: 1.10 }, ‘antminer-s17-plus’: { name: ‘Antminer S17+’, algo: ‘SHA-256′, hashrate: ’73 TH/s’, power: ‘2920W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 450, dailyRevCAD: 1.45 }, ‘antminer-s17-pro’: { name: ‘Antminer S17 Pro’, algo: ‘SHA-256′, hashrate: ’53 TH/s’, power: ‘2094W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 400, dailyRevCAD: 1.05 }, ‘antminer-t17’: { name: ‘Antminer T17’, algo: ‘SHA-256′, hashrate: ’40 TH/s’, power: ‘2200W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 200, dailyRevCAD: 0.80 }, ‘antminer-t17-plus’: { name: ‘Antminer T17+’, algo: ‘SHA-256′, hashrate: ’64 TH/s’, power: ‘3200W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 300, dailyRevCAD: 1.25 }, ‘antminer-s19’: { name: ‘Antminer S19’, algo: ‘SHA-256′, hashrate: ’95 TH/s’, power: ‘3250W’, gen: ‘Current’, tier: ‘new’, usedValue: 800, dailyRevCAD: 1.90 }, ‘antminer-s19-pro’: { name: ‘Antminer S19 Pro’, algo: ‘SHA-256’, hashrate: ‘110 TH/s’, power: ‘3250W’, gen: ‘Current’, tier: ‘new’, usedValue: 1200, dailyRevCAD: 2.20 }, ‘antminer-s19j’: { name: ‘Antminer S19j’, algo: ‘SHA-256′, hashrate: ’90 TH/s’, power: ‘3100W’, gen: ‘Current’, tier: ‘new’, usedValue: 700, dailyRevCAD: 1.80 }, ‘antminer-s19j-pro’: { name: ‘Antminer S19j Pro’, algo: ‘SHA-256’, hashrate: ‘104 TH/s’, power: ‘3068W’, gen: ‘Current’, tier: ‘new’, usedValue: 1000, dailyRevCAD: 2.10 }, ‘antminer-s19-xp’: { name: ‘Antminer S19 XP’, algo: ‘SHA-256’, hashrate: ‘140 TH/s’, power: ‘3010W’, gen: ‘Current’, tier: ‘new’, usedValue: 2500, dailyRevCAD: 2.80 }, ‘antminer-s19k-pro’: { name: ‘Antminer S19k Pro’, algo: ‘SHA-256’, hashrate: ‘120 TH/s’, power: ‘2760W’, gen: ‘Current’, tier: ‘new’, usedValue: 1500, dailyRevCAD: 2.40 }, ‘antminer-s19a’: { name: ‘Antminer S19a’, algo: ‘SHA-256′, hashrate: ’96 TH/s’, power: ‘3344W’, gen: ‘Current’, tier: ‘new’, usedValue: 800, dailyRevCAD: 1.90 }, ‘antminer-t19’: { name: ‘Antminer T19’, algo: ‘SHA-256′, hashrate: ’84 TH/s’, power: ‘3150W’, gen: ‘Current’, tier: ‘new’, usedValue: 600, dailyRevCAD: 1.70 }, ‘antminer-s21’: { name: ‘Antminer S21’, algo: ‘SHA-256’, hashrate: ‘200 TH/s’, power: ‘3500W’, gen: ‘Latest’, tier: ‘new’, usedValue: 4500, dailyRevCAD: 4.00 }, ‘antminer-t21’: { name: ‘Antminer T21’, algo: ‘SHA-256’, hashrate: ‘190 TH/s’, power: ‘3610W’, gen: ‘Latest’, tier: ‘new’, usedValue: 3500, dailyRevCAD: 3.80 }, ‘antminer-l3-plus’: { name: ‘Antminer L3+’, algo: ‘Scrypt’, hashrate: ‘504 MH/s’, power: ‘800W’, gen: ‘Legacy’, tier: ‘old’, usedValue: 80, dailyRevCAD: 0.20 }, ‘antminer-l7’: { name: ‘Antminer L7’, algo: ‘Scrypt’, hashrate: ‘9.5 GH/s’, power: ‘3425W’, gen: ‘Current’, tier: ‘new’, usedValue: 3000, dailyRevCAD: 5.50 }, ‘antminer-z15’: { name: ‘Antminer Z15’, algo: ‘Equihash’, hashrate: ‘420 ksol/s’, power: ‘1510W’, gen: ‘Current’, tier: ‘rare’, usedValue: 1500, dailyRevCAD: 2.00 }, ‘antminer-d9’: { name: ‘Antminer D9’, algo: ‘X11’, hashrate: ‘1.77 TH/s’, power: ‘2839W’, gen: ‘Current’, tier: ‘rare’, usedValue: 1000, dailyRevCAD: 1.50 }, ‘antminer-ka3’: { name: ‘Antminer KA3’, algo: ‘KHeavyHash’, hashrate: ‘166 TH/s’, power: ‘3154W’, gen: ‘Current’, tier: ‘rare’, usedValue: 4000, dailyRevCAD: 6.00 }, ‘whatsminer-m20s’: { name: ‘Whatsminer M20S’, algo: ‘SHA-256′, hashrate: ’68 TH/s’, power: ‘3360W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 250, dailyRevCAD: 1.35 }, ‘whatsminer-m30s’: { name: ‘Whatsminer M30S’, algo: ‘SHA-256′, hashrate: ’86 TH/s’, power: ‘3268W’, gen: ‘Current’, tier: ‘new’, usedValue: 500, dailyRevCAD: 1.70 }, ‘whatsminer-m30s-plus’: { name: ‘Whatsminer M30S+’, algo: ‘SHA-256’, hashrate: ‘100 TH/s’, power: ‘3400W’, gen: ‘Current’, tier: ‘new’, usedValue: 700, dailyRevCAD: 2.00 }, ‘whatsminer-m30s-plusplus’: { name: ‘Whatsminer M30S++’, algo: ‘SHA-256’, hashrate: ‘112 TH/s’, power: ‘3472W’, gen: ‘Current’, tier: ‘new’, usedValue: 900, dailyRevCAD: 2.25 }, ‘whatsminer-m50’: { name: ‘Whatsminer M50’, algo: ‘SHA-256’, hashrate: ‘114 TH/s’, power: ‘3306W’, gen: ‘Current’, tier: ‘new’, usedValue: 1200, dailyRevCAD: 2.30 }, ‘whatsminer-m50s’: { name: ‘Whatsminer M50S’, algo: ‘SHA-256’, hashrate: ‘126 TH/s’, power: ‘3276W’, gen: ‘Current’, tier: ‘new’, usedValue: 1500, dailyRevCAD: 2.50 }, ‘whatsminer-m56s’: { name: ‘Whatsminer M56S’, algo: ‘SHA-256’, hashrate: ‘230 TH/s’, power: ‘5550W’, gen: ‘Latest’, tier: ‘new’, usedValue: 5000, dailyRevCAD: 4.60 }, ‘avalonminer-1066’: { name: ‘AvalonMiner 1066’, algo: ‘SHA-256′, hashrate: ’50 TH/s’, power: ‘3250W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 200, dailyRevCAD: 1.00 }, ‘avalonminer-1146’: { name: ‘AvalonMiner 1146’, algo: ‘SHA-256′, hashrate: ’56 TH/s’, power: ‘3196W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 250, dailyRevCAD: 1.10 }, ‘avalonminer-1166’: { name: ‘AvalonMiner 1166’, algo: ‘SHA-256′, hashrate: ’68 TH/s’, power: ‘3196W’, gen: ‘Current’, tier: ‘mid’, usedValue: 300, dailyRevCAD: 1.35 }, ‘avalonminer-1246’: { name: ‘AvalonMiner 1246’, algo: ‘SHA-256′, hashrate: ’90 TH/s’, power: ‘3420W’, gen: ‘Current’, tier: ‘new’, usedValue: 600, dailyRevCAD: 1.80 }, ‘avalonminer-a13’: { name: ‘AvalonMiner A13’, algo: ‘SHA-256′, hashrate: ’90 TH/s’, power: ‘3100W’, gen: ‘Current’, tier: ‘new’, usedValue: 650, dailyRevCAD: 1.80 }, ‘innosilicon-a10’: { name: ‘Innosilicon A10’, algo: ‘Ethash’, hashrate: ‘500 MH/s’, power: ‘750W’, gen: ‘Legacy’, tier: ‘rare’, usedValue: 200, dailyRevCAD: 0.30 }, ‘innosilicon-a10-pro’: { name: ‘Innosilicon A10 Pro’, algo: ‘Ethash’, hashrate: ‘750 MH/s’, power: ‘1350W’, gen: ‘Mid-Gen’, tier: ‘rare’, usedValue: 300, dailyRevCAD: 0.45 }, ‘innosilicon-t3-plus’: { name: ‘Innosilicon T3+’, algo: ‘SHA-256′, hashrate: ’67 TH/s’, power: ‘3300W’, gen: ‘Mid-Gen’, tier: ‘mid’, usedValue: 200, dailyRevCAD: 1.35 }, ‘innosilicon-a4-plus’: { name: ‘Innosilicon A4+’, algo: ‘Scrypt’, hashrate: ‘620 MH/s’, power: ‘750W’, gen: ‘Legacy’, tier: ‘old’, usedValue: 80, dailyRevCAD: 0.25 } }; var ISSUES = [ { id: ‘hashboard-zero’, name: ‘Hashboard not hashing (0 TH/s on one board)’, severity: ‘common’, severityLabel: ‘Common’, baseCost: [150, 350], turnaround: [5, 10], difficulty: ‘Moderate’, successRate: ‘92%’, description: ‘Diagnosis of the non-functional hashboard, identifying failed ASIC chips, capacitors, or voltage regulators, followed by component-level repair and burn-in testing. }, { id: ‘reduced-hashrate’, name: ‘Reduced hashrate (board running below normal)’, severity: ‘common’, severityLabel: ‘Common’, baseCost: [100, 250], turnaround: [3, 7], difficulty: ‘Easy’, successRate: ‘95%’, description: ‘Identification of underperforming chips or thermal issues causing reduced output. May involve chip replacement, thermal paste reapplication, or voltage regulator repair. }, { id: ‘overheating’, name: ‘High temperature errors / overheating’, severity: ‘common’, severityLabel: ‘Common’, baseCost: [75, 200], turnaround: [2, 5], difficulty: ‘Easy’, successRate: ‘97%’, description: ‘Inspection of thermal interface materials, heatsink contact, fan performance, and ambient airflow. Repair includes thermal paste replacement, heatsink reseating, and temperature sensor verification.’ }, { id: ‘fan-error’, name: ‘Fan errors / fan not spinning’, severity: ‘common’, severityLabel: ‘Common’, baseCost: [50, 100], turnaround: [1, 3], difficulty: ‘Easy’, successRate: ‘99%’, description: ‘Replacement of failed fans with compatible units. Includes fan connector inspection, RPM sensor testing, and verification of proper airflow at full load.’ }, { id: ‘psu-fault’, name: ‘PSU not powering on’, severity: ‘common’, severityLabel: ‘Common’, baseCost: [100, 250], turnaround: [3, 7], difficulty: ‘Moderate’, successRate: ‘90%’, description: ‘Diagnosis of power supply unit including voltage rail testing, capacitor inspection, and MOSFET testing. Repair or replacement of failed PSU components.’ }, { id: ‘control-board’, name: ‘Control board fault / no network’, severity: ‘moderate’, severityLabel: ‘Moderate’, baseCost: [150, 300], turnaround: [5, 10], difficulty: ‘Moderate’, successRate: ‘88%’, description: ‘Diagnosis of the control board including Ethernet port, eMMC storage, CPU, and RAM testing. May require component replacement, firmware reflashing, or full board swap.’ }, { id: ‘chip-damage’, name: ‘Chip damage (burned/cracked chips)’, severity: ‘serious’, severityLabel: ‘Serious’, baseCost: [250, 500], turnaround: [7, 15], difficulty: ‘Complex’, successRate: ‘85%’, description: ‘Removal and replacement of damaged ASIC chips using specialized rework station. Includes BGA reballing, soldering, and extended burn-in testing to verify stability.’ }, { id: ‘water-damage’, name: ‘Water / liquid damage’, severity: ‘serious’, severityLabel: ‘Serious’, baseCost: [300, 600], turnaround: [10, 20], difficulty: ‘Complex’, successRate: ‘75%’, description: ‘Complete disassembly, ultrasonic cleaning, corrosion removal, and component-level inspection. Multiple components often need replacement due to corrosion. Extended testing required.’ }, { id: ‘power-surge’, name: ‘Power surge damage’, severity: ‘serious’, severityLabel: ‘Serious’, baseCost: [200, 500], turnaround: [7, 15], difficulty: ‘Complex’, successRate: ‘80%’, description: ‘Assessment of surge damage across all boards. Typically involves replacement of voltage regulators, MOSFETs, and potentially ASIC chips. PSU must also be tested or replaced.’ }, { id: ‘physical-damage’, name: ‘Physical damage (bent pins, broken connectors)’, severity: ‘moderate’, severityLabel: ‘Moderate’, baseCost: [100, 400], turnaround: [5, 10], difficulty: ‘Moderate’, successRate: ‘90%’, description: ‘Repair or replacement of damaged connectors, straightening of bent pins, and PCB trace repair if needed. Includes structural inspection and full functional testing.’ }, { id: ‘firmware’, name: ‘Firmware corruption / bricked’, severity: ‘common’, severityLabel: ‘Common’, baseCost: [75, 150], turnaround: [1, 3], difficulty: ‘Easy’, successRate: ‘98%’, description: ‘Recovery of corrupted firmware via SD card boot, serial console, or eMMC reprogramming. Includes verification of proper firmware version and configuration restoration.’ }, { id: ‘unknown’, name: “Unknown / won’t turn on”, severity: ‘diagnosis’, severityLabel: ‘Requires Diagnosis’, baseCost: [75, 100], turnaround: [3, 5], difficulty: ‘Moderate’, successRate: ‘TBD’, description: ‘Full diagnostic assessment to identify the root cause. Diagnostic fee is applied toward repair cost if you proceed. Detailed report provided regardless of repair decision.’ } ]; /* Tier multipliers */ var TIER_MULT = { old: 0.75, mid: 1.0, new: 1.25, rare: 1.35 }; /* ================================================================ STATE ================================================================ */ var currentStep = 1; var selectedMiner = null; var selectedIssues = []; /* ================================================================ INIT: Build issues grid ================================================================ */ function init() { var grid = document.getElementById(‘reIssuesGrid’); var html = ”; for (var i = 0; i < ISSUES.length; i++) { var issue = ISSUES[i]; html += '‘; } grid.innerHTML = html; } /* ================================================================ NAVIGATION ================================================================ */ window.reGoToStep = function(step) { /* Validate navigation */ if (step === 2 && !selectedMiner) return; if (step === 3 && selectedIssues.length === 0) return; if (step === 4) return; /* Step 4 only via calculate */ if (step > currentStep + 1) return; currentStep = step; updateUI(); }; function goToResults() { currentStep = 4; updateUI(); /* Scroll to results */ var el = document.getElementById(‘reStep4’); if (el) { setTimeout(function() { el.scrollIntoView({ behavior: ‘smooth’, block: ‘start’ }); }, 100); } } function updateUI() { /* Panels */ var panels = document.querySelectorAll(‘.re-step-panel’); for (var i = 0; i < panels.length; i++) { panels[i].classList.remove('active'); } var activePanel = document.getElementById('reStep' + currentStep); if (activePanel) activePanel.classList.add('active'); /* Progress */ var steps = document.querySelectorAll('.re-progress-step'); for (var j = 0; j < steps.length; j++) { var sn = parseInt(steps[j].getAttribute('data-step')); steps[j].classList.remove('active', 'completed'); if (sn === currentStep) { steps[j].classList.add('active'); } else if (sn < currentStep) { steps[j].classList.add('completed'); steps[j].querySelector('.re-step-circle').innerHTML = '✓'; } else { steps[j].querySelector('.re-step-circle').textContent = sn; } } } /* ================================================================ STEP 1: Miner Selection ================================================================ */ window.reOnMinerSelect = function() { var sel = document.getElementById('reMinerSelect'); var val = sel.value; var btn = document.getElementById('reStep1Next'); var preview = document.getElementById('reMinerPreview'); if (val && MINERS[val]) { selectedMiner = val; btn.disabled = false; var m = MINERS[val]; document.getElementById('reMinerPreviewName').textContent = m.name; document.getElementById('reMinerAlgo').textContent = m.algo; document.getElementById('reMinerHashrate').textContent = m.hashrate; document.getElementById('reMinerPower').textContent = m.power; document.getElementById('reMinerGen').textContent = m.gen; document.getElementById('reMinerValue').textContent = '$' + m.usedValue.toLocaleString() + ' CAD'; preview.classList.add('visible'); } else { selectedMiner = null; btn.disabled = true; preview.classList.remove('visible'); } }; /* ================================================================ STEP 2: Issue Selection ================================================================ */ window._reToggleIssue = function(card) { var cb = card.querySelector('input[type="checkbox"]'); cb.checked = !cb.checked; card.classList.toggle('selected', cb.checked); /* Rebuild selected array */ selectedIssues = []; var cards = document.querySelectorAll('.re-issue-card'); for (var i = 0; i < cards.length; i++) { if (cards[i].classList.contains('selected')) { selectedIssues.push(cards[i].getAttribute('data-issue')); } } document.getElementById('reStep2Next').disabled = selectedIssues.length === 0; }; /* ================================================================ STEP 3: Toggle Buttons ================================================================ */ window.reToggle = function(btn, groupId) { var group = document.getElementById(groupId); var buttons = group.querySelectorAll('.re-toggle-btn'); for (var i = 0; i < buttons.length; i++) { buttons[i].classList.remove('active'); } btn.classList.add('active'); }; /* ================================================================ CALCULATE ESTIMATE ================================================================ */ window.reCalculateEstimate = function() { if (!selectedMiner || selectedIssues.length === 0) return; var miner = MINERS[selectedMiner]; var mult = TIER_MULT[miner.tier] || 1.0; /* Get board count for cost scaling */ var boardsBtn = document.querySelector('#reBoardsToggle .re-toggle-btn.active'); var boardCount = boardsBtn ? boardsBtn.getAttribute('data-value') : 'unknown'; var boardMult = 1; if (boardCount === '2') boardMult = 1.5; else if (boardCount === '3') boardMult = 1.8; /* Get power status */ var powerBtn = document.querySelector('#rePowerToggle .re-toggle-btn.active'); var powersOn = powerBtn ? powerBtn.getAttribute('data-value') : 'unsure'; /* Calculate per-issue */ var totalLow = 0; var totalHigh = 0; var maxTurnaroundLow = 0; var maxTurnaroundHigh = 0; var issueResults = []; for (var i = 0; i < selectedIssues.length; i++) { var issueId = selectedIssues[i]; var issue = null; for (var j = 0; j maxTurnaroundLow) maxTurnaroundLow = issue.turnaround[0]; if (issue.turnaround[1] > maxTurnaroundHigh) maxTurnaroundHigh = issue.turnaround[1]; issueResults.push({ issue: issue, low: low, high: high }); } /* Discount for multiple issues (some labor overlap) */ if (selectedIssues.length >= 3) { totalLow = Math.round(totalLow * 0.85); totalHigh = Math.round(totalHigh * 0.90); } else if (selectedIssues.length === 2) { totalLow = Math.round(totalLow * 0.90); totalHigh = Math.round(totalHigh * 0.95); } /* Render results */ renderResults(miner, issueResults, totalLow, totalHigh, maxTurnaroundLow, maxTurnaroundHigh, boardCount); goToResults(); }; /* ================================================================ RENDER RESULTS ================================================================ */ function renderResults(miner, issueResults, totalLow, totalHigh, turnLow, turnHigh, boardCount) { /* Summary */ document.getElementById(‘reResultsMiner’).textContent = miner.name + ‘ Repair Estimate’; document.getElementById(‘reResultsIssueCount’).textContent = issueResults.length + ‘ issue’ + (issueResults.length !== 1 ? ‘s’ : ”) + ‘ selected // Estimates in CAD’; var totalHTML = ”; totalHTML += ‘
Estimated Cost
$’ + totalLow.toLocaleString() + ‘ – $’ + totalHigh.toLocaleString() + ‘
‘; totalHTML += ‘
Turnaround
‘ + turnLow + ‘ – ‘ + turnHigh + ‘ days
‘; totalHTML += ‘
Miner Value
$’ + miner.usedValue.toLocaleString() + ‘
‘; document.getElementById(‘reTotalEstimate’).innerHTML = totalHTML; /* Per-issue cards */ var issueHTML = ”; for (var i = 0; i < issueResults.length; i++) { var ir = issueResults[i]; var diffClass = 'moderate'; if (ir.issue.difficulty === 'Easy') diffClass = 'easy'; else if (ir.issue.difficulty === 'Complex') diffClass = 'complex'; issueHTML += '
‘; issueHTML += ‘
‘; issueHTML += ‘
‘ + ir.issue.name + ‘
‘; issueHTML += ‘
$’ + ir.low.toLocaleString() + ‘ – $’ + ir.high.toLocaleString() + ‘ CAD
‘; issueHTML += ‘
‘; issueHTML += ‘
‘; issueHTML += ‘
Turnaround
‘ + ir.issue.turnaround[0] + ‘-‘ + ir.issue.turnaround[1] + ‘ business days
‘; issueHTML += ‘
Difficulty
‘ + ir.issue.difficulty + ‘
‘; issueHTML += ‘
Success Rate
‘ + ir.issue.successRate + ‘
‘; issueHTML += ‘
‘; issueHTML += ‘
‘ + ir.issue.description + ‘
‘; issueHTML += ‘
‘; } document.getElementById(‘reIssueResults’).innerHTML = issueHTML; /* Replacement warning */ var avgRepairCost = (totalLow + totalHigh) / 2; var repairPercent = Math.round((avgRepairCost / miner.usedValue) * 100); var warningEl = document.getElementById(‘reReplacementWarning’); if (repairPercent >= 70) { warningEl.style.display = ‘block’; warningEl.innerHTML = ‘⚠ Cost Comparison Notice: The estimated repair cost represents approximately ‘ + repairPercent + ‘% of the current used market value of the ‘ + miner.name + ‘ (~$’ + miner.usedValue.toLocaleString() + ‘ CAD). Our team can advise whether repair or replacement makes more economic sense for your situation.’; } else { warningEl.style.display = ‘none’; } /* Economic analysis */ var dailyRev = miner.dailyRevCAD; var monthlyRev = Math.round(dailyRev * 30); var monthsToRecoup = avgRepairCost > 0 && monthlyRev > 0 ? Math.ceil(avgRepairCost / monthlyRev) : 0; var econHTML = ”; econHTML += ‘
Used Market Value
$’ + miner.usedValue.toLocaleString() + ‘ CAD
‘; econHTML += ‘
Repair % of Value
80 ? ‘var(–danger)’ : repairPercent > 50 ? ‘var(–warning)’ : ‘var(–success)’) + ‘”>’ + repairPercent + ‘%
‘; econHTML += ‘
Est. Monthly Revenue
~$’ + monthlyRev + ‘ CAD
‘; econHTML += ‘
Months to Recoup
‘ + (monthsToRecoup > 0 ? ‘~’ + monthsToRecoup + ‘ mo’ : ‘N/A’) + ‘
‘; document.getElementById(‘reEconGrid’).innerHTML = econHTML; /* Recommendation */ var recHTML = ”; if (repairPercent <= 40 && monthsToRecoup <= 6) { recHTML = '
Repair Recommended — The repair cost is low relative to the miner’s value, and you’ll recoup the investment within ‘ + monthsToRecoup + ‘ month’ + (monthsToRecoup !== 1 ? ‘s’ : ”) + ‘ of mining.
‘; } else if (repairPercent <= 70) { recHTML = '
Compare with Replacement — Repair is viable, but evaluate against the cost of a replacement or upgraded unit. Contact us for a personalized recommendation.
‘; } else { recHTML = ‘
Contact Us for Advice — The estimated repair cost is significant relative to this miner’s current value. We can help determine the most cost-effective path forward, including partial repairs or upgrade options.
‘; } document.getElementById(‘reRecommendation’).innerHTML = recHTML; /* Update CTA link with miner info */ var ctaLink = document.getElementById(‘reCtaQuote’); if (ctaLink) { var subject = encodeURIComponent(‘Repair Quote: ‘ + miner.name); ctaLink.href = ‘/contact/?subject=’ + subject; } } /* ================================================================ RESET ================================================================ */ window.reReset = function() { selectedMiner = null; selectedIssues = []; currentStep = 1; /* Reset select */ document.getElementById(‘reMinerSelect’).value = ”; document.getElementById(‘reMinerPreview’).classList.remove(‘visible’); document.getElementById(‘reStep1Next’).disabled = true; /* Reset checkboxes */ var cards = document.querySelectorAll(‘.re-issue-card’); for (var i = 0; i < cards.length; i++) { cards[i].classList.remove('selected'); cards[i].querySelector('input').checked = false; } document.getElementById('reStep2Next').disabled = true; /* Reset toggles */ var toggleGroups = ['rePowerToggle', 'reBoardsToggle', 'reWarrantyToggle']; for (var g = 0; g < toggleGroups.length; g++) { var btns = document.getElementById(toggleGroups[g]).querySelectorAll('.re-toggle-btn'); for (var b = 0; b < btns.length; b++) { btns[b].classList.remove('active'); } /* Set defaults */ if (toggleGroups[g] === 'rePowerToggle') btns[2].classList.add('active'); else if (toggleGroups[g] === 'reBoardsToggle') btns[3].classList.add('active'); else btns[1].classList.add('active'); } /* Reset textarea */ document.getElementById('reSymptoms').value = ''; updateUI(); /* Scroll to top */ var el = document.querySelector('.repair-estimator'); if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' }); }; /* ================================================================ BOOT ================================================================ */ init(); })();

How accurate is this repair cost estimate?

This estimator is based on our experience repairing over 2,500 ASIC miners since 2016. The ranges reflect typical costs for each issue type, adjusted for your specific model. However, the actual cost depends on the exact components that need replacement, which can only be determined through hands-on diagnosis. D-Central always provides a firm, itemized quote after diagnosis — before any work begins. You never pay more than the quoted amount.

How do I ship my miner to D-Central for repair?

Package your miner securely in its original box or a sturdy box with adequate padding (foam, bubble wrap). Remove any aftermarket modifications and include a note with your contact information and a description of the issue. Ship to: D-Central Technologies, 1325 Rue Bergar, Laval, QC H7L 4Z7, Canada. We recommend using a carrier with tracking and insurance. For customers outside Canada, ensure proper customs documentation listing the item as “electronic equipment for repair” to avoid import…

Do you offer a warranty on repairs?

Yes. All D-Central repairs come with a warranty on the work performed and parts replaced. If the same issue recurs within the warranty period, we will re-repair it at no additional cost. The specific warranty duration depends on the repair type and is communicated with your quote. We stand behind our work — we have been in business since 2016 and our reputation depends on quality repairs.

What if the repair cost exceeds the miner’s value?

We will always tell you upfront if a repair doesn’t make economic sense. After diagnosis, if we determine that the repair cost approaches or exceeds the used market value of the miner, we will clearly communicate this and discuss alternatives — including sourcing a replacement unit, using your miner for parts, or exploring a partial repair to get some hashboards running. The decision is always yours.

How long does a typical ASIC repair take?

Most repairs are completed within 5-10 business days from the time we receive your miner. Simple issues like fan replacements or firmware recovery can be done in 1-3 days. Complex repairs involving chip-level work on multiple hashboards may take up to 15 business days. We will provide an estimated turnaround time with your quote. During peak periods, timelines may extend slightly — we always prioritize quality over speed.

What if I’m not sure what’s wrong with my miner?

That’s perfectly fine — and actually very common. Select “Unknown / won’t turn on” in the estimator, or simply describe your symptoms as best you can. Our diagnostic process is designed to identify the root cause. The diagnostic fee ($75-100 CAD) is applied toward your repair cost if you proceed with the repair. We will provide a detailed report of everything we find, even if you decide not to repair.