- Depois de instalar o NixOS no Terramaster F2-221, um SSD USB externo virou um obstáculo, então foi criado manualmente um backplane para colocar um SSD de boot NVMe dentro do aparelho
- O backplane original do F2-221 era centrado em SATA e circuito de alimentação, e a análise de fotos do F5-422 mostrou como a Terramaster expandiu as baias com 2 controladores SATA ASM1061
- Os pares diferenciais PCIe foram rastreados com base nas fotos do F5-422, no datasheet do ASM1061 e na posição dos capacitores de acoplamento, mas alguns pinos não foram confirmados até o fim e o pinout do PCIe2 também não foi validado
- A PCB protótipo conectou diretamente um slot M.2 NVMe a uma linha PCIe x1 Gen 2, e o BIOS mostrou
Patriot P300 128GB enquanto os discos rígidos também funcionaram normalmente
- O backplane final F3 foi simplificado para usar diretamente o trilho de 3,3 V, funcionou por algumas semanas sem erros em boot NVMe e
btrfs scrub, e o projeto no KiCad foi publicado no GitHub
O ponto de partida: eliminar o SSD USB externo
- O Terramaster F2-221 é um NAS x86_64 padrão baseado em Intel J3355, então instalar NixOS no lugar do TOS original em si foi simples
- Os dois conectores SATA já estavam sendo usados por discos rígidos de 4 TB, então foi preciso ligar um SSD USB externo como dispositivo de armazenamento do sistema operacional
- Foi necessário garantir espaço para o SSD externo ao redor do NAS atrás da prateleira, e sempre que as coisas eram movidas era preciso tomar cuidado com o cabo, o que levou à necessidade de um armazenamento interno
- Havia um conector USB interno na placa-mãe para o bootstrap do TOS, mas por ser USB 2.0 ele não era adequado para um SSD de boot
Comparação entre os backplanes do F2-221 e do F5-422
- A placa-mãe do F2-221 tinha um conector em formato PCIe x4 onde a PCB do backplane se encaixava, mas o backplane original não tinha nenhum CI de conversão PCIe-SATA
- Os conectores SATA eram ligados diretamente ao conector edge PCIe, e o mapeamento real de pinos não seguia o padrão PCIe, sendo um pinout fora do padrão
- O Intel J3355 oferece 2 portas SATA e 6 linhas PCIe Gen 2, então era possível que os modelos de 4 e 5 baias da Terramaster aumentassem o número de portas SATA usando linhas PCIe
- Em fotos de alta resolução do review do Terramaster F5-422, foram identificados 2 CIs ASMedia ASM1061
- O ASM1061 é um controlador SATA baseado em PCIe Gen 2 x1 e oferece 2 portas SATA
- No F5-422, foi entendido que o primeiro ASM1061 está ligado às portas 3 e 4 do backplane, e o segundo ASM1061 à porta 5
- Também foi confirmado no lado traseiro da placa-mãe do F2-221 que os pinos que pareciam sinais PCIe no backplane do F5-422 realmente estavam conectados
Engenharia reversa dos sinais PCIe
- Com base nas fotos do backplane do F5-422 e no datasheet do ASM1061, as linhas PCIe foram rastreadas, mas vários pares diferenciais entravam em camadas internas por vias, o que dificultava distinguir
TX, RX e REFCLK
- Uma das pistas verificáveis era que um dos pinos do conector PCIe estava ligado ao
PERST# do ASM1061
- A direção dos sinais foi diferenciada usando o fato de que, em PCIe, tradicionalmente há capacitores de acoplamento no par diferencial de
TX
- O par diferencial ligado ao
TX do ASM1061 deveria ter capacitores de acoplamento do lado do backplane
- Do ponto de vista da CPU e da placa-mãe, esse par diferencial se torna
RX
- O par diferencial ligado ao
RX do ASM1061 foi estimado pela posição dos capacitores de acoplamento do lado da placa-mãe
- O
REFCLK foi estimado como o par diferencial restante mais próximo de TX e RX em cada interface PCIe x1
- A foto do backplane do F5-422 foi importada para o KiCad, e o pinout do PCIe1 foi validado aproximadamente acompanhando os rastros externos até as vias e comparando possibilidades de roteamento nas camadas internas
- Alguns pinos não estavam conectados no backplane original do F2-221 ou seguiam para camadas internas, o que impediu confirmar sua finalidade
- O pinout do PCIe2 não foi validado
Reconfiguração do circuito de alimentação
- Em um dos lados do backplane do F2-221 não havia CI para sinais PCIe, mas havia muitos circuitos de alimentação centrados em MOSFETs, diodos, resistores e capacitores
- Os componentes e rastros foram verificados com fotos em close, e o esquemático foi redesenhado no KiCad
- O circuito foi entendido como uma estrutura de load switch com partida suave para cada trilho de alimentação das portas SATA
- No F2-221, há 2 portas SATA × 2 trilhos de alimentação, totalizando 4
- No F5-422, há 10 ao todo para atender às 5 baias
- O P4, um dos pinos de terra do conector SATA, era puxado para terra quando o disco rígido era conectado, funcionando como um pino de enable do load switch
- Essa estrutura parece existir para reduzir faíscas entre o conector e o drive durante hot-plug de HDDs, por causa da alta corrente de partida inicial
- Para evitar soldar muitos componentes discretos, foi escolhido o CI de load switch integrado com soft-start embutido onsemi NCP45521-L
Por que escolher NVMe em vez de SATA SSD
- No início, foi considerada a opção de adicionar portas SATA com o ASM1061 e fixar um SSD SATA dentro do gabinete
- Havia espaço para um conector M.2 entre os trilhos de fixação do backplane, e embora a folga fosse mínima, com menos de 1 mm de cada lado, a instalação era possível
- Para usar um SSD M.2 SATA, seria necessário um controlador para converter PCIe em SATA
- Seria possível usar o ASM1061 como no F5-422
- Mas era difícil comprar o CI ASM1061 avulso, então seria preciso remover o CI de uma placa PCIe com ASM1061
- Como o NVMe já é baseado em PCIe, foi possível ligar as linhas PCIe diretamente a um slot M-key M.2 sem controlador adicional
- SSDs NVMe normalmente usam 4 linhas PCIe Gen 3 ou superior, mas neste projeto foi usada apenas 1 linha PCIe Gen 2, então a velocidade não seria maior que a do SATA
- Ainda assim, como não exigia controlador, o roteamento era mais simples e havia mais opções de SSD NVMe, o NVMe foi mais adequado para esse uso
- O SSD efetivamente usado foi um
Patriot P300 128GB, comprado localmente por €14,90
- Como não era certo se o BIOS faria boot direto do NVMe, também foi considerada, no pior caso, a alternativa de colocar a partição de boot em um pendrive USB 2.0 interno
Fabricação e teste da PCB protótipo
- Como a nova PCB precisava se encaixar na estrutura de montagem do backplane do gabinete, a posição do conector edge PCIe e dos furos de parafuso precisava estar exata
- Também era preciso considerar o tamanho da PCB e a restrição de fluxo de ar, então o protótipo foi importante não só para validação elétrica, mas também para verificar o encaixe mecânico
- A PCB original foi medida com régua e paquímetro, e depois de reduzir a distorção da lente em uma foto frontal ela foi importada para o KiCad para alinhar conectores, furos e contorno
- No protótipo, pinos não identificados foram levados para test points, e como o trilho de 3,3 V foi descoberto tardiamente, foi incluído um buck converter para reduzir 5 V para 3,3 V
- Uma PCB de 4 camadas foi encomendada à JLCPCB e recebida algumas semanas depois
- Era a primeira vez soldando encapsulamento DFN, e os componentes eram muito pequenos, mas foi verificado se havia curto entre alimentação e terra e o estado da solda foi inspecionado com close da câmera do celular
- Ao ligar o NAS, o
Patriot P300 128GB apareceu na lista de opções de boot do BIOS, mostrando que era possível dar boot diretamente pelo NVMe
- A linha
CLKREQ, que preocupava, não foi encontrada, mas parecia estar sempre forçada em nível baixo em algum lugar da placa-mãe, e o REFCLK funcionava
- O
CLKREQ normalmente é usado para o SSD solicitar o clock de referência quando necessário
- Neste projeto o ASPM não funciona, mas como se trata do drive de boot de um servidor sempre ligado, isso não pareceu ser um grande problema
- Os discos rígidos também funcionaram normalmente depois de conectados
- Como o protótipo feito para testes e depuração acabou funcionando normalmente, a finalidade dos pinos não confirmados deixou de ser importante
Versão final: F3 Backplane
- O protótipo funcionou normalmente, mas ainda tinha test points e ficava um pouco torto dentro do gabinete, então a versão final V1.0 foi refeita
- Na versão final, o buck converter foi removido e o conector M.2 foi ligado diretamente ao trilho de 3,3 V do conector PCIe
- A posição foi ajustada levemente para reduzir a inclinação do protótipo, os test points foram removidos e um logo foi adicionado
- O nome foi definido como F3 Backplane, no sentido de ser um F2 com mais um
- A PCB final, encomendada novamente à JLCPCB, também funcionou normalmente como o protótipo
- Foi executado um scrub completo do btrfs nos discos rígidos e nenhum erro ocorreu
- O sistema rodou por algumas semanas a partir do SSD NVMe sem qualquer hiccup
- A solda dos conectores SATA foi difícil e ficou grosseira porque não foi adicionado thermal relief ao plano de terra interno, mas esse problema foi corrigido no repositório do GitHub
Desempenho e material publicado
- O resultado do
hdparm para o SSD NVMe foi o seguinte
/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
- Não é uma velocidade alta para um SSD NVMe, mas era esperado, já que só está sendo usada 1 linha PCIe Gen 2
- Para uso como drive de boot, o desempenho é suficiente
- O projeto no KiCad foi publicado no GitHub
1 comentários
Comentários do Hacker News
Soldar encapsulamentos DFN desse jeito chega perto de ser uma forma totalmente insana de fazer isso, mas parece divertido
Pode funcionar de um jeito meio estranho, mas é difícil esperar confiabilidade consistente, então parece suficiente só para um projeto pontual
Felizmente, o pad inferior do encapsulamento DFN alcança até as bordas dos dois lados, então isso foi possível, e não acho que esse método funcionaria com QFN
Já fiz várias vezes algo parecido com solda comum: basta colocar uma quantidade um pouco generosa em cada pad, sem chegar ao ponto de causar curto
Aplique fluxo, de preferência um fluxo à base de breu que aguente bem a próxima etapa de aquecimento, aqueça toda a footprint com soprador térmico e então apenas encoste o CI levemente no lugar
Assim, não é preciso jogar ar quente por muito tempo diretamente no CI só para aquecer tudo
Sempre coloco alguns vias no pad térmico e deixo o cobre exposto no lado oposto, para que, sem máscara de solda bloqueando os vias, eles puxem o excesso de solda
Em trabalhos SMD de orçamento bem baixo, também dá para aquecer o pad térmico pelo outro lado com um ferro de solda
Não tem problema pressionar o chip, mas é preciso tomar cuidado com o alinhamento em relação aos pads
Quase nunca vi ponte de solda em QFN, exceto por gotas grandes de solda surgindo na borda externa
Hoje em dia, ligas de solda e máscara de solda já evitam pontes muito bem, e a solda tende bem mais a aderir só ao metal do que a ficar entre o corpo do encapsulamento e a máscara de solda
Eu gostaria que houvesse mais padronização em builds de NAS para consumidor
Perguntei à ASUSTOR se eles não pensam, há anos, em fazer um backplane ou adaptador compatível com Mini ITX
Seria ótimo poder trocar só o backplane alguns anos depois, ou colocar uma SBC em algum formato como Pico ITX
Não gosto da ideia de que, depois de 5 ou 10 anos, fica difícil fazer um upgrade decente no NAS
Se desse para trocar só a placa-mãe, muitos NAS de 1 Gbps poderiam ser atualizados para 2,5 Gbps ou 10 Gbps, e o chassi poderia continuar em uso por mais tempo em vez de ir para o aterro
É um desperdício grande demais descartar até o chassi e o backplane do NAS quando só a parte de processamento ficou obsoleta
Também poderia haver sinergia com a placa-mãe do Laptop 13, além da possibilidade de ARM com TDP de notebook
Ainda assim, o mercado de appliances NAS não parece tão grande, mais voltado a “prosumers” e pequenos negócios, e a diferenciação está mais no software do que no hardware
As pessoas compram Synology não pelo hardware, mas pelo DSM
Acho uma pena, porque me parece que li em algum lugar que a Framework não pretende fazer integração vertical
Seria bom ter um sistema operacional com suporte a Framework em que coisas como economia de energia e até a sensação do touchpad já funcionassem bem de cara
Eu só queria poder encaixar algo assim em um PC comum, mas os produtos que encontrei ou têm 4 portas ou são caros demais
Você já deu a resposta por conta própria
Sempre me impressionam a profundidade e o esforço que as pessoas estão dispostas a investir
Ainda mais em trabalhos como modificar guitarras ou hardware, em que um erro significa perder dinheiro de verdade
Acho que eu precisaria ganhar experiência com ferro de solda ou ferramentas de marcenaria em outras coisas antes de mexer direto num projeto desses
Também fico curioso por que o mercado de caixinhas pequenas amigáveis para hacking não é maior, para hardware ou software mais fáceis de fuçar
Seria ótimo ter um NAS em faixa de preço de consumidor no qual desse para remover o sistema operacional e trocar por um OS ou kernel comum
Talvez eu só tenha medo demais de modificar objetos físicos de verdade
São 24 TB de disco físico, com 16 TB utilizáveis (Raid Z2), rodando Ubuntu LTS Server, e os contêineres de que preciso sobem no Docker via Portainer
Não é uma GUI de clique fácil para qualquer um, e coisas como montar SMB precisam ser feitas no terminal, mas é fácil o bastante de manter
O hardware é uma placa-mãe Asrock Rack C246 WSI Mini ITX, 32 GB de RAM ECC, Intel i3-9100T, 6 discos IronWolf 4 TB NAS, um chassi rackmount 2U de pouca profundidade e um drive de boot Samsung 850 Evo de 1 TB
O consumo em idle é de 23 W, então é bem baixo, e sob carga chega a 65 W
Os discos entram em spin-down depois de 10 minutos de inatividade, e mesmo assim ficam em cerca de 10 mil ciclos de load/unload por ano, o que é tranquilo perto da classificação de 600 mil
Você mesmo pode preencher com os drives e instalar o sistema operacional que quiser
Tenho um equipamento com 183 TB rodando TrueNAS (ZFS) e ele é excelente
Basicamente é uma caixa x86 padrão com muitos slots de drive, backplane e capacidade de portas/controladores SAS/SATA
O mercado de usados também é bem ativo
Só que é mais voltado para quem quer colocar mais de 10 drives em um único chassi, então é difícil chamar de produto de consumidor
Vivo pensando em comprar um NAS, mas não quero usar um sistema operacional proprietário de fabricante com integração inútil ou hostil com a nuvem, que talvez escaneie meus dados
Também não gosto da possibilidade de existir algum backdoor com senha hardcoded
Não sei como é a qualidade da BIOS, não vem com RAM, mas aceita expansão até 32 GB, e o OS é por sua conta
O modelo Intel Alder Lake N100 custa $189: https://aoostar.com/products/aoostar-r1-2bay-nas-intel-n100-...
O modelo Ryzen 5700 custa $299: https://aoostar.com/products/aoostar-r7-2-bay-nas-amd-ryzen-...
Tem gente que usa Raspberry Pi como NAS, e embora seja lento, funciona para backup local barato
Também dá para fazer root em um NAS integrado antigo, como o DNS-320, e rodar uma distribuição da família Debian relativamente recente, que ainda recebe patches de segurança
Mas as especificações de CPU e RAM são muito baixas, então é preciso estar à vontade com a linha de comando
Outra opção é comprar um servidor HP Proliant antigo (tipo gen8), colocar 4 HDs de 16 TB e inicializar pelo quinto drive
Fiquei curioso com a parte “esse header USB é só USB 2.0, então não é uma opção para esse objetivo”
Não é para duvidar do excelente projeto, mas queria entender por que USB 2.0 seria inadequado para o SO em um NAS
Ele faz mais alguma coisa além de ler no boot e escrever um pouco de dados de vez em quando?
Quando rodo alguma operação do journalctl sobre 6 meses de arquivos de log, leva 1 ou 2 minutos por causa do padrão de acesso a arquivos nada otimizado do journalctl
Claro, também não vou negar que o verdadeiro motivo de eu ter feito isso foi simplesmente porque mexer nessas coisas é divertido
Acho que sou um hacker ruim
Tive o mesmo problema de ter que conectar um drive externo no NAS, então simplesmente prendi ele em cima do NAS com velcro
Ficou muito mais bonito que a minha caixa “customizada” feita de Lego para colocar um NAS caseiro
Liguei 4 discos rígidos USB em um hub, e esse hub em um Nvidia Jetson
Eu queria fazer algo integrado, e como Lego falsificado é tão barato, deu para experimentar facilmente
Foi divertido, mas isso aí parece bem mais profissional, então deu até uma invejinha
Surpreendente e elegante
É impressionante ter chegado até aqui só com suposição, um pouco de tentativa e erro, teste de continuidade do circuito e uma substituição bem improvisada do load switch IC
Mesmo assim, no fim deu certo
É uma solução muito legal
Uso o modelo de 5 baias do mesmo NAS e instalei o TrueNAS Scale em uma memória USB Samsung conectada na USB interna
Escolhi um produto muito usado para dashcam da Tesla, então imaginei que pelo menos alguma durabilidade ele teria
Até agora estou satisfeito, mas o desempenho da CPU continua deixando bastante a desejar, então pretendo fazer upgrade para algo mais forte
Também pensei em trocar a placa-mãe por uma carrier customizada para módulo de computação ARM ou por um novo Lattepanda mu, mas acho que primeiro preciso usar esse projeto novo que fiz com tanto esforço
Ficou muito bem feito, e eu gosto desse tipo de projeto em que as pessoas mantêm controle direto sobre o próprio hardware
O fato de ter sido documentado publicamente também merece elogio mais uma vez
Só fico me perguntando se pode surgir algum problema de fluxo de ar
Tanto a PCB original quanto a PCB modificada têm um buraco grande no centro, que presumo servir para fazer o ar passar por cima dos drives
Só que o drive NVMe bloqueia isso
Provavelmente ainda vaza ar suficiente pelas bordas do NVMe para manter o resfriamento dos drives normais ok e, de quebra, talvez resulte no NVMe mais bem resfriado do mundo
Mesmo assim, o espaço parece bem apertado
Não entendo tanto de aerodinâmica para ter certeza, mas acho que uma certa quantidade de ar vai passar pelo buraco
Também empurrei o standoff do parafuso do SSD até a extremidade esquerda da PCB com a intenção de deixar mais ar passar pela direita
Pelo menos até agora não percebi nenhuma piora no desempenho térmico
Não é algo que eu vá usar diretamente, mas ainda assim acho empolgante
É muito bom e inspirador ver alguém se aprofundando tanto assim, aprendendo e compartilhando o que aprendeu