- Après avoir installé NixOS sur un Terramaster F2-221, un SSD USB externe étant devenu un obstacle, l’auteur a fabriqué lui-même un backplane afin d’intégrer un SSD de démarrage NVMe en interne
- Le backplane d’origine du F2-221 était centré sur les circuits SATA et d’alimentation, et l’analyse de photos du F5-422 a permis de comprendre comment Terramaster étendait les baies avec deux contrôleurs SATA ASM1061
- Les paires différentielles PCIe ont été suivies en recoupant les photos du F5-422, la fiche technique de l’ASM1061 et l’emplacement des condensateurs de couplage, mais certaines broches n’ont jamais été confirmées et le pinout PCIe2 n’a pas non plus été vérifié
- Le prototype de PCB reliait directement un slot M.2 NVMe à une ligne PCIe x1 Gen 2 ; le BIOS affichait
Patriot P300 128GB et les disques durs fonctionnaient aussi normalement
- La version finale F3 Backplane a été simplifiée pour utiliser directement le rail 3,3 V et, après plusieurs semaines de démarrage sur NVMe et de btrfs scrub sans erreur, le projet KiCad a été publié sur GitHub
Le point de départ : se débarrasser du SSD USB externe
- Le Terramaster F2-221 étant un NAS x86_64 standard basé sur un Intel J3355, l’installation de NixOS à la place du TOS par défaut était en soi simple
- Comme les deux connecteurs SATA étaient déjà utilisés par des disques durs de 4 To, il fallait connecter un SSD USB externe comme support pour le système d’exploitation
- Il fallait réserver de la place pour le SSD externe autour du NAS, derrière l’étagère, et faire attention au câble à chaque fois que des objets étaient déplacés ; un stockage interne est donc devenu nécessaire
- La carte mère disposait bien d’un connecteur USB interne pour le bootstrap de TOS, mais comme il était en USB 2.0, il ne convenait pas comme SSD de démarrage
Comparaison des backplanes F2-221 et F5-422
- La carte mère du F2-221 possédait un connecteur de type PCIe x4 dans lequel venait s’enficher le PCB du backplane, mais le backplane d’origine ne comportait pas de circuit intégré de conversion PCIe-SATA
- Les connecteurs SATA étaient câblés directement au connecteur PCIe edge, et le brochage réel était un pinout non standard, pas du PCIe standard
- L’Intel J3355 fournissant deux ports SATA et six lignes PCIe Gen 2, il était probable que les modèles 4 baies et 5 baies de Terramaster augmentent le nombre de ports SATA via des lignes PCIe
- Sur les photos haute résolution du test du Terramaster F5-422, deux circuits intégrés ASMedia ASM1061 ont été identifiés
- L’ASM1061 est un contrôleur SATA basé sur PCIe Gen 2 x1 et fournit deux ports SATA
- Sur le F5-422, il a été déterminé que le premier ASM1061 était relié aux ports 3 et 4 du backplane, et le second au port 5
- Au dos de la carte mère du F2-221, il a aussi été confirmé que des broches semblant correspondre à des signaux PCIe sur le backplane du F5-422 étaient effectivement câblées
Rétro-ingénierie des signaux PCIe
- Les lignes PCIe ont été suivies à partir des photos du backplane du F5-422 et de la fiche technique de l’ASM1061, mais plusieurs paires différentielles passaient par des vias vers des couches internes, ce qui rendait difficile de distinguer
TX, RX et REFCLK
- L’un des indices vérifiables était qu’une broche du connecteur PCIe était reliée au
PERST# de l’ASM1061
- Le fait que, traditionnellement en PCIe, des condensateurs de couplage soient placés sur les paires différentielles
TX a servi à déterminer le sens des signaux
- La paire différentielle reliée au
TX de l’ASM1061 devait avoir des condensateurs de couplage côté backplane
- Du point de vue du CPU et de la carte mère, cette paire différentielle devenait donc
RX
- La paire différentielle reliée au
RX de l’ASM1061 a été déduite de l’emplacement des condensateurs de couplage côté carte mère
REFCLK a été supposé être la paire différentielle restante la plus proche de TX et RX pour chaque interface PCIe x1
- En important la photo du backplane du F5-422 dans KiCad, les pistes externes ont été suivies jusqu’aux vias et les possibilités de routage sur les couches internes comparées, ce qui a permis de valider approximativement le pinout PCIe1
- Certaines broches n’étaient pas connectées sur le backplane F2-221 d’origine, ou partaient vers des couches internes, ce qui n’a pas permis d’en confirmer la fonction
- Le pinout PCIe2 n’a pas été vérifié
Reconstitution du circuit d’alimentation
- Une face du backplane du F2-221 ne comportait pas de circuit intégré pour les signaux PCIe, mais de nombreux circuits d’alimentation composés principalement de MOSFET, de diodes, de résistances et de condensateurs
- Des gros plans ont servi à identifier les composants et les pistes, puis le schéma a été recréé dans KiCad
- Le circuit a été compris comme une architecture de load switch à démarrage progressif, un par rail d’alimentation de chaque port SATA
- Le F2-221 en comporte quatre au total : 2 ports SATA × 2 rails d’alimentation
- Le F5-422 en comporte dix au total pour ses 5 baies
- La broche P4, l’une des broches de masse du connecteur SATA, est tirée à la masse lors de la connexion d’un disque dur et sert de broche enable pour le load switch
- Cette architecture semble destinée à réduire les étincelles entre le connecteur et le disque lors du hot-plug d’un disque dur, causées par le fort courant d’appel initial
- Pour éviter de souder de nombreux composants discrets, le circuit intégré de load switch avec démarreur progressif intégré onsemi NCP45521-L a été choisi
Pourquoi choisir le NVMe plutôt qu’un SSD SATA
- Au départ, l’idée était d’ajouter des ports SATA avec un ASM1061 et de fixer un SSD SATA dans le boîtier
- Il y avait de la place pour un connecteur M.2 entre les rails de fixation du backplane ; l’espace était très étroit, avec moins de 1 mm de marge de chaque côté, mais l’installation était possible
- Pour utiliser un SSD M.2 SATA, il fallait un contrôleur convertissant le PCIe en SATA
- Une approche comme celle du F5-422, avec un ASM1061, était possible
- Mais comme il était difficile d’acheter l’IC ASM1061 seul, il aurait fallu dessouder l’IC d’une carte PCIe équipée d’un ASM1061
- Le NVMe étant lui-même basé sur PCIe, il est possible de connecter directement les lignes PCIe à un slot M.2 M-key sans contrôleur séparé
- Les SSD NVMe utilisent généralement quatre lignes PCIe Gen 3 ou plus, mais comme cette conception n’emploie qu’une seule ligne PCIe Gen 2, la vitesse ne devait pas être supérieure à celle du SATA
- Malgré cela, l’absence de contrôleur, le routage plus simple et le choix plus large de SSD NVMe rendaient le NVMe plus adapté à cet usage
- Le SSD effectivement utilisé, un
Patriot P300 128GB, a été acheté localement pour 14,90 €
- Comme il n’était pas certain que le BIOS puisse démarrer directement depuis le NVMe, une solution de repli consistant à placer la partition de boot sur une clé USB 2.0 interne a aussi été envisagée
Fabrication et test du PCB prototype
- Le nouveau PCB devant s’adapter à la structure de fixation du backplane dans le boîtier, l’emplacement du connecteur PCIe edge et des trous de vis devait être précis
- La taille du PCB et la limitation du flux d’air devaient aussi être prises en compte, de sorte que le prototype était important non seulement pour la validation électrique, mais aussi pour vérifier l’ajustement mécanique
- Le PCB d’origine a été mesuré à la règle et au pied à coulisse ; la distorsion optique d’une photo de face a été réduite, puis l’image importée dans KiCad pour aligner connecteurs, trous de vis et contour
- Sur le prototype, les broches non identifiées ont été sorties sur des points de test, et comme le rail 3,3 V a été découvert tardivement, un convertisseur buck transformant le 5 V en 3,3 V a été ajouté
- Un PCB 4 couches a été commandé chez JLCPCB et reçu quelques semaines plus tard
- C’était la première soudure de boîtiers DFN, avec des composants très petits, mais les courts-circuits entre alimentation et masse ont été vérifiés et la qualité des soudures inspectée avec des gros plans pris au smartphone
- Une fois inséré dans le NAS et démarré,
Patriot P300 128GB est apparu dans la liste des options de démarrage du BIOS, ce qui permettait de démarrer directement depuis le NVMe
- La ligne
CLKREQ, qui inquiétait, n’a pas été trouvée, mais elle semblait être maintenue à l’état bas en permanence quelque part sur la carte mère, et REFCLK fonctionnait
CLKREQ sert généralement au SSD à demander l’horloge de référence lorsqu’il en a besoin
- Dans cette conception, l’ASPM ne fonctionne pas, mais comme il s’agit du disque de démarrage d’un serveur toujours allumé, cela n’a pas été jugé problématique
- Les disques durs ont également fonctionné normalement après connexion
- Le prototype conçu pour les tests et le débogage fonctionnant tel quel, la fonction des broches non identifiées n’avait plus vraiment d’importance
Version finale F3 Backplane
- Le prototype fonctionnait normalement, mais il restait des points de test et il était légèrement de travers dans le boîtier ; une version finale V1.0 a donc été refaite
- Dans la version finale, le convertisseur buck a été supprimé et le connecteur M.2 a été relié directement au rail 3,3 V du connecteur PCIe
- La position a été légèrement ajustée pour réduire l’inclinaison du prototype, les points de test ont été supprimés et un logo a été ajouté
- Le nom F3 Backplane a été choisi pour signifier qu’il ajoute une unité au F2
- Le PCB final, commandé à nouveau chez JLCPCB et reçu ensuite, a lui aussi fonctionné normalement comme le prototype
- Un btrfs scrub complet a été exécuté sur les disques durs et aucune erreur ne s’est produite
- Le système a fonctionné pendant plusieurs semaines depuis le SSD NVMe sans aucun hiccup
- La soudure des connecteurs SATA a été difficile et grossière, car aucun thermal relief n’avait été ajouté au plan de masse interne, mais ce problème a été corrigé dans le dépôt GitHub
Performances et ressources publiées
- Le résultat
hdparm du SSD NVMe est le suivant
/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
- Ce n’est pas une vitesse élevée pour un SSD NVMe, mais c’est le résultat attendu avec une seule ligne PCIe Gen 2
- Les performances sont suffisantes pour un disque de démarrage
- Le projet KiCad est publié sur GitHub
1 commentaires
Avis sur Hacker News
Comme méthode pour souder un boîtier DFN, c’est quasiment complètement délirant, mais ça a l’air amusant
Ça peut marcher d’une façon étrange, mais il ne faut pas s’attendre à une fiabilité constante ; ça suffit sans doute pour un projet ponctuel
Heureusement, la pastille inférieure du boîtier DFN allait jusqu’aux deux bords, ce qui l’a rendu possible ; je ne pense pas que cette méthode fonctionnerait avec un QFN
J’ai fait plusieurs fois des opérations similaires avec de la soudure classique : il suffit d’en mettre une quantité un peu généreuse sur chaque pad, sans aller jusqu’à provoquer des courts-circuits
Appliquer du flux, si possible un flux à base de colophane qui tient longtemps même à l’étape de chauffe suivante, chauffer toute l’empreinte au pistolet à air chaud, puis poser délicatement le circuit intégré
Ainsi, on n’a pas besoin d’envoyer longtemps de l’air chaud sur l’IC pour chauffer l’ensemble
Si l’on met toujours quelques vias dans le pad thermique et qu’on laisse le cuivre exposé de l’autre côté, les vias ne sont pas bouchés par le masque de soudure et absorbent l’excès de soudure
Pour des travaux SMD à très petit budget, on peut aussi chauffer le pad thermique au fer à souder depuis l’autre côté
On peut appuyer sur la puce, mais il faut faire attention à l’alignement avec les pads
Sur les QFN, à part de grosses gouttes de soudure qui se forment sur le bord extérieur, j’ai rarement vu des ponts de soudure
Les alliages de soudure et les masques de soudure actuels empêchent assez bien les ponts, et la soudure a fortement tendance à adhérer au métal plutôt qu’à rester entre le corps du boîtier et le masque de soudure
J’aimerais qu’il y ait davantage de standardisation dans les builds de NAS grand public
Cela fait des années que je demande à ASUSTOR s’ils envisagent de faire un backplane ou un adaptateur compatible Mini-ITX
Ce serait bien de pouvoir, quelques années plus tard, ne remplacer que le backplane, ou d’insérer un SBC dans un format du type Pico-ITX
Je n’aime pas le fait qu’au bout de 5 ou 10 ans, il devienne difficile de mettre correctement à niveau un NAS
Si l’on pouvait seulement changer la carte mère, on pourrait faire passer beaucoup de NAS 1 Gbit/s à 2,5 Gbit/s ou 10 Gbit/s, et continuer à utiliser le châssis plus longtemps au lieu de l’envoyer à la décharge
Jeter aussi le châssis de NAS et le backplane alors que seule la partie calcul est obsolète, c’est un énorme gâchis
Il pourrait aussi y avoir des synergies avec la carte mère du Laptop 13, avec un TDP de niveau ordinateur portable et même la possibilité d’ARM
Cela dit, le marché des appliances NAS ne semble pas très grand, limité aux « prosumers » et aux petites entreprises, et la différenciation se fait davantage par le logiciel que par le matériel
Si les gens achètent du Synology, ce n’est pas pour le matériel mais pour DSM
Il me semble avoir lu quelque part que Framework n’avait pas de projet d’intégration verticale, et c’est dommage
Ce serait bien d’avoir un OS pris en charge par Framework où des aspects comme l’économie d’énergie ou le ressenti du touchpad fonctionnent bien dès le départ
J’aimerais pouvoir simplement brancher ce genre de chose dans un PC standard, mais les produits que j’ai trouvés sont soit des modèles à 4 ports, soit beaucoup trop chers
Tu as déjà donné toi-même la réponse
La profondeur et l’effort que les gens sont prêts à y consacrer m’impressionnent toujours
C’est encore plus vrai pour les travaux où l’on perd vraiment de l’argent si l’on se rate, comme modifier une guitare ou du matériel
J’ai l’impression qu’avant de me lancer directement dans ce genre de projet, il faudrait que je me fasse la main ailleurs avec un fer à souder ou des outils de menuiserie
Je me demande aussi pourquoi le marché des petites boîtes faciles à hacker, où l’on peut bidouiller plus facilement le matériel ou le logiciel, n’est pas plus important
J’aimerais qu’il existe un NAS à prix grand public dont on puisse retirer le système d’exploitation pour le remplacer par un OS ou un noyau standard
Peut-être que je suis simplement trop intimidé par l’idée de modifier des objets physiques réels
Il a 24 To de disques physiques, 16 To utilisables (Raid Z2), tourne sous Ubuntu LTS Server, et je lance les conteneurs dont j’ai besoin dans Docker via Portainer
Ce n’est pas une interface graphique à clics utilisable par n’importe qui, et il faut créer soi-même des montages SMB dans le terminal, mais c’est assez simple à maintenir
Côté matériel : carte mère Asrock Rack C246 WSI Mini ITX, 32 Go de RAM ECC, Intel i3-9100T, six disques NAS IronWolf 4 To, châssis rack 2U peu profond, et SSD de démarrage Samsung 850 Evo 1 To
La consommation au repos est de 23 W, donc suffisamment basse, et elle monte à 65 W en charge
Les disques sont mis en veille après 10 minutes d’inactivité, et même ainsi le nombre annuel de cycles load/unload est d’environ 10 000, ce qui reste correct par rapport aux 600 000 cycles annoncés
On peut y mettre ses propres disques et installer l’OS de son choix
J’ai une machine configurée avec 183 To qui fait tourner TrueNAS (ZFS), et elle est excellente
En gros, c’est une boîte x86 standard avec beaucoup d’emplacements de disques, un backplane, des ports SAS/SATA et une grosse capacité côté contrôleur
Le marché de l’occasion est aussi assez actif
Cela dit, comme c’est destiné aux gens qui veulent mettre plus de 10 disques dans un même châssis, c’est difficile à qualifier de matériel grand public
Je pense régulièrement à acheter un NAS, mais je ne veux pas utiliser un OS propriétaire de fournisseur qui pourrait scanner mes données à cause d’intégrations cloud inutiles ou hostiles
Je n’aime pas non plus l’idée qu’il puisse rester une backdoor avec un mot de passe codé en dur
Aucune idée de la qualité du BIOS, et il n’y a pas de RAM, mais il est extensible jusqu’à 32 Go, et vous apportez votre propre OS
Le modèle Intel Alder Lake N100 est à 189 $ : https://aoostar.com/products/aoostar-r1-2bay-nas-intel-n100-...
Le modèle Ryzen 5700 est à 299 $ : https://aoostar.com/products/aoostar-r7-2-bay-nas-amd-ryzen-...
Certains utilisent un Raspberry Pi comme NAS ; c’est lent, mais ça fonctionne pour des sauvegardes locales bon marché
On peut aussi rooter de vieux NAS intégrés comme le DNS-320 pour y faire tourner une distribution relativement récente basée sur Debian, qui reçoit des correctifs de sécurité
En revanche, le CPU et la RAM sont très limités, donc il faut être à l’aise avec la ligne de commande
Une autre solution consiste à acheter un vieux serveur HP Proliant (autour de la gen8), à y mettre quatre disques durs de 16 To et à démarrer sur un cinquième disque
Je suis intrigué par le passage disant que « ce header USB n’est qu’en USB 2.0, donc ce n’est pas une option pour cet usage »
Je ne mets pas en doute cet excellent projet, mais j’aimerais comprendre pourquoi l’USB 2.0 ne convient pas pour l’OS d’un NAS
À part lire au démarrage et écrire occasionnellement un peu de données, est-ce qu’il fait autre chose ?
Quand on lance des opérations journalctl sur six mois de fichiers de logs, cela prend une à deux minutes à cause des schémas d’accès aux fichiers pas optimaux de journalctl
Bien sûr, je ne nierai pas que la vraie raison pour laquelle j’ai fait ça était simplement que bricoler était amusant
On dirait que je suis un mauvais hacker
J’avais le même problème : devoir brancher un disque externe sur mon NAS, et je l’ai simplement fixé au-dessus avec du Velcro
Ça a l’air beaucoup plus élégant que le boîtier « custom » que j’ai fabriqué en Lego pour y mettre mon NAS maison
J’avais branché quatre disques durs USB sur un hub, lui-même connecté à un Nvidia Jetson
Je voulais en faire un ensemble intégré, et les faux Lego étant tellement bon marché, c’était facile d’expérimenter
C’était amusant aussi, mais celui-ci a l’air bien plus professionnel, donc je suis un peu jaloux
Impressionnant et élégant
C’est remarquable d’être arrivé jusque-là avec seulement des suppositions, un peu d’essais-erreurs, des vérifications de continuité, et une façon assez légère de remplacer l’IC de commutation de charge
Mais au final, ça a fonctionné
C’est une solution vraiment chouette
J’utilise le modèle 5 baies du même NAS, et j’ai installé TrueNAS Scale sur une clé USB Samsung branchée sur l’USB interne
J’ai choisi un modèle très utilisé pour les dashcams Tesla, en me disant qu’il aurait au moins une certaine endurance
Jusqu’ici j’en suis satisfait, mais les performances CPU restent vraiment insuffisantes, donc je prévois de passer à quelque chose de plus puissant
J’ai aussi envisagé de remplacer la carte mère par un carrier custom pour module de calcul ARM, ou par le nouveau Lattepanda mu, mais je pense qu’il faut d’abord que j’utilise ce nouveau projet dans lequel j’ai mis autant d’efforts
C’est bien réalisé, et j’aime ce genre de projet où les gens gardent le contrôle direct de leur propre matériel
Le fait de l’avoir documenté publiquement mérite aussi d’être salué une fois de plus
Je me demande toutefois s’il n’y aura pas un problème de circulation d’air
Il y a un grand trou au centre du PCB d’origine et du PCB modifié, probablement destiné à faire passer l’air au-dessus des disques
Mais le disque NVMe le bouche
Peut-être que suffisamment d’air passera autour des bords du NVMe pour refroidir correctement les disques classiques, avec en prime le NVMe le mieux refroidi au monde
Malgré tout, l’espace semble vraiment très serré
Je ne m’y connais pas assez en aérodynamique pour en être certain, mais je pense qu’une certaine quantité d’air passera par le trou
Le fait d’avoir poussé les entretoises à vis du SSD jusqu’au bord gauche du PCB visait aussi à laisser passer davantage d’air sur la droite
En tout cas, jusqu’à présent, je n’ai pas constaté de dégradation des performances de refroidissement
Je n’en aurai pas d’usage direct, mais ça me réjouit quand même
Voir quelqu’un creuser aussi profondément, apprendre, puis partager ce qu’il a appris, c’est vraiment appréciable et stimulant