Kapatmak için ESC'ye basın

Evde ASIC Tamiri: Çip Arıza Tespiti ve Hash Kart Değişimi

Eğer S19 Pro'nuz o vaat ettiği 110 TH/s'yi vermeyi kestiyse ve arayüzde 76 çip yerine kocaman bir 0 veya kopuk bir zincir görüyorsanız, kartı tamir tezgahına alma vakti gelmiş demektir. Vakaların %90'ında aşırı ısınmadan kaynaklı çip lehim kopması (soğuk lehim), LDO regülatör patlaması veya PCB üzerinde kılcal çatlaklarla karşılaşıyoruz.

S19 Pro Hash Kartı Mimarisi: Voltaj Alanları ve Sinyal Hattı

Antminer S19 Pro hash kartı üzerinde 19 adet seri voltaj alanına (domain) bölünmüş toplam 76 adet BM1398 çip bulunur (her alanda 4 çip). Ana veri yolundaki toplam voltaj (yazılıma göre yaklaşık 12.5–15V), bu alanlar arasında bölüştürülür. Domain başına ortalama 0.7–0.8V düşerken, çip çekirdeğinin kendisi VCORE üzerinden 0.32–0.42V bandında beslenir.

Sinyaller, kontrol kartı soketinin yanındaki 1. çipten başlayıp 76. çipe kadar seri olarak akar:

  • CLK (25 MHz): Saat (Clock) sinyali. Mesela 30. çipte kesilirse, arkasından gelen bütün çipler karanlığa gömülür.
  • CO (Command Output): Kontrol kartından gelen komut giriş hattı.
  • RI (Return Input): Kontrol kartına dönen yanıt hattı. Ters yönde ilerler; yani 76. çipten 1. çipe doğru akar.
  • RST (Reset): Reset hattı. Buradaki düşük lojik seviye, çipi sert bir reset moduna sokar.
  • BO (Busy Output): Hattın meşguliyet durumunu bildiren sinyal.

Adım Adım Arıza Tespiti: Log Okumadan Ölçü Aletine

Arayüz üzerinden Kernel Log'u veya kullandığınız özel yazılımın (VNish, HiveOS) log ekranını açıyoruz. Zincirin tam olarak nerede patladığını tespit ediyoruz.

Loglarda ne aramalıyız:

  • Chain 1: found 0 asics — RI hattından hiçbir yanıt gelmiyor. Doğrudan 1. çipe, çipin LDO beslemesine veya sinyal kablosunun soketine odaklanın.
  • Chain 2: only 42 asics found — Sinyal 42 veya 43. çipte takılmış. Doğrudan o bölgeye müdahale ediyoruz.
  • Read temp sensor failed — TMP75 sıcaklık sensörü uçmuş. S19 Pro'da bu sensörler birkaç farklı domain üzerine dağıtılmıştır. Sensör ölü olursa kart koruma moduna geçer ve hiç start almaz.

Test Noktaları (Test Points) Üzerinden Ölçüm

Kartı servis güç kaynağından veya test cihazından besleyin (veri yoluna yüksek akım vermeden) ve multimetrenizi diyot test moduna alın (kırmızı prob GND / şaseye).

[Çip 42] ---> (CO / CLK / RST) ---> [Çip 43]
[Çip 42] <--- (RI / BO)        <--- [Çip 43]

Şaseye kıyasla test noktalarındaki sinyal hatlarının direnç değerleri kartın tamamında aşağı yukarı aynı olmalıdır:

  • CLK, CO, RI, RST: Yaklaşık 450–600 Ohm civarında.

Eğer 43. çipteki CLK noktası 0 Ohm veriyorsa (kısa devre) veya sonsuz direnç (açık devre) gösteriyorsa, o çip çöp olmuştur, değişim ister.

LDO Beslemeleri

Her domain, çipin iç lojik devrelerini beslemek için yardımcı voltajlara ihtiyaç duyar. Bunları küçük LDO regülatörleri sağlar:

  • VDD 1.8V: Sinyal arayüz devrelerini besler.
  • VDD 0.8V: Dahili çekirdek lojistiğini besler.

Çipte 1.8V var ama 0.8V yoksa, o çip CLK sinyalini bir sonraki elemana iletemez ve kart zinciri tam orada keser.

Neden Osiloskop Şart ve Nasıl Kullanılır?

Multimetre size sadece ortalama bir DC voltaj gösterir. Ancak voltaj normal göründüğü halde sinyalde gürültü varsa veya genlik çökmüşse multimetre tamamen çaresiz kalır. Bayağı yanıltıcı olabilir; osiloskop ise dalga formunu doğrudan önünüze koyar.

En az 100 MHz bant genişliğine sahip bir cihaz ve 10X kademeli bir prob işinizi görecektir.

CLK Ölçümü (25 MHz Saat Sinyali):

Prob ucunu CLK test noktasına değdirin. Temiz bir sinüs veya tepeden tepeye yaklaşık 1.8V genliğinde kare dalga görmeniz gerekir. Düzgün bir sinyal yerine 0.4V genlikli ezik bir testere dişi dalga görüyorsanız, çipin tampon (buffer) devresi yanmıştır ve sinyali ileri taşıyamıyordur.

CO/RI Paketlerinin Kontrolü:

Kart açılırken kısa veri paketleri fırlatır. Bunlar osiloskop ekranında hızlı anlık patlamalar (Burst) olarak görünür. 43. çipin girişine veri paketi geliyor ama çıkışından tık yoksa, o çip ölmüştür ya da RST hattı sıfıra çakılı kalmıştır.

Güç Hattındaki Parazitler (Ripple):

Osiloskop girişini AC moduna (kaplin) alın ve doğrudan çipin göbeğindeki/arkasındaki kondansatörleri ölçün. 30–40 mV üzerindeki dalgalanmalar, çip çevresindeki seramik kondansatörlerin sürekli ısıdan dolayı değer kaybettiğini gösterir.

Test Noktaları Referans Tablosu (Antminer S19 Pro / BM1398)

HatNormal V (DC)Osiloskop SinyaliGND DirenciKopukluk Belirtisi
CLK0.8–0.9V25 MHz Sinüs, 1.8Vpp500–600 OhmZincir arızalı çipte kesilir
CO0–0.2VSorgu anında 1.8V veri paketleri500–600 OhmÇip sorgulama adımı durur
RI1.7–1.8VYanıt anında veri paketleri500–600 Ohm0 ASIC hatası verir veya kartın arkasını görmez
RST1.8VYüksek lojik seviye (High)500–650 OhmÇipler reset durumundan çıkamaz
VDD 1.8V1.8VTemiz hat (AC gürültü < 20 mV)1–3 kOhmGiriş-çıkış tamponları çalışmaz
VDD 0.8V0.8VTemiz hat (AC gürültü < 15 mV)100–300 OhmÇip çekirdeği devreye girmez

Lehimleme Pratiği: BM1398 Sökme ve Takma İşlemleri

S19 Pro'nun alüminyum gövdeli kartları devasa bir ısı emici (heatsink) gibi davranır. Çipi sadece sıcak hava tabancasıyla üstten sökmeye çalışmak, alt katmanı yakmanın ve pad'leri (lehim yollarını) koparmanın en garanti yoludur.

İhtiyacınız olan malzemeler:

  • Alt ısıtıcı / Preheater (160–180°C sıcaklık profili).
  • Sıcak hava istasyonu (çip boyutuna uygun nozul ile).
  • Yıkanma gerektirmeyen (No-Clean) BGA flux (NC-559, Martin veya RMA-223).
  • 0.35 mm kurşunlu bilya veya Sn63/Pb37 kurşunlu lehim pastası (Kurşunlu lehim 183°C'de erir, fabrikasyon kurşunsuza göre işinizi inanılmaz kolaylaştırır).

İşlem sırası:

  1. Kartı alt ısıtıcıya yerleştirin, tatlı tatlı 150–160°C seviyesine kadar ısıtın. Acele ederseniz alüminyum ile PCB arasındaki genleşme farkından dolayı kart muz gibi bükülür.
  2. Çipin altına hafifçe flux sürün.
  3. Üstten sıcak hava tabancasıyla destekleyin (hava sıcaklığı yaklaşık 340–360°C, orta hava akışı). Dairesel hareketlerle ısıtın.
  4. Çipe cımbızla hafifçe dokunun: Bilyalar üzerinde "yüzmeye" başladığı an, dikey açıyla sakince yukarı kaldırın.
  5. Karta kalan lehim artıklarını reçineli bakır örgüyle temizleyin, ardından selülozik tiner veya izopropil alkol ile pırıl pırıl yıkayın.
  6. Yeni çipi kalıp (stencil) kullanarak kurşunlu pasta veya bilyalarla reball yapın.
  7. Çipi yönüne dikkat ederek yerleştirin (çip üzerindeki nokta işareti ile PCB üzerindeki baskı örtüşmeli), hizalayın.
  8. Alt ısıtıcı ve üst sıcak hava desteğiyle çip oturana kadar ısıtın. Çip, sıvı lehimin yüzey gerilimi sayesinde kendiliğinden tam yerine oturacaktır.

Hızlı Arıza Tespiti İçin Python Log Ayrıştırıcı (Parser)

Log dosyaları arasında boğulmamak için işte size pratik bir script. Miner'dan aldığınız logu atıyorsunuz, patlayan zinciri cımbızla çeker gibi bulup multimetreyi hangi çipe basmanız gerektiğini direkt söylüyor.

#!/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"[*] Log inceleniyor: {filepath}\n")
    try:
        with open(filepath, "r", errors="ignore") as f:
            for num, line in enumerate(f, 1):
                # Zincirdeki çip sayısı kontrolü
                c_match = chain_pattern.search(line)
                if c_match:
                    chain_id = int(c_match.group(1))
                    found = int(c_match.group(2))
                    if found &lt; EXPECTED_ASICS:
                        issues_found = True
                        problem_chains.append(
                            (chain_id, found, EXPECTED_ASICS)
                        )
                        print(
                            f"[!] Zincir {chain_id}: "
                            f"{EXPECTED_ASICS} çip yerine {found} çip bulundu."
                        )
                        if found == 0:
                            print(
                                "    -&gt; Zincirdeki ilk çip algılanamadı."
                            )
                            print(
                                "    -&gt; Kart beslemesini, RI, "
                                "RST, BOOT ve saat sinyalini kontrol edin."
                            )
                        else:
                            print(
                                f"    -&gt; #{found} numaralı çipin çıkışını (CLK/CO) "
                                f"kontrol edin."
                            )
                            print(
                                f"    -&gt; #{found + 1} numaralı çipin girişini (RI) ve "
                                f"LDO beslemesini kontrol edin."
                            )
                        print()
                # Sıcaklık sensörlerinin kontrolü
                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"[!] Sıcaklık sensör hatası "
                            f"#{sensor_id} (Satır {num})."
                        )
                        print(
                            "    -&gt; TMP75 entegresini, sensör beslemesini "
                            "ve I2C hatlarını kontrol edin."
                        )
                        print()
        # Özet Rapor
        print("=" * 60)
        print("SONUÇ ÖZETİ")
        print("=" * 60)
        if not issues_found:
            print("[+] Şablonlara uyan herhangi bir sorun tespit edilmedi.")
            return False
        if problem_chains:
            print("\nSorunlu Zincirler:")
            for chain_id, found, expected in problem_chains:
                print(
                    f"  - Chain {chain_id}: "
                    f"{found}/{expected} ASIC"
                )
        if reported_sensors:
            print("\nSıcaklık Sensör Hataları:")
            for sensor_id in sorted(reported_sensors):
                print(f"  - Sensor {sensor_id}")
        print()
        return True
    except FileNotFoundError:
        print(f"[-] Dosya bulunamadı: {filepath}")
        return True
    except Exception as e:
        print(f"[-] Dosya işlenirken hata oluştu: {e}")
        return True
if __name__ == "__main__":
    if len(sys.argv) &lt; 2:
        print(
            f"Kullanım: {sys.argv[0]} &lt;log_dosyasi_yolu.txt&gt; "
            f"[beklenen_asik_sayisi]"
        )
        sys.exit(1)
    if len(sys.argv) &gt;= 3:
        try:
            EXPECTED_ASICS = int(sys.argv[2])
        except ValueError:
            print("[-] beklenen_asik_sayisi bir sayı olmalıdır.")
            sys.exit(1)
    has_issues = parse_asic_log(sys.argv[1])
    sys.exit(1 if has_issues else 0)

Çalıştırma Örnekleri:

python diag.py kernel.log

Farklı çip sayısına sahip kartlar için:

  • python diag.py kernel.log 63
  • python diag.py kernel.log 72
  • python diag.py kernel.log 80

Kasaya Toplamadan Önce Son Kontrol Listesi (Checklist)

  • VCORE Hat Kontrolü: Şaseye göre direnç sıfır olmamalı (kısa devre kontrolü).
  • Yüksüz LDO Kontrolü: Servis PSU'sundan voltaj verip değiştirdiğiniz çipteki 1.8V ve 0.8V değerlerini teyit edin.
  • Sinyal Sürekliliği: Osiloskopla 25 MHz sinyalinin lehimlediğiniz çipten geçip yola devam ettiğinden emin olun.
  • Yüksek Yük Testi: Cihazı toplayın, kendi fanlarını bağlayın, orijinal yazılımla 2–3 saat yük altında çalıştırıp o zincirdeki HW (Hardware) hata oranlarını izleyin.
Bu blog yazısını şununla özetleyin:

FAQ

Multimetreyi diyot moduna alıp toprak hattına (GND) göre CLK, CO, RI ve RST test noktalarının direncini ölçün; normal değerler 450 ile 600 ohm arasında olmalıdır. Sistem kernel loglarında tespit edilen son çip indeksini kontrol edin; arıza genellikle CLK/CO sinyalini ileten son çalışan çipin çıkışında veya RI sinyalini geri göndermeyen bir sonraki çipin girişindedir.

Sinyal giriş-çıkış arabellek devrelerini besleyen VDD 1.8V ve dahili mantık çekirdeğini besleyen VDD 0.8V LDO hatlarının bulunması zorunludur. Bu LDO voltajlarından birinin kesilmesi durumunda ilgili çip pasif konuma geçer, CLK sinyal iletimi durur ve kontrol kartı tüm hashboard zincirini devreden çıkarır.

Devreye yük bindirmeden yüksek frekanslı sinyalleri ölçmek için en az 100 MHz bant genişliğine sahip bir osiloskop ve 10X prob kullanın. CLK test noktasında yaklaşık 1.8Vpp genlikte 25 MHz kararlı sinüs dalgasının varlığını doğrulayın ve VCORE kapasitörlerindeki dalgalanmanın (ripple) 30 ila 40 mV sınırını aşıp aşmadığını tespit etmek için AC kuplaj moduna geçin.
Sying Yu

I am a blockchain developer specializing in building secure, scalable, and innovative decentralized solutions. My expertise covers smart contracts, payment systems, and integrating crypto with fiat to optimize financial workflows. I thrive on creating modern, efficient tools for the evolving digital economy....

Yorumunuzu paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlendi *