- Terramaster F2-221에 NixOS를 올린 뒤 외장 USB SSD가 걸림돌이 되자, 내부에 NVMe 부팅 SSD를 넣기 위한 백플레인을 직접 제작함
- 기존 F2-221 백플레인은 SATA와 전원 회로 중심이었고, F5-422 사진 분석으로 Terramaster가 ASM1061 SATA 컨트롤러 2개로 베이를 확장한 방식을 확인함
- PCIe 차동쌍은 F5-422 사진, ASM1061 데이터시트, 커플링 커패시터 위치를 맞춰 추적했지만 일부 핀은 끝까지 확인되지 않았고 PCIe2 핀아웃도 검증하지 않음
- 프로토타입 PCB는 M.2 NVMe 슬롯을 PCIe x1 Gen 2 라인에 직접 연결했으며, BIOS에
Patriot P300 128GB가 표시되고 하드디스크도 정상 동작함
- 최종 F3 Backplane은 3.3V 레일을 직접 쓰도록 단순화됐고, 몇 주간 NVMe 부팅과 btrfs scrub에서 오류 없이 동작해 KiCad 프로젝트가 GitHub에 공개됨
외장 USB SSD를 없애려는 출발점
- Terramaster F2-221은 Intel J3355 기반의 표준 x86_64 NAS라서, 기본 TOS 대신 NixOS를 설치하는 일 자체는 단순했음
- SATA 커넥터 2개가 모두 4TB 하드디스크에 쓰이고 있어 운영체제 저장장치로는 외장 USB SSD를 연결해야 했음
- 선반 뒤 NAS 주변에 외장 SSD 공간을 확보하고, 물건을 옮길 때마다 케이블을 신경 써야 해 내부 저장장치가 필요해짐
- 메인보드에는 TOS 부트스트랩용 내부 USB 커넥터가 있었지만 USB 2.0이라 부팅 SSD 용도로는 부적합했음
F2-221과 F5-422 백플레인 비교
- F2-221 메인보드에는 백플레인 PCB가 꽂히는 PCIe x4 형태의 커넥터가 있었지만, 기존 백플레인에는 PCIe-SATA 변환 IC가 없었음
- SATA 커넥터는 PCIe 엣지 커넥터에 직접 배선되어 있었고, 실제 핀 배치는 표준 PCIe가 아닌 비표준 핀아웃이었음
- Intel J3355는 SATA 포트 2개와 PCIe Gen 2 레인 6개를 제공하므로, Terramaster의 4베이·5베이 모델은 PCIe 레인으로 SATA 포트를 늘렸을 가능성이 있었음
- Terramaster F5-422 리뷰의 고해상도 사진에서 ASMedia ASM1061 IC 2개를 식별함
- ASM1061은 PCIe Gen 2 x1 기반 SATA 컨트롤러이며 SATA 포트 2개를 제공함
- F5-422에서는 첫 번째 ASM1061이 백플레인의 3·4번 포트에, 두 번째 ASM1061이 5번 포트에 연결된 것으로 파악함
- F2-221 메인보드 뒷면에서도 F5-422 백플레인에서 PCIe 신호로 보이는 핀들이 실제로 배선되어 있음을 확인함
PCIe 신호 역공학
- F5-422 백플레인 사진과 ASM1061 데이터시트를 바탕으로 PCIe 라인을 추적했지만, 여러 차동쌍이 비아를 거쳐 내부 레이어로 들어가
TX, RX, REFCLK 구분이 쉽지 않았음
- 확인 가능한 단서 중 하나는 PCIe 커넥터의 한 핀이 ASM1061의
PERST#에 연결되어 있다는 점이었음
- PCIe에서 전통적으로
TX 차동쌍에 커플링 커패시터가 들어간다는 점을 이용해 신호 방향을 구분함
- ASM1061의
TX에 연결된 차동쌍은 백플레인 쪽에 커플링 커패시터가 있어야 함
- CPU와 메인보드 관점에서는 해당 차동쌍이
RX가 됨
- ASM1061의
RX에 연결되는 차동쌍은 메인보드 쪽 커플링 커패시터 위치로 추정함
REFCLK는 각 PCIe x1 인터페이스의 TX·RX에 가장 가까운 남은 차동쌍으로 추정함
- KiCad에 F5-422 백플레인 사진을 불러와 외부 트레이스를 비아까지 따라가고 내부 레이어 라우팅 가능성을 비교하면서 PCIe1 핀아웃을 대략 검증함
- 일부 핀은 기존 F2-221 백플레인에서 연결되지 않았거나 내부 레이어로 들어가 목적을 확인하지 못함
- PCIe2 핀아웃은 검증하지 않았음
전원 회로 재구성
- F2-221 백플레인의 한쪽 면에는 PCIe 신호용 IC가 없었지만 MOSFET, 다이오드, 저항, 커패시터 중심의 전원 회로가 많았음
- 클로즈업 사진으로 부품과 트레이스를 확인하고 KiCad에서 회로도를 다시 만듦
- 회로는 SATA 포트의 각 전원 레일마다 하나씩 있는 슬로 스타트 로드 스위치 구조로 파악함
- F2-221에는 SATA 포트 2개 × 전원 레일 2개로 총 4개가 있음
- F5-422에는 5베이에 맞춰 총 10개가 있음
- SATA 커넥터의 접지 핀 중 하나인 P4가 하드디스크 연결 시 접지로 당겨지며, 로드 스위치의 enable 핀처럼 쓰이는 구조였음
- 이 구조는 하드디스크 핫플러그 시 높은 초기 돌입 전류 때문에 커넥터와 드라이브 사이에 스파크가 생기는 것을 줄이기 위한 것으로 보임
- 많은 개별 부품을 납땜하지 않기 위해, 내장 슬로 스타터가 있는 통합 로드 스위치 IC onsemi NCP45521-L을 선택함
SATA SSD 대신 NVMe를 선택한 이유
- 처음에는 ASM1061로 SATA 포트를 추가하고 SATA SSD를 케이스 안에 붙이는 방안을 고려함
- M.2 커넥터는 백플레인 고정 레일 사이에 들어갈 공간이 있었고, 양쪽 여유가 1mm 미만일 정도로 좁았지만 장착은 가능했음
- SATA M.2 SSD를 쓰려면 PCIe를 SATA로 바꾸는 컨트롤러가 필요했음
- F5-422처럼 ASM1061을 쓰는 방식이 가능함
- 하지만 ASM1061 IC를 단품으로 사기 어려워, ASM1061이 들어간 PCIe 카드에서 IC를 떼어내야 했음
- NVMe는 자체가 PCIe 기반이라 별도 컨트롤러 없이 PCIe 라인을 M-key M.2 슬롯에 직접 연결할 수 있음
- NVMe SSD는 보통 PCIe Gen 3 이상 4레인을 쓰지만, 이 설계에서는 PCIe Gen 2 1레인만 사용하므로 속도는 SATA보다 빠르지 않을 것으로 예상함
- 그래도 컨트롤러가 필요 없고 라우팅이 단순하며, NVMe SSD 선택지가 더 많아 이 용도에는 NVMe가 더 적합했음
- 실제 SSD로는
Patriot P300 128GB를 현지에서 €14.90에 구입함
- BIOS가 NVMe에서 직접 부팅할지 불확실해, 최악의 경우 내부 USB 2.0 스틱에 부트 파티션을 두는 방안도 고려함
프로토타입 PCB 제작과 테스트
- 새 PCB는 케이스의 백플레인 장착 구조에 맞아야 했기 때문에 PCIe 엣지 커넥터와 나사 구멍 위치가 정확해야 했음
- PCB 크기와 공기 흐름 제한도 고려해야 해서, 프로토타입은 전기적 검증뿐 아니라 기계적 맞춤 확인에도 중요했음
- 기존 PCB를 자와 캘리퍼스로 측정하고, 정면 사진의 렌즈 왜곡을 줄인 뒤 KiCad에 불러와 커넥터·나사 구멍·외곽선을 맞춤
- 프로토타입에는 미확인 핀을 테스트 포인트로 빼두었고, 3.3V 레일을 늦게 발견해 5V를 3.3V로 바꾸는 벅 컨버터를 넣음
- JLCPCB에 4레이어 PCB를 주문해 몇 주 뒤 수령함
- DFN 패키지 납땜은 처음이었고 부품이 매우 작았지만, 전원과 접지 사이 단락을 확인하고 스마트폰 클로즈업으로 납땜 상태를 점검함
- NAS에 꽂아 부팅하자 BIOS 부팅 옵션 목록에
Patriot P300 128GB가 표시되어 NVMe에서 직접 부팅할 수 있었음
- 우려했던
CLKREQ 라인은 찾지 못했지만, 메인보드 어딘가에서 항상 낮게 당겨져 있는 것으로 보였고 REFCLK가 동작함
CLKREQ는 보통 SSD가 필요할 때 참조 클럭을 요청하는 데 사용됨
- 이 설계에서는 ASPM이 동작하지 않지만, 항상 켜져 있는 서버의 부팅 드라이브라 큰 문제로 보지 않음
- 하드디스크도 연결 후 정상 동작함
- 테스트와 디버깅을 위해 만든 프로토타입이 그대로 정상 작동하면서, 미확인 핀의 목적은 더 이상 중요하지 않게 됨
최종판 F3 Backplane
- 프로토타입은 정상 동작했지만 테스트 포인트가 남아 있고 케이스 안에서 약간 비뚤게 앉아, 최종판 V1.0을 다시 제작함
- 최종판에서는 벅 컨버터를 제거하고 M.2 커넥터를 PCIe 커넥터의 3.3V 레일에 직접 연결함
- 위치를 약간 조정해 프로토타입의 비뚤어짐을 줄이고, 테스트 포인트를 제거하고 로고를 추가함
- 이름은 F2에 하나를 더했다는 뜻으로 F3 Backplane으로 정함
- JLCPCB에 다시 주문해 수령한 최종 PCB도 프로토타입처럼 정상 동작함
- 하드디스크 대상으로 전체 btrfs scrub을 실행했으며 오류는 발생하지 않음
- 몇 주 동안 NVMe SSD에서 시스템을 실행했지만 hiccup 없이 동작함
- SATA 커넥터 납땜은 내부 접지면에 thermal relief를 추가하지 않아 어려웠고 거칠게 되었지만, 이 문제는 GitHub 저장소에서 수정됨
성능과 공개 자료
- NVMe SSD의
hdparm 결과는 다음과 같음
/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치고 빠른 속도는 아니지만, PCIe Gen 2 1레인만 사용하므로 예상된 결과임
- 부팅 드라이브 용도로는 충분한 성능임
- KiCad 프로젝트는 GitHub에 공개되어 있음