- Sau khi cài NixOS lên Terramaster F2-221, SSD USB gắn ngoài trở thành điểm bất tiện, nên tác giả tự chế backplane để lắp SSD khởi động NVMe bên trong
- Backplane F2-221 hiện có chủ yếu xoay quanh SATA và mạch nguồn; qua phân tích ảnh F5-422, tác giả xác nhận cách Terramaster mở rộng các bay bằng 2 bộ điều khiển SATA ASM1061
- Các cặp vi sai PCIe được lần theo bằng ảnh F5-422, datasheet ASM1061 và vị trí tụ ghép, nhưng một số chân không được xác định đến cùng và pinout PCIe2 cũng không được kiểm chứng
- PCB nguyên mẫu nối trực tiếp khe M.2 NVMe vào một lane PCIe x1 Gen 2; BIOS hiển thị
Patriot P300 128GB và ổ cứng cũng hoạt động bình thường
- F3 Backplane bản cuối được đơn giản hóa để dùng trực tiếp rail 3.3V; sau vài tuần khởi động từ NVMe và chạy btrfs scrub không lỗi, dự án KiCad được công bố trên GitHub
Điểm khởi đầu: loại bỏ SSD USB gắn ngoài
- Terramaster F2-221 là NAS x86_64 tiêu chuẩn dựa trên Intel J3355, nên bản thân việc cài NixOS thay cho TOS mặc định khá đơn giản
- Vì cả 2 cổng SATA đều đang dùng cho ổ cứng 4TB, thiết bị lưu trữ hệ điều hành buộc phải là SSD USB gắn ngoài
- Cần chừa chỗ cho SSD gắn ngoài quanh NAS phía sau kệ, và mỗi lần chuyển đồ lại phải để ý dây cáp, nên phát sinh nhu cầu có thiết bị lưu trữ bên trong
- Trên bo mạch chủ có đầu nối USB nội bộ để bootstrap TOS, nhưng vì là USB 2.0 nên không phù hợp làm SSD khởi động
So sánh backplane F2-221 và F5-422
- Trên bo mạch chủ F2-221 có đầu nối dạng PCIe x4 để cắm PCB backplane, nhưng backplane hiện có không có IC chuyển PCIe-SATA
- Các cổng SATA được đi dây trực tiếp tới đầu nối cạnh PCIe, và sơ đồ chân thực tế là pinout không chuẩn, không phải PCIe tiêu chuẩn
- Intel J3355 cung cấp 2 cổng SATA và 6 lane PCIe Gen 2, nên các mẫu 4 bay và 5 bay của Terramaster có khả năng đã dùng lane PCIe để tăng số cổng SATA
- Từ ảnh độ phân giải cao trong bài review Terramaster F5-422, tác giả nhận diện được 2 IC ASMedia ASM1061
- ASM1061 là bộ điều khiển SATA dựa trên PCIe Gen 2 x1, cung cấp 2 cổng SATA
- Trên F5-422, ASM1061 thứ nhất được xác định là nối tới cổng 3 và 4 của backplane, ASM1061 thứ hai nối tới cổng 5
- Ở mặt sau bo mạch chủ F2-221, tác giả cũng xác nhận rằng các chân trông như tín hiệu PCIe trên backplane F5-422 thực sự có được đi dây
Dịch ngược tín hiệu PCIe
- Dựa trên ảnh backplane F5-422 và datasheet ASM1061, tác giả lần theo các đường PCIe, nhưng nhiều cặp vi sai đi qua via vào các lớp bên trong nên khó phân biệt
TX, RX, REFCLK
- Một manh mối có thể xác nhận là một chân của đầu nối PCIe được nối với
PERST# của ASM1061
- Tác giả dùng đặc điểm truyền thống của PCIe là cặp vi sai
TX có tụ ghép để phân biệt hướng tín hiệu
- Cặp vi sai nối với
TX của ASM1061 phải có tụ ghép ở phía backplane
- Nhìn từ góc độ CPU và bo mạch chủ, cặp vi sai đó sẽ là
RX
- Cặp vi sai nối với
RX của ASM1061 được suy đoán dựa trên vị trí tụ ghép phía bo mạch chủ
REFCLK được suy đoán là cặp vi sai còn lại gần TX·RX nhất của mỗi giao tiếp PCIe x1
- Tác giả đưa ảnh backplane F5-422 vào KiCad, lần theo các trace bên ngoài tới via và so sánh khả năng routing ở lớp trong để kiểm chứng sơ bộ pinout PCIe1
- Một số chân không được nối trên backplane F2-221 hiện có, hoặc đi vào lớp trong nên không xác định được mục đích
- Pinout PCIe2 không được kiểm chứng
Tái cấu trúc mạch nguồn
- Một mặt của backplane F2-221 không có IC cho tín hiệu PCIe, nhưng có nhiều mạch nguồn gồm MOSFET, diode, điện trở và tụ điện
- Tác giả kiểm tra linh kiện và trace bằng ảnh cận cảnh rồi dựng lại sơ đồ mạch trong KiCad
- Mạch được hiểu là cấu trúc load switch khởi động chậm cho từng rail nguồn của cổng SATA
- F2-221 có tổng cộng 4 mạch: 2 cổng SATA × 2 rail nguồn
- F5-422 có tổng cộng 10 mạch, tương ứng 5 bay
- P4, một trong các chân ground của đầu nối SATA, bị kéo xuống ground khi ổ cứng được kết nối và được dùng giống như chân enable của load switch
- Cấu trúc này có vẻ nhằm giảm tia lửa giữa đầu nối và ổ khi hot-plug ổ cứng do dòng khởi động ban đầu cao
- Để tránh phải hàn nhiều linh kiện rời, tác giả chọn IC load switch tích hợp có slow starter bên trong onsemi NCP45521-L
Vì sao chọn NVMe thay vì SSD SATA
- Ban đầu tác giả cân nhắc thêm cổng SATA bằng ASM1061 và gắn SSD SATA bên trong vỏ
- Đầu nối M.2 có khoảng trống để đặt giữa các ray cố định backplane; dù rất chật, khoảng hở hai bên dưới 1mm, vẫn có thể lắp được
- Nếu dùng SSD SATA M.2 thì cần bộ điều khiển chuyển PCIe sang SATA
- Có thể dùng cách với ASM1061 như F5-422
- Nhưng khó mua riêng IC ASM1061, nên sẽ phải tháo IC từ một card PCIe có ASM1061
- NVMe tự thân là dựa trên PCIe, nên có thể nối trực tiếp các lane PCIe vào khe M-key M.2 mà không cần bộ điều khiển riêng
- SSD NVMe thường dùng 4 lane PCIe Gen 3 trở lên, nhưng thiết kế này chỉ dùng 1 lane PCIe Gen 2, nên tốc độ được dự kiến là sẽ không nhanh hơn SATA
- Dù vậy, NVMe phù hợp hơn cho mục đích này vì không cần bộ điều khiển, routing đơn giản và có nhiều lựa chọn SSD NVMe hơn
- SSD thực tế được dùng là
Patriot P300 128GB, mua tại địa phương với giá €14.90
- Vì không chắc BIOS có khởi động trực tiếp từ NVMe hay không, tác giả cũng cân nhắc phương án tệ nhất là đặt phân vùng boot trên một USB 2.0 nội bộ
Chế tạo và thử nghiệm PCB nguyên mẫu
- PCB mới phải khớp với kết cấu gắn backplane của vỏ, nên vị trí đầu nối cạnh PCIe và lỗ vít phải chính xác
- Cũng cần cân nhắc kích thước PCB và hạn chế luồng khí, vì vậy nguyên mẫu không chỉ quan trọng để kiểm chứng điện mà còn để xác nhận độ khớp cơ khí
- Tác giả đo PCB hiện có bằng thước và thước cặp, giảm méo ống kính của ảnh chụp chính diện rồi đưa vào KiCad để căn đầu nối, lỗ vít và đường viền
- Trên nguyên mẫu, các chân chưa xác định được đưa ra test point; do phát hiện rail 3.3V muộn, tác giả thêm bộ buck converter để chuyển 5V thành 3.3V
- Tác giả đặt JLCPCB làm PCB 4 lớp và nhận được sau vài tuần
- Đây là lần đầu tác giả hàn gói DFN, linh kiện lại rất nhỏ, nhưng đã kiểm tra ngắn mạch giữa nguồn và ground, đồng thời dùng ảnh cận cảnh từ smartphone để kiểm tra mối hàn
- Khi cắm vào NAS và khởi động,
Patriot P300 128GB xuất hiện trong danh sách tùy chọn boot của BIOS, nên có thể khởi động trực tiếp từ NVMe
- Dù không tìm được đường
CLKREQ từng gây lo ngại, có vẻ nó luôn bị kéo xuống mức thấp ở đâu đó trên bo mạch chủ và REFCLK hoạt động
CLKREQ thường được dùng để SSD yêu cầu clock tham chiếu khi cần
- Trong thiết kế này, ASPM không hoạt động, nhưng vì đây là ổ khởi động của một server luôn bật nên tác giả không xem là vấn đề lớn
- Ổ cứng cũng hoạt động bình thường sau khi kết nối
- Vì nguyên mẫu được tạo để thử nghiệm và debug lại hoạt động bình thường luôn, mục đích của các chân chưa xác định không còn quan trọng nữa
F3 Backplane bản cuối
- Nguyên mẫu hoạt động bình thường, nhưng vẫn còn test point và ngồi hơi lệch trong vỏ, nên tác giả chế tạo lại bản cuối V1.0
- Ở bản cuối, bộ buck converter được loại bỏ và đầu nối M.2 được nối trực tiếp với rail 3.3V của đầu nối PCIe
- Tác giả chỉnh vị trí một chút để giảm độ lệch của nguyên mẫu, loại bỏ test point và thêm logo
- Tên được đặt là F3 Backplane, với ý nghĩa thêm một vào F2
- PCB bản cuối đặt lại từ JLCPCB cũng hoạt động bình thường như nguyên mẫu
- Tác giả chạy btrfs scrub toàn bộ trên các ổ cứng và không phát sinh lỗi
- Hệ thống chạy từ SSD NVMe trong vài tuần mà không hiccup
- Việc hàn đầu nối SATA khó và hơi thô do không thêm thermal relief vào mặt ground bên trong, nhưng vấn đề này đã được sửa trong kho GitHub
Hiệu năng và tài liệu công khai
- Kết quả
hdparm của SSD NVMe như sau
/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
- Tốc độ này không nhanh đối với SSD NVMe, nhưng là kết quả dự kiến vì chỉ dùng 1 lane PCIe Gen 2
- Hiệu năng đủ dùng cho vai trò ổ khởi động
- Dự án KiCad được công bố trên GitHub
1 bình luận
Ý kiến trên Hacker News
Với cách hàn package DFN này thì gần như là một cách làm hoàn toàn điên rồ, nhưng trông có vẻ thú vị
Có thể nó sẽ hoạt động một cách kỳ lạ, nhưng khó mong đợi độ tin cậy nhất quán; có lẽ chỉ đủ cho một dự án dùng một lần
May là pad ở đáy của package DFN chạm tới cả hai mép bên nên mới làm được; tôi nghĩ cách này không dùng được với QFN
Tôi đã làm việc tương tự nhiều lần với chì hàn thông thường; chỉ cần cho hơi dư một chút lên từng pad và tránh tới mức gây chập là được
Bôi flux, nếu có thể thì dùng flux gốc nhựa thông chịu được lâu cả ở bước gia nhiệt tiếp theo, làm nóng toàn bộ footprint bằng máy khò rồi đặt nhẹ IC lên là xong
Như vậy không cần thổi khí nóng vào IC quá lâu chỉ để làm nóng toàn bộ
Nếu luôn đặt vài via trên pad tản nhiệt và để lộ đồng ở mặt đối diện, các via sẽ không bị solder mask che và sẽ hút phần chì hàn dư
Với các công việc SMD ngân sách cực thấp, cũng có thể làm nóng pad tản nhiệt từ mặt đối diện bằng mỏ hàn
Ấn chip xuống cũng được, nhưng phải cẩn thận căn thẳng với các pad
Tôi hầu như chưa từng thấy cầu hàn, ngoại trừ các giọt chì lớn ở mép ngoài trên QFN
Hợp kim hàn và solder mask ngày nay ngăn cầu hàn khá tốt, và chì hàn có xu hướng bám vào kim loại hơn là nằm giữa thân package và solder mask
Mong có thêm nhiều tiêu chuẩn hóa cho các bản dựng NAS tiêu dùng
Tôi đã hỏi ASUSTOR suốt mấy năm nay xem họ có định làm backplane hoặc adapter tương thích Mini ITX không
Sẽ thật tốt nếu vài năm sau chỉ cần thay backplane, hoặc có thể lắp SBC dạng Pico ITX vào
Tôi không thích việc sau 5 hay 10 năm thì rất khó nâng cấp NAS cho đúng nghĩa
Nếu chỉ cần thay bo mạch chủ, nhiều NAS 1Gbps có thể được nâng lên 2.5Gbps hoặc 10Gbps, và chassis có thể dùng lâu hơn thay vì bị đưa ra bãi rác
Việc chỉ phần tính toán bị lỗi thời mà phải bỏ cả chassis NAS và backplane là quá lãng phí
Cũng có thể có synergy với bo mạch chủ Laptop 13, cùng TDP cấp laptop và cả khả năng ARM
Tuy nhiên thị trường thiết bị NAS appliance có vẻ không lớn, chỉ ở mức “prosumer” và doanh nghiệp nhỏ; điểm khác biệt nằm ở phần mềm hơn là phần cứng
Người ta mua Synology không phải vì phần cứng mà vì DSM
Tôi nhớ đã đọc ở đâu đó rằng Framework không có kế hoạch tích hợp dọc, nên hơi tiếc
Sẽ rất tốt nếu có một OS hỗ trợ Framework mà những thứ như tiết kiệm điện hay cảm giác touchpad đều hoạt động tốt ngay lập tức
Tôi muốn chỉ việc cắm thứ như vậy vào PC thông thường, nhưng các sản phẩm tìm được hoặc chỉ có 4 cổng, hoặc quá đắt
Câu trả lời thì chính bạn đã nói rồi
Luôn thấy khâm phục trước mức độ đào sâu và công sức mà mọi người sẵn sàng bỏ ra
Đặc biệt là với những việc như độ guitar hay phần cứng, hỏng là mất tiền thật
Có lẽ trước khi lao ngay vào những dự án kiểu này, nên tích lũy kinh nghiệm với mỏ hàn hay dụng cụ mộc ở chỗ khác
Cũng tò mò vì sao thị trường những chiếc hộp nhỏ thân thiện với hacking để có thể can thiệp phần cứng hoặc phần mềm dễ hơn lại không lớn
Giá mà có một NAS tầm giá người dùng phổ thông, có thể gỡ hệ điều hành đi và thay bằng OS hoặc kernel thông thường
Có lẽ chỉ là mình quá sợ việc sửa đổi các vật thể vật lý thật
Có 24TB đĩa vật lý, dung lượng dùng được 16TB (Raid Z2), chạy Ubuntu LTS bản server, các container cần thiết thì chạy trên Docker qua Portainer
Không phải GUI bấm chuột dễ dùng cho mọi người, những thứ như mount SMB phải tự tạo trong terminal, nhưng để bảo trì thì đủ dễ
Phần cứng gồm mainboard Asrock Rack C246 WSI Mini ITX, 32GB ECC RAM, Intel i3-9100T, 6 ổ IronWolf 4TB NAS, chassis rackmount 2U chiều sâu ngắn, và ổ boot 1TB Samsung 850 Evo
Điện năng khi idle là 23W, đủ thấp, khi tải lên đến 65W
Đĩa được cho spin down sau 10 phút không hoạt động, vậy mà số chu kỳ load/unload hằng năm chỉ khoảng 10 nghìn lần, vẫn ổn so với định mức 600 nghìn lần
Có thể tự lắp ổ và cài OS mình muốn
Tôi có một máy cấu hình 183TB chạy TrueNAS (ZFS), dùng rất tốt
Về cơ bản đó là một hộp x86 tiêu chuẩn với nhiều khe ổ, backplane, cổng SAS/SATA và dung lượng controller
Thị trường đồ cũ cũng khá sôi động
Tuy nhiên vì nhắm tới những người muốn nhét hơn 10 ổ vào một chassis, nên gọi là hàng tiêu dùng thì hơi khó
Tôi cứ nghĩ mãi chuyện mua một NAS, nhưng không muốn dùng OS độc quyền của nhà cung cấp có thể quét dữ liệu của mình vì tích hợp cloud vô dụng hoặc mang tính đối nghịch
Cũng không thích khả năng còn sót lại backdoor mật khẩu hard-code
Không rõ chất lượng BIOS, không có RAM nhưng có thể nâng lên 32GB, còn OS thì tự mang đến
Mẫu Intel Alder Lake N100 giá $189: https://aoostar.com/products/aoostar-r1-2bay-nas-intel-n100-...
Mẫu Ryzen 5700 giá $299: https://aoostar.com/products/aoostar-r7-2-bay-nas-amd-ryzen-...
Cũng có người dùng Raspberry Pi làm NAS, tuy chậm nhưng dùng làm backup cục bộ rẻ tiền thì vẫn được
Các NAS tích hợp cũ như DNS-320 cũng có thể root để chạy một bản Debian tương đối gần đây vẫn còn có bản vá bảo mật
Nhưng CPU và RAM rất yếu nên phải quen với dòng lệnh
Cũng có thể mua một server HP Proliant cũ (cỡ gen8), cắm 4 ổ cứng 16TB và boot từ ổ thứ 5
Tò mò về đoạn “header USB này chỉ là USB 2.0 nên không phải lựa chọn cho mục đích này”
Không phải nghi ngờ dự án tuyệt vời này, nhưng muốn biết vì sao USB 2.0 lại không phù hợp để chứa OS trong NAS
Ngoài việc đọc lúc boot và thỉnh thoảng ghi chút dữ liệu thì nó còn làm gì nữa không?
Khi thao tác journalctl trên log file 6 tháng, do kiểu truy cập file không tối ưu của journalctl nên mất 1–2 phút
Tất nhiên tôi không phủ nhận lý do thật sự làm cái này chỉ là vì mày mò cho vui
Có vẻ là hacker tệ rồi
Tôi cũng gặp vấn đề tương tự là phải cắm ổ ngoài vào NAS, và chỉ dùng Velcro dán nó lên nóc NAS
Trông ngầu hơn nhiều so với cái case “custom” bằng Lego mà tôi làm để nhét NAS tự chế ở nhà
Tôi cắm 4 ổ cứng USB vào hub, rồi nối hub đó với Nvidia Jetson
Muốn làm thành một khối liền, mà Lego nhái thì quá rẻ nên có thể thử nghiệm dễ dàng
Cũng vui, nhưng cái này trông chuyên nghiệp hơn nhiều nên hơi ghen tị
Đáng kinh ngạc và tao nhã
Thật ấn tượng khi đi được đến đây chỉ bằng suy đoán, một chút thử-sai, kiểm tra thông mạch, và cách thay thế khá nhẹ nhàng cho IC load switch
Nhưng cuối cùng mọi thứ đã chạy tốt
Một giải pháp thật sự tuyệt vời
Tôi đang dùng mẫu 5-bay của cùng NAS này, cắm một USB Samsung vào cổng USB bên trong để cài TrueNAS Scale
Tôi chọn loại được dùng rộng rãi cho camera hành trình Tesla, nên nghĩ ít nhất nó cũng có độ bền nhất định
Đến giờ thì hài lòng, nhưng hiệu năng CPU vẫn thiếu rất nhiều nên đang định nâng cấp lên loại mạnh hơn
Tôi cũng từng nghĩ tới việc thay mainboard bằng carrier custom cho ARM compute module hoặc Lattepanda mu mới, nhưng có lẽ trước hết nên dùng dự án mới đã bỏ công làm này đã
Làm rất tốt, và tôi thích những dự án kiểu này, nơi mọi người tự mình kiểm soát phần cứng của họ
Việc công khai tài liệu hóa cũng đáng được khen thêm lần nữa
Tuy vậy tôi vẫn tò mò liệu có phát sinh vấn đề về luồng khí hay không
Trên PCB gốc và PCB đã chỉnh sửa có một lỗ lớn ở giữa, tôi đoán là để luồng khí đi qua phía trên các ổ đĩa
Nhưng ổ NVMe lại che mất phần đó
Có lẽ vẫn đủ khí lọt qua quanh mép NVMe để làm mát các ổ thông thường, và biết đâu còn được thêm chiếc NVMe được làm mát tốt nhất thế giới
Dù vậy không gian trông vẫn rất chật
Tôi không rành khí động học nên không thể chắc chắn, nhưng tôi nghĩ vẫn sẽ có một lượng khí nhất định đi qua các lỗ
Việc đẩy các standoff bắt vít cho SSD sát về mép trái của PCB cũng là để khí đi qua bên phải nhiều hơn
Ít nhất cho đến giờ tôi chưa cảm thấy hiệu năng làm mát bị kém đi
Tôi không có việc gì trực tiếp để dùng đến, nhưng vẫn thấy hào hứng
Thật tuyệt và truyền cảm hứng khi thấy ai đó đào sâu đến vậy, học hỏi, rồi chia sẻ những gì mình đã học