- Terramaster F2-221 पर NixOS चलाने के बाद बाहरी USB SSD बाधा बनने लगा, इसलिए अंदर NVMe boot SSD लगाने के लिए खुद एक backplane बनाया
- मौजूदा F2-221 backplane मुख्यतः SATA और power circuit पर आधारित था, और F5-422 की तस्वीरों के विश्लेषण से पता चला कि Terramaster ने ASM1061 SATA controller के 2 यूनिट से bays बढ़ाए थे
- PCIe differential pairs को F5-422 की तस्वीरों, ASM1061 datasheet और coupling capacitor की positions मिलाकर trace किया गया, लेकिन कुछ pins अंत तक verify नहीं हो पाए और PCIe2 pinout भी verify नहीं किया गया
- Prototype PCB ने M.2 NVMe slot को सीधे PCIe x1 Gen 2 line से जोड़ा; BIOS में
Patriot P300 128GB दिखा और hard disks भी सामान्य रूप से चलीं
- अंतिम F3 Backplane में 3.3V rail को सीधे इस्तेमाल करने के लिए design सरल किया गया, और कई हफ्तों तक NVMe boot व btrfs scrub में बिना error चलने के बाद KiCad project GitHub पर सार्वजनिक किया गया
बाहरी USB SSD हटाने की शुरुआत
- Terramaster F2-221 Intel J3355 आधारित standard x86_64 NAS है, इसलिए default TOS की जगह NixOS install करना अपने-आप में सरल था
- दोनों SATA connectors 4TB hard disks के लिए इस्तेमाल हो रहे थे, इसलिए operating system storage के लिए बाहरी USB SSD लगाना पड़ता था
- shelf के पीछे NAS के आसपास external SSD के लिए जगह बनानी पड़ती थी, और सामान हिलाते समय हर बार cable का ध्यान रखना पड़ता था, इसलिए internal storage की जरूरत महसूस हुई
- mainboard पर TOS bootstrap के लिए internal USB connector था, लेकिन वह USB 2.0 था, इसलिए boot SSD के लिए उपयुक्त नहीं था
F2-221 और F5-422 backplane की तुलना
- F2-221 mainboard पर backplane PCB लगने वाला PCIe x4 जैसा connector था, लेकिन मौजूदा backplane में PCIe-SATA conversion IC नहीं था
- SATA connectors सीधे PCIe edge connector से wired थे, और वास्तविक pin layout standard PCIe नहीं बल्कि non-standard pinout था
- Intel J3355 दो SATA ports और छह PCIe Gen 2 lanes देता है, इसलिए संभव था कि Terramaster के 4-bay और 5-bay models में PCIe lanes से SATA ports बढ़ाए गए हों
- Terramaster F5-422 review की high-resolution तस्वीरों में ASMedia ASM1061 के 2 IC पहचाने गए
- ASM1061 PCIe Gen 2 x1 आधारित SATA controller है और 2 SATA ports देता है
- F5-422 में समझ आया कि पहला ASM1061 backplane के port 3 और 4 से, और दूसरा ASM1061 port 5 से जुड़ा है
- F2-221 mainboard के पीछे भी पुष्टि हुई कि F5-422 backplane में PCIe signals जैसे दिखने वाले pins वास्तव में wired हैं
PCIe signal reverse engineering
- F5-422 backplane की तस्वीरों और ASM1061 datasheet के आधार पर PCIe lines trace की गईं, लेकिन कई differential pairs vias से होकर internal layers में चली जाती थीं, इसलिए
TX, RX, REFCLK अलग करना आसान नहीं था
- उपलब्ध संकेतों में एक यह था कि PCIe connector का एक pin ASM1061 के
PERST# से जुड़ा था
- PCIe में परंपरागत रूप से
TX differential pair में coupling capacitor होता है—इस बात का उपयोग signal direction अलग करने के लिए किया गया
- ASM1061 के
TX से जुड़ी differential pair में backplane side पर coupling capacitor होना चाहिए
- CPU और mainboard के नजरिए से वही differential pair
RX बनती है
- ASM1061 के
RX से जुड़ी differential pair का अनुमान mainboard side के coupling capacitor की position से लगाया गया
REFCLK का अनुमान हर PCIe x1 interface के TX और RX के सबसे नजदीक बची हुई differential pair के रूप में लगाया गया
- KiCad में F5-422 backplane की तस्वीर import करके external traces को vias तक follow किया गया और internal layer routing की संभावनाओं की तुलना करते हुए PCIe1 pinout को मोटे तौर पर verify किया गया
- कुछ pins मौजूदा F2-221 backplane में connected नहीं थे या internal layers में चले जाते थे, इसलिए उनका उद्देश्य पता नहीं चल पाया
- PCIe2 pinout verify नहीं किया गया
Power circuit का पुनर्निर्माण
- F2-221 backplane के एक side पर PCIe signal के लिए IC नहीं था, लेकिन MOSFET, diode, resistor और capacitor आधारित power circuits बहुत थे
- close-up तस्वीरों से components और traces की जाँच की गई और KiCad में schematic फिर से बनाया गया
- circuit को SATA port की हर power rail के लिए एक-एक slow-start load switch structure के रूप में समझा गया
- F2-221 में 2 SATA ports × 2 power rails के हिसाब से कुल 4 हैं
- F5-422 में 5 bays के लिए कुल 10 हैं
- SATA connector के ground pins में से एक, P4, hard disk लगने पर ground की ओर pull होता था और load switch के enable pin जैसा इस्तेमाल होता था
- यह structure hard disk hot-plug के समय high initial inrush current के कारण connector और drive के बीच spark बनने को कम करने के लिए लगता है
- बहुत सारे discrete components solder करने से बचने के लिए built-in slow starter वाला integrated load switch IC onsemi NCP45521-L चुना गया
SATA SSD की जगह NVMe चुनने की वजह
- शुरुआत में ASM1061 से SATA port जोड़कर SATA SSD को case के अंदर चिपकाने का विकल्प सोचा गया
- M.2 connector के लिए backplane mounting rails के बीच जगह थी, और दोनों ओर clearance 1mm से कम जितना तंग था, फिर भी mount करना संभव था
- SATA M.2 SSD इस्तेमाल करने के लिए PCIe को SATA में बदलने वाला controller चाहिए था
- F5-422 की तरह ASM1061 इस्तेमाल करने का तरीका संभव था
- लेकिन ASM1061 IC अलग से खरीदना मुश्किल था, इसलिए ASM1061 लगे PCIe card से IC निकालना पड़ता
- NVMe खुद PCIe आधारित है, इसलिए अलग controller के बिना PCIe lines को सीधे M-key M.2 slot से जोड़ा जा सकता है
- NVMe SSD आम तौर पर PCIe Gen 3 या उससे ऊपर की 4 lanes इस्तेमाल करते हैं, लेकिन इस design में सिर्फ PCIe Gen 2 की 1 lane इस्तेमाल होती है, इसलिए speed SATA से तेज नहीं होने की उम्मीद थी
- फिर भी controller की जरूरत नहीं थी, routing सरल थी, और NVMe SSD के विकल्प ज्यादा थे, इसलिए इस उपयोग के लिए NVMe अधिक उपयुक्त था
- actual SSD के रूप में
Patriot P300 128GB स्थानीय तौर पर €14.90 में खरीदा गया
- BIOS सीधे NVMe से boot करेगा या नहीं, यह स्पष्ट नहीं था, इसलिए सबसे खराब स्थिति में internal USB 2.0 stick पर boot partition रखने का विकल्प भी सोचा गया
Prototype PCB बनाना और testing
- नया PCB case की backplane mounting structure में fit होना चाहिए था, इसलिए PCIe edge connector और screw holes की positions सटीक होना जरूरी था
- PCB size और airflow restriction पर भी ध्यान देना था, इसलिए prototype सिर्फ electrical verification के लिए नहीं बल्कि mechanical fit check करने के लिए भी महत्वपूर्ण था
- मौजूदा PCB को ruler और caliper से मापा गया, front photo का lens distortion घटाकर उसे KiCad में import किया गया और connector, screw holes व outline को align किया गया
- prototype में unverified pins को test points के रूप में निकाला गया, और 3.3V rail देर से पता चलने के कारण 5V को 3.3V में बदलने वाला buck converter लगाया गया
- JLCPCB पर 4-layer PCB order किया और कुछ हफ्तों बाद receive किया
- DFN package solder करना पहली बार था और components बहुत छोटे थे, लेकिन power और ground के बीच short check किया गया और smartphone close-up से soldering की हालत inspect की गई
- NAS में लगाकर boot करने पर BIOS boot option list में
Patriot P300 128GB दिखा, इसलिए NVMe से सीधे boot करना संभव था
- चिंता वाली
CLKREQ line नहीं मिली, लेकिन लगता था कि mainboard में कहीं वह हमेशा low pull की हुई है और REFCLK काम कर रहा था
CLKREQ आम तौर पर SSD को जरूरत पड़ने पर reference clock request करने के लिए इस्तेमाल होता है
- इस design में ASPM काम नहीं करता, लेकिन हमेशा चालू रहने वाले server की boot drive के लिए इसे बड़ा issue नहीं माना गया
- hard disks भी connect करने के बाद सामान्य रूप से चलीं
- testing और debugging के लिए बनाया prototype वैसे ही ठीक से चलने लगा, इसलिए unverified pins का उद्देश्य अब महत्वपूर्ण नहीं रहा
अंतिम F3 Backplane
- prototype सही काम कर रहा था, लेकिन test points बचे थे और case के अंदर थोड़ा तिरछा बैठ रहा था, इसलिए final version V1.0 फिर से बनाया गया
- final version में buck converter हटाकर M.2 connector को PCIe connector की 3.3V rail से सीधे जोड़ा गया
- prototype के तिरछेपन को कम करने के लिए position थोड़ा adjust की गई, test points हटाए गए और logo जोड़ा गया
- नाम F3 Backplane रखा गया, जिसका मतलब F2 में एक और जोड़ना था
- JLCPCB पर फिर से order किया गया और मिला final PCB भी prototype की तरह सामान्य रूप से चला
- hard disks पर full btrfs scrub चलाया गया और कोई error नहीं आया
- कई हफ्तों तक system NVMe SSD से चलाया गया और कोई hiccup नहीं आया
- SATA connector soldering मुश्किल और खुरदरी रही क्योंकि internal ground plane में thermal relief नहीं जोड़ा गया था, लेकिन यह समस्या GitHub repository में ठीक कर दी गई
Performance और सार्वजनिक materials
- NVMe SSD का
hdparm result इस प्रकार है
/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
- NVMe SSD के हिसाब से यह बहुत तेज speed नहीं है, लेकिन केवल PCIe Gen 2 की 1 lane इस्तेमाल होने के कारण यह expected result है
- boot drive के उपयोग के लिए performance पर्याप्त है
- KiCad project GitHub पर सार्वजनिक है
1 टिप्पणियां
Hacker News राय
DFN पैकेज को solder करने का यह तरीका लगभग पूरी तरह पागलपन भरा तरीका लगता है, लेकिन मज़ेदार ज़रूर दिखता है
यह किसी तरह काम कर सकता है, लेकिन लगातार भरोसेमंद नतीजों की उम्मीद करना मुश्किल है, और शायद एक-बार के प्रोजेक्ट के लिए ही काफी होगा
अच्छी बात यह रही कि DFN पैकेज का bottom pad दोनों किनारों तक जाता था, इसलिए यह संभव हुआ, और QFN पर यह तरीका शायद काम नहीं करेगा
मैंने इसी तरह का काम कई बार सामान्य solder से किया है; हर pad पर बस थोड़ा उदार होकर लगाना होता है, लेकिन इतना नहीं कि short हो जाए
flux, और हो सके तो ऐसा rosin-based flux जो अगले heating step तक बना रहे, लगाइए; फिर hot air gun से पूरे footprint को गरम कीजिए और IC को हल्के से ऊपर रख दीजिए
इससे पूरे हिस्से को गरम करने के लिए IC पर लंबे समय तक hot air नहीं मारनी पड़ती
मैं हमेशा thermal pad पर कुछ vias डालता हूँ और दूसरी तरफ का copper खुला छोड़ता हूँ, ताकि vias solder mask से बंद न हों और बचा हुआ solder सोख लें
बहुत कम बजट वाले SMD काम में दूसरी तरफ से soldering iron से thermal pad को गरम भी किया जा सकता है
chip को दबाना ठीक है, लेकिन pad के साथ alignment का ध्यान रखना चाहिए
QFN में बाहरी किनारे पर बड़े solder blob बनने के अलावा मैंने solder bridge बहुत कम देखे हैं
आजकल के solder alloys और solder mask bridge को काफी अच्छी तरह रोक लेते हैं, और solder में package body और solder mask के बीच रुकने के बजाय सिर्फ metal से चिपकने की प्रवृत्ति ज्यादा होती है
काश consumer NAS build में standardization थोड़ा और होता
मैंने ASUSTOR से पूछा था कि क्या वे वर्षों से Mini ITX-compatible backplane या adapter बनाने के बारे में सोच रहे हैं
अच्छा होगा अगर कुछ साल बाद सिर्फ backplane बदला जा सके, या Pico ITX जैसी form factor में SBC लगाया जा सके
मुझे यह बात पसंद नहीं कि 5 या 10 साल बाद NAS को ठीक से upgrade करना मुश्किल हो जाता है
अगर सिर्फ motherboard बदला जा सके, तो बहुत से 1Gbps NAS को 2.5Gbps या 10Gbps तक अपग्रेड किया जा सकता है, और chassis को landfill में भेजने के बजाय ज्यादा समय तक इस्तेमाल किया जा सकता है
सिर्फ compute part पुराना होने पर NAS chassis और backplane भी फेंक देना बहुत बड़ी बर्बादी है
Laptop 13 motherboard के साथ synergy भी हो सकती है, और laptop-class TDP के साथ ARM की संभावना भी
लेकिन NAS appliance बाज़ार शायद इतना बड़ा नहीं दिखता; यह ज़्यादातर “prosumer” और छोटे कारोबारियों तक सीमित है, और इसमें hardware से ज्यादा फर्क software से पड़ता है
लोग Synology hardware की वजह से नहीं, बल्कि DSM की वजह से खरीदते हैं
कहीं पढ़ा था कि Framework की vertical integration की कोई योजना नहीं है, यह थोड़ा अफसोसजनक है
अच्छा होगा अगर कोई Framework-supported OS हो जिसमें power saving या touchpad feel जैसी चीज़ें भी शुरू से ठीक काम करें
मैं ऐसा कुछ बस एक सामान्य PC में लगाना चाहता हूँ, लेकिन जो उत्पाद मिले वे या तो 4-port वाले हैं या बहुत महंगे
जवाब तो आपने खुद ही दे दिया
लोग जिस गहराई और मेहनत से इसमें उतरते हैं, वह हमेशा हैरान करती है
खासकर तब, जब यह गिटार या हार्डवेयर modding जैसी ऐसी चीज़ हो जिसमें गलती करने पर सचमुच पैसे का नुकसान हो सकता है
लगता है कि ऐसे प्रोजेक्ट में सीधे हाथ डालने से पहले soldering iron या woodworking tools का अनुभव कहीं और से लेना चाहिए
यह भी सोचने वाली बात है कि hacking-friendly small box हार्डवेयर या software के लिए इतना बड़ा बाज़ार क्यों नहीं है
अच्छा होता अगर consumer price range में ऐसा NAS मिलता जिसमें OS हटाकर कोई सामान्य OS या kernel डाला जा सके
शायद मैं असली भौतिक चीज़ों में बदलाव करने से ज़रूरत से ज़्यादा डरता हूँ
इसमें 24TB physical disk है, usable capacity 16TB (Raid Z2) है, Ubuntu LTS server edition चल रही है, और ज़रूरी containers को Portainer से Docker पर चलाता हूँ
यह ऐसा आसान click-based GUI नहीं है जिसे कोई भी तुरंत चला ले, और SMB mount जैसी चीज़ें terminal में खुद बनानी पड़ती हैं, लेकिन maintenance के लिए यह काफ़ी आसान है
हार्डवेयर है Asrock Rack C246 WSI Mini ITX motherboard, 32GB ECC RAM, Intel i3-9100T, IronWolf 4TB NAS drive 6, short-depth 2U rackmount chassis, और 1TB Samsung 850 Evo boot drive
idle power 23W है, जो काफ़ी कम है, और load में 65W तक जाता है
disks को 10 मिनट inactivity के बाद spin down कर देता हूँ, फिर भी सालाना load/unload cycles लगभग 10 हज़ार ही बनते हैं, इसलिए rated 6 लाख cycles के मुकाबले ठीक है
आप खुद drives भर सकते हैं और अपनी पसंद का OS डाल सकते हैं
मेरे पास 183TB configuration वाला एक सिस्टम है जो TrueNAS(ZFS) चला रहा है, और वह बहुत अच्छा है
मूल रूप से यह drive slots, backplane, और SAS/SATA ports व controller capacity से भरपूर एक standard x86 box है
used market भी काफ़ी सक्रिय है
हाँ, यह ज़्यादा उन लोगों के लिए है जो एक chassis में 10 से ज़्यादा drives लगाना चाहते हैं, इसलिए इसे consumer-grade कहना थोड़ा मुश्किल है
मैं बार-बार NAS खरीदने का सोचता हूँ, लेकिन proprietary vendor OS नहीं चाहता, जो बेकार या hostile cloud integration की वजह से शायद मेरे data को scan करे
hardcoded password backdoor बचे रहने की संभावना भी पसंद नहीं है
BIOS quality कैसी है पता नहीं, RAM नहीं है लेकिन 32GB तक बढ़ाई जा सकती है, और OS आपको खुद लाना होगा
Intel Alder Lake N100 model $189: https://aoostar.com/products/aoostar-r1-2bay-nas-intel-n100-...
Ryzen 5700 model $299: https://aoostar.com/products/aoostar-r7-2-bay-nas-amd-ryzen-...
कुछ लोग Raspberry Pi को NAS की तरह इस्तेमाल करते हैं, और वह धीमा है लेकिन सस्ते local backup के लिए काम चल जाता है
DNS-320 जैसे पुराने integrated NAS को root करके उस पर security patches पाने वाली अपेक्षाकृत नई Debian-based distro भी चलाई जा सकती है
लेकिन CPU और RAM specs बहुत कम हैं, इसलिए command line की आदत होनी चाहिए
पुराना HP Proliant server (लगभग gen8) लेकर उसमें 16TB hard disk 4 लगाना, और पाँचवीं drive से boot करना भी एक तरीका है
“यह USB header सिर्फ USB 2.0 है, इसलिए इस काम के लिए विकल्प नहीं है” इस हिस्से ने ध्यान खींचा
मैं इस शानदार प्रोजेक्ट पर शक नहीं कर रहा, लेकिन जानना चाहता हूँ कि NAS में OS के लिए USB 2.0 क्यों अनुपयुक्त है
boot के समय पढ़ने और कभी-कभार थोड़ा data लिखने के अलावा, क्या वह और कुछ करता है?
6 महीनों के log files पर journalctl चलाओ, तो journalctl के non-optimal file access pattern की वजह से 1–2 मिनट लग जाते हैं
बेशक, मैं यह नहीं नकारूँगा कि इसे बनाने की असली वजह बस इसमें हाथ लगाकर मज़े करना भी थी
लगता है मैं खराब hacker हूँ
मुझे भी वही समस्या थी कि NAS में external drive जोड़नी थी, तो मैंने बस उसे Velcro से NAS के ऊपर चिपका दिया
घर में बने NAS को रखने के लिए मैंने जो Lego का “custom” case बनाया था, उससे यह कहीं ज़्यादा शानदार दिखता है
मैंने 4 USB hard disk को एक hub में लगाया, और उस hub को Nvidia Jetson से जोड़ दिया
मैं इसे all-in-one बनाना चाहता था, और नकली Lego इतनी सस्ती थी कि आसानी से experiment कर सका
मज़ा तो आया, लेकिन यह उससे कहीं ज़्यादा professional दिखता है, इसलिए थोड़ी जलन हो रही है
कमाल का और elegant
सिर्फ अनुमान, थोड़ा trial and error, circuit continuity check, और load switch IC को काफ़ी casually replace करने वाले तरीके से यहाँ तक पहुँच जाना प्रभावशाली है
फिर भी अंत में सब ठीक से काम कर गया
सच में बहुत शानदार समाधान है
मैं उसी NAS का 5-bay model इस्तेमाल कर रहा हूँ, और internal USB में Samsung USB memory लगाकर TrueNAS Scale install किया है
मैंने वह product चुना जो Tesla dashcam के लिए काफ़ी इस्तेमाल होता है, इसलिए लगा कि कम से कम उसकी durability ठीक होगी
अभी तक संतुष्ट हूँ, लेकिन CPU performance अब भी काफ़ी कम है, इसलिए इसे किसी ज़्यादा ताकतवर चीज़ से upgrade करने का इरादा है
मैंने motherboard को ARM compute module के लिए custom carrier या नए Lattepanda mu से बदलने के बारे में भी सोचा था, लेकिन लगता है पहले इस मेहनत से बने नए प्रोजेक्ट को कुछ समय इस्तेमाल कर लेना चाहिए
बहुत बढ़िया बनाया है, और ऐसे प्रोजेक्ट अच्छे लगते हैं जहाँ लोग अपने हार्डवेयर पर खुद नियंत्रण रखते हैं
इसे खुलकर दस्तावेज़ित किया गया है, यह भी अलग से सराहने लायक है
बस यह सोच रहा हूँ कि कहीं airflow की समस्या तो नहीं होगी
मूल PCB और संशोधित PCB, दोनों के बीच में एक बड़ा छेद है, और मेरा अनुमान है कि उसका मकसद ड्राइव्स के ऊपर हवा बहने देना है
लेकिन NVMe ड्राइव उसे ढक देती है
शायद NVMe के किनारों के आसपास से पर्याप्त हवा निकल जाती होगी, इसलिए सामान्य ड्राइव cooling के लिए यह ठीक होगा, और बोनस में शायद दुनिया का सबसे अच्छी तरह cooled NVMe भी मिल जाए
फिर भी जगह काफ़ी तंग लगती है
मुझे aerodynamics की बहुत गहरी समझ नहीं है, इसलिए पक्का नहीं कह सकता, लेकिन मेरा मानना है कि उस छेद से कुछ न कुछ हवा ज़रूर गुज़रेगी
SSD के screw standoff को PCB के बाएँ किनारे तक खिसकाकर रखने का इरादा भी यही था कि दाईं तरफ़ ज़्यादा हवा जा सके
कम से कम अभी तक मुझे cooling performance में गिरावट महसूस नहीं हुई है
इसका सीधे इस्तेमाल शायद मैं कभी न करूँ, लेकिन फिर भी यह काफ़ी रोमांचक है
किसी को इस तरह गहराई में जाते, सीखते, और जो सीखा है उसे साझा करते देखना वाकई अच्छा और प्रेरक लगता है