- Terramaster F2-221'e NixOS kurduktan sonra harici USB SSD darboğaz hâline gelince, içine NVMe önyükleme SSD'si yerleştirmek için özel bir backplane üretildi
- Mevcut F2-221 backplane'i SATA ve güç devrelerine odaklıydı; F5-422 fotoğraflarının analiziyle Terramaster'ın yuvaları ASM1061 SATA denetleyicisi 2 adet kullanarak genişlettiği doğrulandı
- PCIe diferansiyel çiftleri, F5-422 fotoğrafları, ASM1061 veri sayfası ve kuplaj kapasitörlerinin konumu eşleştirilerek izlendi; ancak bazı pinler sonuna kadar doğrulanamadı ve PCIe2 pin dizilimi de doğrulanmadı
- Prototip PCB, M.2 NVMe yuvasını doğrudan PCIe x1 Gen 2 hattına bağladı; BIOS'ta
Patriot P300 128GB göründü ve sabit diskler de normal çalıştı
- Nihai F3 Backplane, 3.3V hattını doğrudan kullanacak şekilde sadeleştirildi; birkaç hafta boyunca NVMe önyükleme ve btrfs scrub sırasında hatasız çalıştıktan sonra KiCad projesi GitHub'da yayımlandı
Harici USB SSD'den kurtulma fikri
- Terramaster F2-221, Intel J3355 tabanlı standart bir x86_64 NAS olduğundan, varsayılan TOS yerine NixOS kurmak başlı başına basitti
- İki SATA konektörünün de 4TB sabit diskler için kullanılıyor olması nedeniyle, işletim sistemi depolaması için harici bir USB SSD bağlamak gerekiyordu
- Rafın arkasında NAS çevresinde harici SSD'ye yer açmak ve bir şeyleri her taşıdığımda kabloya dikkat etmek zorunda kalmak, dahili bir depolama aygıtını gerekli kıldı
- Anakartta TOS bootstrap için dahili bir USB konektörü vardı, ancak bunun USB 2.0 olması onu önyükleme SSD'si için uygunsuz kılıyordu
F2-221 ve F5-422 backplane karşılaştırması
- F2-221 anakartında backplane PCB'sinin takıldığı PCIe x4 biçiminde bir konektör vardı, ancak mevcut backplane üzerinde PCIe-SATA dönüştürücü IC yoktu
- SATA konektörleri doğrudan PCIe kenar konektörüne kablolanmıştı ve gerçek pin yerleşimi standart PCIe değil, standart dışı bir pin dizilimiydi
- Intel J3355, 2 SATA portu ve 6 PCIe Gen 2 hattı sunduğundan, Terramaster'ın 4 yuvalı ve 5 yuvalı modellerinde SATA portlarını PCIe hatlarıyla genişletmiş olması muhtemeldi
- Terramaster F5-422 incelemesindeki yüksek çözünürlüklü fotoğraflarda 2 adet ASMedia ASM1061 IC tespit edildi
- ASM1061, PCIe Gen 2 x1 tabanlı bir SATA denetleyicisidir ve 2 SATA portu sağlar
- F5-422'de ilk ASM1061'in backplane üzerindeki 3. ve 4. portlara, ikinci ASM1061'in ise 5. porta bağlı olduğu anlaşıldı
- F2-221 anakartının arka yüzünde de, F5-422 backplane'inde PCIe sinyali gibi görünen pinlerin gerçekten kablolanmış olduğu doğrulandı
PCIe sinyallerinin tersine mühendisliği
- F5-422 backplane fotoğrafları ve ASM1061 veri sayfası temel alınarak PCIe hatları izlendi; ancak birden fazla diferansiyel çift via üzerinden iç katmanlara geçtiği için
TX, RX, REFCLK ayrımı kolay değildi
- Doğrulanabilen ipuçlarından biri, PCIe konektöründeki pinlerden birinin ASM1061'in
PERST# hattına bağlı olmasıydı
- PCIe'de geleneksel olarak kuplaj kapasitörlerinin
TX diferansiyel çiftinde bulunmasından yararlanılarak sinyal yönü ayırt edildi
- ASM1061'in
TX hattına bağlı diferansiyel çiftte kuplaj kapasitörlerinin backplane tarafında olması gerekiyordu
- CPU ve anakart açısından bu diferansiyel çift
RX olurdu
- ASM1061'in
RX hattına bağlanan diferansiyel çift için de anakart tarafındaki kuplaj kapasitörü konumu temel alındı
REFCLK, her PCIe x1 arayüzündeki TX ve RX çiftlerine en yakın kalan diferansiyel çift olarak tahmin edildi
- F5-422 backplane fotoğrafı KiCad'e aktarıldı; dış izler vialara kadar takip edilip iç katman yönlendirme olasılıklarıyla karşılaştırılarak PCIe1 pin dizilimi kabaca doğrulandı
- Bazı pinler mevcut F2-221 backplane'inde bağlı değildi ya da iç katmanlara girdiği için amaçları doğrulanamadı
- PCIe2 pin dizilimi doğrulanmadı
Güç devresinin yeniden kurulması
- F2-221 backplane'inin bir yüzünde PCIe sinyali için IC bulunmasa da, MOSFET, diyot, direnç ve kapasitör ağırlıklı çok sayıda güç devresi vardı
- Yakın plan fotoğraflarla bileşenler ve izler incelendi, ardından KiCad'de şema yeniden oluşturuldu
- Devrenin, SATA portlarındaki her güç hattı için bir tane olacak şekilde yavaş başlatmalı yük anahtarı yapısında olduğu anlaşıldı
- F2-221'de 2 SATA portu × 2 güç hattı = toplam 4 adet vardı
- F5-422'de 5 yuvaya karşılık toplam 10 adet bulunuyordu
- SATA konektöründeki toprak pinlerinden biri olan P4, sabit disk bağlandığında toprağa çekiliyor ve yük anahtarının enable pini gibi kullanılıyordu
- Bu yapının, sabit disk hot-plug sırasında yüksek ilk ani akım nedeniyle konektör ile sürücü arasında kıvılcım oluşmasını azaltmak için tasarlandığı düşünülüyordu
- Çok sayıda ayrık bileşeni lehimlemek zorunda kalmamak için, dahili yavaş başlatıcıya sahip tümleşik yük anahtarı IC'si onsemi NCP45521-L seçildi
Neden SATA SSD yerine NVMe seçildi
- İlk başta ASM1061 ile SATA portu ekleyip kasanın içine bir SATA SSD sabitleme seçeneği değerlendirildi
- M.2 konektörünü yerleştirmek için backplane montaj rayları arasında alan vardı; iki tarafta 1 mm'den az boşluk kalacak kadar dardı ama takılabiliyordu
- SATA M.2 SSD kullanmak için PCIe'yi SATA'ya çeviren bir denetleyici gerekiyordu
- F5-422'deki gibi ASM1061 kullanmak mümkündü
- Ancak ASM1061 IC'yi tek başına satın almak zordu; bu yüzden ASM1061 içeren bir PCIe karttan sökülmesi gerekecekti
- NVMe zaten PCIe tabanlı olduğu için, ek bir denetleyici olmadan PCIe hatları doğrudan M-key M.2 yuvasına bağlanabiliyordu
- NVMe SSD'ler genelde PCIe Gen 3 veya üzeri 4 hat kullanır, ancak bu tasarımda yalnızca PCIe Gen 2 tek hat kullanılacağından hızın SATA'dan daha yüksek olmaması bekleniyordu
- Yine de denetleyici gerektirmemesi, yönlendirmenin daha basit olması ve NVMe SSD seçeneklerinin daha fazla olması nedeniyle bu kullanım için NVMe daha uygundu
- Gerçek SSD olarak
Patriot P300 128GB, yerelde €14.90'a satın alındı
- BIOS'un doğrudan NVMe'den önyükleme yapıp yapmayacağı belirsiz olduğundan, en kötü ihtimalle dahili USB 2.0 bellekte bir önyükleme bölümü tutma seçeneği de değerlendirildi
Prototip PCB üretimi ve testler
- Yeni PCB'nin kasadaki backplane montaj yapısına uyması gerektiğinden, PCIe kenar konektörü ve vida deliklerinin konumu hassas olmalıydı
- PCB boyutu ve hava akışı kısıtları da hesaba katıldığından, prototip sadece elektriksel doğrulama için değil mekanik uyumu kontrol etmek için de önemliydi
- Mevcut PCB cetvel ve kumpasla ölçüldü; önden çekilmiş fotoğraflardaki lens bozulması azaltıldıktan sonra KiCad'e aktarılarak konektörler, vida delikleri ve dış hat eşleştirildi
- Prototipte doğrulanmamış pinler test noktası olarak çıkarıldı ve 3.3V hattı geç fark edildiği için 5V'u 3.3V'a dönüştüren bir buck dönüştürücü eklendi
- JLCPCB'den 4 katmanlı PCB sipariş edildi ve birkaç hafta sonra teslim alındı
- DFN paket lehimleme ilk kez yapılıyordu ve bileşenler çok küçüktü; yine de güç ile toprak arasındaki kısa devre kontrol edildi ve lehim durumu akıllı telefon yakın çekimleriyle incelendi
- NAS'a takılıp önyükleme yapıldığında BIOS önyükleme seçenekleri listesinde
Patriot P300 128GB göründü; böylece doğrudan NVMe'den önyükleme yapılabildi
- Endişe yaratan
CLKREQ hattı bulunamadı, ancak anakartın bir yerinde sürekli düşük seviyeye çekili olduğu ve REFCLK'in çalıştığı anlaşıldı
CLKREQ normalde SSD'nin gerektiğinde referans saat istemesi için kullanılır
- Bu tasarımda ASPM çalışmasa da, her zaman açık bir sunucunun önyükleme sürücüsü olduğundan büyük sorun olarak görülmedi
- Sabit diskler de bağlandıktan sonra normal şekilde çalıştı
- Test ve hata ayıklama için yapılan prototip doğrudan sorunsuz çalışınca, doğrulanmamış pinlerin amacı artık önemini yitirdi
Nihai F3 Backplane
- Prototip düzgün çalışsa da test noktaları üzerinde kalmıştı ve kasa içinde hafif eğri duruyordu; bu yüzden nihai V1.0 sürümü yeniden üretildi
- Nihai sürümde buck dönüştürücü kaldırıldı ve M.2 konektörü doğrudan PCIe konektörünün 3.3V hattına bağlandı
- Konum hafifçe ayarlanarak prototipteki eğrilik azaltıldı, test noktaları kaldırıldı ve logo eklendi
- Adı, F2'ye bir ekleme yapıldığı anlamında F3 Backplane olarak seçildi
- JLCPCB'den yeniden sipariş edilen nihai PCB de prototip gibi sorunsuz çalıştı
- Sabit diskler üzerinde tam bir btrfs scrub çalıştırıldı ve hata oluşmadı
- Sistem birkaç hafta boyunca NVMe SSD üzerinden çalıştırıldı ve hiçbir aksama yaşanmadı
- SATA konektörlerinin lehimlenmesi, iç toprak düzlemine thermal relief eklenmediği için zordu ve kaba kaldı; ancak bu sorun GitHub deposunda düzeltildi
Performans ve paylaşılan kaynaklar
- NVMe SSD için
hdparm sonuçları şöyleydi
/dev/nvme0n1:
Timing cached reads: 4554 MB in 2.00 seconds = 2279.68 MB/sec
Timing buffered disk reads: 1222 MB in 3.00 seconds = 407.22 MB/sec
- Bir NVMe SSD için çok yüksek hızlar değil, ancak yalnızca PCIe Gen 2 tek hat kullanıldığı için bu beklenen bir sonuçtu
- Önyükleme sürücüsü olarak performans yeterliydi
- KiCad projesi GitHub üzerinde yayımlandı
1 yorum
Hacker News yorumları
DFN paketini lehimleme yöntemi olarak tamamen çılgınca bir yönteme yakın, ama eğlenceli görünüyor
Tuhaf bir şekilde çalışabilir, ancak tutarlı güvenilirlik beklemek zor; tek seferlik bir proje için yeterli olabilir
Neyse ki DFN paketinin alt pedi iki kenara kadar uzandığı için mümkün oldu; QFN için bu yöntemin işe yarayacağını sanmıyorum
Benzer işleri normal lehimle birkaç kez yaptım; her pede biraz cömertçe koyup kısa devre yapacak kadarını önlemek yeterli
Flux, mümkünse sonraki ısıtma aşamasında da uzun süre dayanabilen reçine bazlı flux sürüp, sıcak hava tabancasıyla tüm footprint'i ısıttıktan sonra IC'yi hafifçe yerleştirmek yeterli
Böylece tümünü ısıtmak için IC'ye uzun süre sıcak hava tutmak gerekmez
Her zaman termal pede via birkaç tane koyup diğer taraftaki bakırı açıkta bırakırsanız, via'lar solder mask ile kapanmaz ve fazla lehimi emer
Çok düşük bütçeli SMD işlerinde termal pedi diğer taraftan havya ile de ısıtabilirsiniz
Çipe bastırmak sorun olmaz, ama pedlerle hizalamaya dikkat etmek gerekir
QFN'de dış kenarda büyük lehim damlaları oluşması dışında neredeyse hiç solder bridge görmedim
Günümüzdeki lehim alaşımları ve solder mask köprüleri oldukça iyi engelliyor; lehim de paket gövdesi ile solder mask arasında kalmaktansa metale tutunma eğiliminde
Tüketici tipi NAS kurulumlarında daha fazla standartlaşma olmasını isterdim
ASUSTOR'a birkaç yıldır Mini ITX uyumlu bir backplane ya da adaptör yapmayı düşünüp düşünmediklerini sordum
Birkaç yıl sonra sadece backplane'i değiştirebilmek ya da Pico ITX gibi bir formda SBC takabilmek güzel olurdu
5 ya da 10 yıl geçince NAS'ı düzgün yükseltmenin zor olmasından hoşlanmıyorum
Sadece anakart değiştirilebilse birçok 1Gbps NAS'ı 2.5Gbps ya da 10Gbps'ye yükseltip kasayı çöplüğe göndermeden daha uzun süre kullanmak mümkün olurdu
Sadece hesaplama tarafı eskidi diye NAS kasası ve backplane'i de çöpe atmak çok büyük israf
Laptop 13 anakartıyla sinerji de olabilir; dizüstü sınıfı TDP ve ARM olasılığı da var
Yine de NAS appliance pazarı “prosumer” ve küçük işletmeler düzeyinde, pek büyük görünmüyor; farklılaşma donanımdan çok yazılımda
İnsanların Synology almasının nedeni donanım değil, DSM
Framework'ün dikey entegrasyon planı olmadığını bir yerlerde okuduğumu hatırlıyorum; bu üzücü
Güç tasarrufu ya da touchpad hissi gibi şeylerin bile baştan düzgün çalıştığı Framework destekli bir OS olsa güzel olurdu
Böyle bir şeyi sıradan bir PC'ye doğrudan takmak isterdim; bulabildiğim ürünler ya 4 portlu ya da çok pahalı
Cevabı zaten kendiniz vermişsiniz
İnsanların gönüllü olarak içine daldıkları derinlik ve harcadıkları emek beni hep hayran bırakıyor.
Gitar ya da donanım modifikasyonu gibi, batırırsan gerçek para kaybedeceğin işlerde bu daha da geçerli.
Böyle projelere doğrudan girişmeden önce havya ya da ahşap işleme aletleriyle deneyimi başka yerlerde edinmem gerekiyormuş gibi geliyor.
Donanım ya da yazılımla daha kolay oynanabilen hack dostu küçük kutular pazarının neden büyük olmadığını da merak ediyorum.
İşletim sistemini söküp yerine genel amaçlı bir OS ya da kernel koyabileceğin, tüketici fiyat aralığında bir NAS olsa güzel olurdu.
Belki de gerçek fiziksel nesneleri modifiye etmekten fazla korkuyorumdur.
Fiziksel disk 24 TB, kullanılabilir kapasite 16 TB (Raid Z2); Ubuntu LTS sunucu sürümünü çalıştırıyor ve gereken container'ları Docker üzerinde Portainer ile ayağa kaldırıyorum.
Herkesin kolayca kullanabileceği tıklamalı bir GUI değil; SMB mount gibi şeyleri terminalden kendiniz oluşturmanız gerekiyor, ama bakımı yeterince kolay.
Donanım Asrock Rack C246 WSI Mini ITX anakart, 32 GB ECC RAM, Intel i3-9100T, 6 adet IronWolf 4 TB NAS sürücüsü, kısa derinlikli 2U rackmount kasa ve 1 TB Samsung 850 Evo boot sürücüsünden oluşuyor.
Boştaki güç tüketimi 23 W ile yeterince düşük, yük altında 65 W'a kadar çıkıyor.
Diskleri 10 dakika etkinlik olmadığında spin down yapacak şekilde ayarlıyorum; buna rağmen yıllık load/unload döngüsü yaklaşık 10 bin civarında, yani 600 binlik nominal değere göre sorun yok.
Sürücüleri kendiniz doldurup istediğiniz OS'u kurabiliyorsunuz.
183 TB yapılandırmada TrueNAS (ZFS) çalıştıran bir cihazım var ve çok iyi.
Temelde bol sürücü yuvası, backplane, SAS/SATA portu ve kontrolcü kapasitesi olan standart bir x86 kutu.
İkinci el pazarı da epey hareketli.
Ancak tek bir kasaya 10'dan fazla sürücü koymak isteyenleri hedeflediği için buna tüketici ürünü demek biraz zor.
Bir NAS almayı sürekli düşünüyorum, ama işe yaramaz ya da düşmanca bulut entegrasyonları yüzünden verilerimi tarayabilecek kapalı kaynak satıcı OS'u kullanmak istemiyorum.
Hardcoded parola backdoor'u kalmış olma ihtimalinden de hoşlanmıyorum.
BIOS kalitesini bilmiyorum; RAM yok ama 32 GB'a kadar genişletilebiliyor ve OS'u kendiniz getiriyorsunuz.
Intel Alder Lake N100 modeli $189: https://aoostar.com/products/aoostar-r1-2bay-nas-intel-n100-...
Ryzen 5700 modeli $299: https://aoostar.com/products/aoostar-r7-2-bay-nas-amd-ryzen-...
Raspberry Pi'yi NAS olarak kullananlar da var; yavaş ama ucuz yerel yedekleme için iş görüyor.
DNS-320 gibi eski entegre NAS'lar da root edilip güvenlik yamaları gelen nispeten güncel Debian türevleri çalıştırılabiliyor.
Ancak CPU ve RAM özellikleri çok düşük olduğu için komut satırına alışık olmanız gerekiyor.
Eski bir HP Proliant sunucu (gen8 civarı) alıp içine 4 adet 16 TB hard disk takmak ve 5. sürücüden boot etmek de bir yöntem.
“Bu USB header yalnızca USB 2.0 olduğu için bu amaç için bir seçenek değil” kısmını merak ettim.
Harika bir projeden şüphe ediyor değilim, ama bir NAS'ta OS için USB 2.0 neden uygun değil öğrenmek istiyorum.
Boot sırasında okumak ve ara sıra biraz veri yazmak dışında daha ne yapıyor?
6 aylık log dosyaları üzerinde journalctl işlemi yaptığınızda, journalctl'in pek optimal olmayan dosya erişim kalıpları nedeniyle 1-2 dakika sürüyor.
Elbette bunu yapmamın asıl nedeninin sadece kurcalamanın eğlenceli olması olduğunu inkâr etmeyeceğim.
Kötü bir hacker gibiyim.
NAS'a harici sürücü takmam gereken aynı sorun bende de vardı; ben sadece cırt cırt bantla NAS'ın üstüne yapıştırdım.
Ev yapımı NAS'ımı koymak için Lego'dan yaptığım “özel” kasadan çok daha havalı görünüyor.
4 USB hard diski bir hub'a taktım, hub'ı da Nvidia Jetson'a bağladım.
Tek parça hâline getirmek istiyordum ve sahte Lego çok ucuz olduğu için kolayca deneme yapabildim.
Eğlenceliydi de, ama bu çok daha profesyonel görünüyor; biraz kıskandım.
Şaşırtıcı ve zarif.
Tahmin, biraz deneme-yanılma, devre sürekliliğini kontrol etme ve load switch IC'yi oldukça hafif bir şekilde ikame etme yöntemiyle buraya kadar gelmesi etkileyici.
Yine de sonunda işe yaradı.
Gerçekten harika bir çözüm.
Aynı NAS'ın 5 yuvalı modelini kullanıyorum; dahili USB'ye Samsung USB bellek takıp TrueNAS Scale kurdum.
Tesla dashcam için yaygın kullanılan ürünü seçtim, yani en azından bir ölçüde dayanıklı olduğunu varsaydım.
Şimdilik memnunum ama CPU performansı hâlâ ciddi biçimde yetersiz; daha güçlü bir şeye yükseltmeyi planlıyorum.
Anakartı ARM compute module için özel bir carrier'a ya da yeni Lattepanda mu'ya değiştirmeyi de düşündüm, ama önce bu kadar emek vererek yaptığım yeni projeyi kullanmam gerekiyor gibi geliyor.
İyi yapılmış; insanların kendi donanımları üzerinde doğrudan kontrol sahibi olduğu bu tür projeleri seviyorum
Bunu açıkça belgelemiş olması da ayrıca övgüyü hak ediyor
Yine de hava akışı sorunu çıkıp çıkmayacağını merak ediyorum
Orijinal PCB’nin ve değiştirilmiş PCB’nin ortasında büyük bir delik var; bunun havayı disklerin üzerinden geçirmek için olduğunu tahmin ediyorum
Ancak NVMe sürücüsü bunu kapatıyor
Muhtemelen NVMe’nin kenarlarından yeterince hava sızıp normal disklerin soğutması için sorun olmayacaktır; üstüne bir de dünyanın en iyi soğutulan NVMe’sine sahip olunabilir
Yine de alan çok sıkışık görünüyor
Aerodinamikten çok anladığım söylenemez, bu yüzden emin olamam; ama delikten bir miktar havanın geçeceğini düşünüyorum
SSD için vida standoff’larını PCB’nin sol ucuna kadar itmemin nedeni de sağ taraftan daha fazla hava geçmesini sağlamaktı
En azından şu ana kadar soğutma performansının kötüleştiğini hissetmedim
Doğrudan kullanacağım bir şey değil ama yine de heyecan verici
Birinin böyle derine inip öğrenmesini ve öğrendiklerini paylaşmasını görmek gerçekten hoş ve motive edici