Kalau S19 Pro kamu mendadak drop nggak keluar 110 TH/s, terus di web UI malah nampil 0 chip atau rantenya putus dari 76 chip — itu tandanya hashboard wajib naik meja servis. 90% kasus yang sering ditemuin di lapangan itu biasanya penyakit klasik: chip kepanasan sampe lepas (detaching), LDO regulator jebol, atau ada jalur micro-crack di PCB-nya.
Arsitektur Hashboard S19 Pro: Pahami Skema Domain & Jalur Sinyal
Di hashboard Antminer S19 Pro, ada 76 chip BM1398 yang dibagi jadi 19 domain daya seri (tiap domain isi 4 chip). Tegangan total dari busbar (sekitar 12.5–15V tergantung firmware) bakal dibagi rata ke tiap domain. Jadi satu domain dapet jatah sekitar 0.7–0.8V, sedangkan chip-nya sendiri jalan di tegangan VCORE sekitar 0.32–0.42V.
Sinyal ngalir secara berurutan berantai dari chip ke-1 (deket soket kontroler) sampe chip ke-76:
- CLK (25 MHz): Sinyal clock utama. Kalau jalur ini putus misal di chip ke-30, chip sisanya ke belakang bakal tewas/padam semua.
- CO (Command Output): Jalur perintah masuk yang dikirim dari control board.
- RI (Return Input): Jalur balik balasan ke control board. Arah jalurnya kebalikan — balik dari chip ke-76 menuju chip ke-1.
- RST (Reset): Jalur reset. Kalau dapet logika LOW, chip bakal dipaksa masuk kondisi hard reset.
- BO (Busy Output): Sinyal indikator status bus sibuk.
Buka Peta Masalah: Step-by-Step dari Kernel Log ke Pengukuran Multi
Pertama, cek Kernel Log via dashboard web miner atau custom firmware (VNish, HiveOS). Cermati di chip nomor berapa rantai sinyalnya mulai keputus.
Pattern penting yang biasa nongol di log:
- Chain 1: found 0 asics — Jalur RI babar blas nggak ada respon balasan. Langsung takar chip ke-1, cek suplai LDO-nya, atau cek kabel fleksibel data & soketnya.
- Chain 2: only 42 asics found — Sinyal "nyangkut" di sekitar chip 42 atau 43. Nggak usah muter-muter, langsung todong area situ.
- Read temp sensor failed — Sensor suhu TMP75 KO. Di S19 Pro sensor ini tersebar di beberapa domain. Kalau sensor mati, board otomatis ngunci alias ogah run demi proteksi.
Pengukuran di Test Point (TP)
Suntik daya ke board pakaikan PSU servis/tester khusus (ingat, jangan nyalain arus tegangan tinggi dulu!). Stel multimeter ke mode Diode / Continuity Test (probe merah tempel ke GND).
[Chip 42] ---> (CO / CLK / RST) ---> [Chip 43]
[Chip 42] <--- (RI / BO) <--- [Chip 43]Hambatan jalur sinyal di test point terhadap ground (GND) nilainya harusnya relatif imbang di sepanjang board:
- CLK, CO, RI, RST: Normalnya sekitar 450–600 Ohm.
Kalau di chip ke-43 titik CLK-nya nge-buzz bunyi 0 Ohm (shorted) atau malah open loop (tak terhingga) — fix, chip-nya wajib dicabut diganti baru.
Jalur Pasokan LDO
Tiap domain butuh tegangan pembantu buat ngidupin logika internal di dalam chip. Tegangan ini disuplai sama LDO regulator kecil-kecil:
- VDD 1.8V: Suplai komponen pendukung sinyal I/O.
- VDD 0.8V: Suplai core logika internal chip.
Kalau tegangan 1.8V keluar tapi 0.8V-nya gaib — chip nggak bakal bisa nerusin sinyal CLK ke chip sebelahnya, alhasil rantai sinyal langsung kepotong di situ.
Kenapa Wajib Pakai Osiloskop & Cara Pakainya
Multimeter cuma bisa baca rerata tegangan searah (DC). Tapi bakal mati kutub kalau tegangan kelihatan normal padahal sinyalnya udah cacat kena noise atau amplitudonya drop. Multimeter sering nipu di kasus gini, sedangkan osiloskop langsung ngebuka "wujud" gelombang aslinya.
Minimal siapin osiloskop bandwidth 100 MHz plus probe attenuator mode 10X.
Cek Jalur CLK (Frekuensi Clock 25 MHz):
Tempel probe ke TP CLK. Di layar harusnya muncul gelombang sinus murni atau gelombang kotak (square wave) rapi dengan amplitudo sekitar 1.8V. Kalau gelombangnya malah penyok kaya gergaji cacing cuma 0.4V — buffer internal chip-nya udah setengah mateng/lemah, nggak sanggup ngedorong sinyal lebih jauh.
Cek Paket Sinyal CO/RI:
Saat awal booting, board bakal nembakin data impuls singkat. Di osiloskop kelihatan kaya lonjatan gelombang cepet (burst). Kalau di input chip 43 ada impuls masuk tapi di output-nya melempem/hening — chip itu tewas, atau sinyal RST-nya tertahan di logika nol.
Cek Ripple Tegangan Bus Power:
Ubah coupling osiloskop ke mode AC (AC coupling) lalu ukur kapasitor keramik tepat di perut/bawah chip. Kalau riak ripple-nya tembus di atas 30–40 mV, tandanya kapasitor keramik di sekitar chip udah melar/soak akibat terpanggang panas terus-menerus.
Patokan Angka Test Point (Antminer S19 Pro / BM1398)
| Sinyal | Tegangan Normal (DC) | BENTUK SINYAL (OSILOSKOP) | HAMBATAN KE GND | GEJALA KALAU PUTUS/RUSAK |
|---|---|---|---|---|
| CLK | 0.8–0.9V | Sinus 25 MHz, 1.8Vpp | 500–600 Ohm | Rantai sinyal stop di chip yang jebol |
| CO | 0–0.2V | Paket pulsa 1.8V pas polling | 500–600 Ohm | Proses pemindaian chip mogok |
| RI | 1.7–1.8V | Paket pulsa saat kirim balasan | 500–600 Ohm | Nampil 0 ASICs / chip ekor kepotong |
| RST | 1.8V | Logika HIGH konstan | 500–650 Ohm | Chip ngunci di mode reset terus |
| VDD 1.8V | 1.8V | Jalur bersih (Noise AC < 20 mV) | 1–3 kOhm | Buffer I/O ngaco/mogok |
| VDD 0.8V | 0.8V | Jalur bersih (Noise AC < 15 mV) | 100–300 Ohm | Core utama chip mati total |
Eksekusi Solder & BGA: Trik Nyabut & Pasang Chip BM1398
Kekurangan PCB aluminium S19 Pro itu dia nyerap panas luar biasa (heat sink gede). Nekat asal nembak pemanas hot air dari atas tanpa pemanas bawah cuma bikin PCB gosong dan pad jalurnya ngelupas/terangkat!
Alat tempur wajib:
- Preheater / Bottom heater (setting profil suhu 160–180°C).
- Hot air blower / Solder uap (nozzle disesuaikan ukuran chip).
- Flux BGA no-clean berkelas (NC-559, Martin, atau RMA-223 original).
- Timah bola BGA 0.35 mm (Leaded) atau timah pasta Sn63/Pb37 (titik leleh timah timbal cuma 183°C, jauh lebih ramah dibanding timah bawaan pabrik yang lead-free).
SOP Eksekusi:
- Taruh board di atas preheater, panasin bertahap pelan-pelan sampe 150–160°C. Jangan keburu-buru, biar PCB aluminium-nya nggak bengkok/melengkung gara-gara muai panas mendadak.
- Olesin sedikit flux di sela-sela pinggiran chip.
- Tembak blower dari atas (set suhu blower ~340–360°C, angin sedang). Puter-puter gerakannya melingkar rata.
- Sentuh chip pakai pinset: begitu terasa "ngapung" di atas timah leleh, angkat chip tegak lurus ke atas pelan-pelan.
- Bersihin sisa timah lama di pad PCB pakai desoldering wick + arpus/solder flux, terus seka resik pakaikan alkohol IPA/thinner bening.
- Reball chip baru pakai plat stencil BGA dengan timah pasta timbal atau bola timah.
- Posisikan chip sesuai titik pin-1 (pasin tanda di bodi chip sama garis marking di PCB).
- Panasin lagi pakai preheater + blower atas sampe timah ngunci. Chip bakal nyari posisi presisi sendiri gara-gara gaya tegangan permukaan timah cair.
Script Python Log Parser: Solusi Otomatis Biar Nggak Pusing
Buat yang males melototin log baris demi baris, pakaikan script Python ini. Cukup feed berkas log miner-nya, script bakal langsung nuding mana rantai bermasalah lengkap sama instruksi chip mana yang wajib dicolok multimeter.
#!/usr/bin/env python3
import re
import sys
EXPECTED_ASICS = 76
def parse_asic_log(filepath):
chain_pattern = re.compile(
r"Chain\[(\d+)\]:\s*found\s*(\d+)\s*asics",
re.IGNORECASE
)
sensor_pattern = re.compile(
r"sensor[\[\s]*(\d+)[\]\s]*.*temp.*error",
re.IGNORECASE
)
issues_found = False
problem_chains = []
reported_sensors = set()
print(f"[*] Parsing berkas log: {filepath}\n")
try:
with open(filepath, "r", errors="ignore") as f:
for num, line in enumerate(f, 1):
# Cek jumlah chip ASIC di rantai
c_match = chain_pattern.search(line)
if c_match:
chain_id = int(c_match.group(1))
found = int(c_match.group(2))
if found < EXPECTED_ASICS:
issues_found = True
problem_chains.append(
(chain_id, found, EXPECTED_ASICS)
)
print(
f"[!] Rantai {chain_id}: Cuma ketemu "
f"{found} chip dari total {EXPECTED_ASICS}."
)
if found == 0:
print(
" -> Chip pertama gagal kedeteksi."
)
print(
" -> Cek suplai daya, jalur RI, "
"RST, BOOT, dan sinyal clock."
)
else:
print(
f" -> Cek output (CLK/CO) "
f"chip #{found}"
)
print(
f" -> Cek input (RI) & "
f"suplai LDO chip #{found + 1}"
)
print()
# Cek error sensor suhu
s_match = sensor_pattern.search(line)
if s_match:
sensor_id = int(s_match.group(1))
if sensor_id not in reported_sensors:
issues_found = True
reported_sensors.add(sensor_id)
print(
f"[!] Sensor suhu Error "
f"#{sensor_id} (baris {num})."
)
print(
" -> Cek IC TMP75, tegangan "
"suplai sensor, dan bus I2C."
)
print()
# Ringkasan Akhir
print("=" * 60)
print("RINGKASAN HASIL DIAGNOSA")
print("=" * 60)
if not issues_found:
print("[+] Aman! Nggak ditemukan indikasi masalah.")
return False
if problem_chains:
print("\nRantai Bermasalah:")
for chain_id, found, expected in problem_chains:
print(
f" - Chain {chain_id}: "
f"{found}/{expected} ASIC"
)
if reported_sensors:
print("\nError Sensor Suhu:")
for sensor_id in sorted(reported_sensors):
print(f" - Sensor {sensor_id}")
print()
return True
except FileNotFoundError:
print(f"[-] Berkas tak ditemukan: {filepath}")
return True
except Exception as e:
print(f"[-] Gagal memproses berkas: {e}")
return True
if __name__ == "__main__":
if len(sys.argv) < 2:
print(
f"Cara pakai: {sys.argv[0]} <path_to_log.txt> "
f"[expected_asics]"
)
sys.exit(1)
if len(sys.argv) >= 3:
try:
EXPECTED_ASICS = int(sys.argv[2])
except ValueError:
print("[-] expected_asics harus berupa angka integer.")
sys.exit(1)
has_issues = parse_asic_log(sys.argv[1])
sys.exit(1 if has_issues else 0)Contoh Eksekusi:
python diag.py kernel.log
Kalau Board Seri Lain (Jumlah Chip Beda):
- python diag.py kernel.log 63
- python diag.py kernel.log 72
- python diag.py kernel.log 80
Checklist QC Terakhir Sebelum Rakit Ulang ke Casing
- Resistansi Jalur VCORE: Ukur resistansi terhadap ground, pastikan nol alias nggak korslet/short-circuit.
- Tes LDO Tanpa Load Beban Utama: Colok power dari PSU bench/servis, pastikan 1.8V & 0.8V stabil keluar di chip baru.
- Uji Lintas Sinyal: Intip via osiloskop buat memastikan sinyal 25 MHz lolos mulus nembus chip pengganti ke jalur seterusnya.
- Stress Test Full Load: Rakit balik board ke casing, pasang kipas bawaan, running 2–3 jam pakai firmware standar sambil dipantau apakah masih ada indikasi HW Error di rantai tersebut.