rPi CM4-baserad router/server/NAS

Berätta om dina pågående projekt.
Användarvisningsbild
slaeshjag
Inlägg: 458
Blev medlem: 16 april 2008, 15:17:19
Ort: 10.0.0.10

rPi CM4-baserad router/server/NAS

Inlägg av slaeshjag »

Här var det länge sedan man skrev något... :)

Efter att ha kört en Ryzen-baserad hemmaserver med misslyckade ambitioner om att kombinera den med HTPC, så är jag åter igen på hugget efter något som drar lite mindre ström.

Dessutom gillar jag små datorer, så jag gjorde först ett försök med ett minimalt mini-ITX-chassi från Chieftech. När jag insåg att 15mm-tjocka 2.5"-diskar inte skulle gå in blev det ny plan igen... Den här!

Tanken är att bygga ett bärarkort för en rPi CM4 (RaspberryPi Compute Module 4,) som matas med 12 volt. Kortet ska ha en SATA-kontroller för 2 diskar, dubbla ethernet-jack, och slot för ett bättre wifi-kort. Jag är fortfarande osäker på om jag vill ha en toslink-utgång för att koppla till förstärkaren, eller om det enbart är en uppgift för HTPCn. Kontakten är i alla fall med i designen.

I den ideala 3d-renderingsvärlden ser kortet ut så här:
piserb-3d-front.png
pi-serb-back-3d.png
En månad senare dök tre av fem beställda PCBs upp, antar att QA hade ett och annat att säga om min design... Kortet kändes först jobbigt stort. Tills dess att jag provmonterade ett par 2.5"-enheter, dvs..
disks_on.jpg
disks_behind.jpg
Ska man hoppas att en 15mm-tjock snurredisk passar lika bra? 5TB-diskarna är så dyra, så har inte vågat köpa sådana än...

Nästa steg blev att löda ihop alla spänningsregulatorer. Efter en bränd regulator (pga. en lödbrygga mellan bootstrap och enable-signalen...) samt en annan dåligt lödd regulator var alla spänningsräler uppe.
1.026 (1.0) V, 1.460 (1.5) V, 3.271 (3.3) V, 5.28 (5.0) V

Så därefter var det bara att bångla på två stycken headers för CM4-modulen och testa? Här insåg jag snabbt att dom inte var så illa som jag trodde att montera. Dom var mycket, mycket värre.
Lödtenn fäster gärna på sidan, finns inga linjeringspiggar och värst av allt så smälter plasten vid lödtemperatur, så det går inte att använda pincetter i någon större omfattning under varmluft... Med 0.4mm pitch är det inte så förlåtande heller... Att bara köpa en extra var nog lite väl optimistiskt!

Den första blev rätt sned, men då var plasten så skadad att jag inte vågade fixa det. Den andra blev lite bättre. Den 0te åkte i återvinningen, för den blev bananformad när jag upptäckte att plasten smälter i varmluft :roll:
a_bit_off.jpg
Med lite vilja gick CM4-modulen på, så nu är jag vid punkten att jag gjort ett första test och...
board_test.jpg
test_screen.jpg
Det är bara rev A, så man ska kanske inte vara allt för optimistisk, men... Fortsättning följer...
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Nerdboy123
Inlägg: 108
Blev medlem: 6 december 2012, 17:40:46

Re: rPi CM4-baserad router/server/NAS

Inlägg av Nerdboy123 »

Ballt bygge!!
Lägg upp det här på sweclockers när du är klar också, hade nog uppskattats där!
Användarvisningsbild
Glenn
Inlägg: 33667
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: rPi CM4-baserad router/server/NAS

Inlägg av Glenn »

Snyggt!

Men den där kontakten hade väl varit bättre att släplöda än att krångla med varmluft ?
Användarvisningsbild
Oskar
Inlägg: 1804
Blev medlem: 6 september 2005, 15:11:36
Ort: Storsjö, Sorsele

Re: rPi CM4-baserad router/server/NAS

Inlägg av Oskar »

Jag har upplevt att den där sortens kontakter är väldigt besvärliga att släplöda, det är som att de suger värme mycket värre än IC kretsar.
Varmluft är nog att föredra. Bäst resultat i ugn, tror jag i alla fall.
Användarvisningsbild
slaeshjag
Inlägg: 458
Blev medlem: 16 april 2008, 15:17:19
Ort: 10.0.0.10

Re: rPi CM4-baserad router/server/NAS

Inlägg av slaeshjag »

Värme är inga problem med den här kontakten. Däremot det faktum att lödtenn fäster väldigt bra på plasten. Bland det första som hände när jag försökte släplöda var att allt tenn på spetsen omedelbart fastnade på sidan och vägrade flytta på sig...

Efter den här erfarenheten skulle jag säga att pasta är nog det enda raka, vilket jag givetvis inte har hemma :roll:
Användarvisningsbild
slaeshjag
Inlägg: 458
Blev medlem: 16 april 2008, 15:17:19
Ort: 10.0.0.10

Re: rPi CM4-baserad router/server/NAS

Inlägg av slaeshjag »

Idag kommer en liten mini-uppdatering.

Nästa steg blev att försöka boota något. Sedan tidigare inlägg har följande tillkommit: USB-hubb med uttag, ethernet-jack och µSD-kortsslot.
board_with_interfaces.jpg
Inga expemplariska lödningar direkt, men jag är på språng, letandes efter den säkert existerande fatala designmiss som kräver en rev. B. Med detta blir det också några fler laster på på 3v3-rälen som tidigare bara drivit lysdioder, då CM4-modulen enbart använder 5v-rälen. USB-hubb och SD-kortsinterface sitter på 3v3-regulatorn, och mer blir det sen. Tittar man noga ser man också skadan på lödmasken över dataparen för USB strax över ESD-skyddsdioderna. Får antagligen hitta på något för att försegla kopparn om det här kortet visar sig bli vad jag använder.

Ethernetjacket och µSD-kortssloten var mer eller mindre plug 'n play, bara att löda dit så funkade det. ESD-skyddsdioderna var lite pill att få kontinuitet på för ethernet-jacket, men till slut gick det.

USB-hubben var lite bråkigare. Efter att ha mätt på USB-hubben och konstaterat att ~EXT_RESET är hög och ~PWR låg (hubb ej konfigurerad) gick det rätt snabbt att hitta felet, en lödbrygga på klockkristallen mellan en av anslutningarna och höljet. Höljet är givetvis jordat med två andra anslutningar... Gjorde inget fantastiskt jobb med att städa upp bryggan, men fungera gjorde det!
crystal.jpg
Efter det var det bara att boota. För närvarande raspberrypi OS, men målet är att köra Debian. Verkar vara lite dtp-tjaffs att reda ut först dock med Debian och CM4. Som synes är nätverket uppe i 1 Gb/s, USB-hubb + tangentbord hittas och boot-volymen är på mmc-interfacet.
interfaces.jpg
Med det här blir det nog ett litet uppehåll på hårdvaruframsteg, nästa steg där är PCI express. Paket-switchen jag använder är dock inte i lager förns i juni, så jag får hålla mig till mjukvara så länge.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: rPi CM4-baserad router/server/NAS

Inlägg av Klas-Kenny »

Kul projekt! Har gjort ett par bärarkort till andra moduler (x86), det är ganska skoj.

Kikade lite på ditt kort och fick syn på detta:
20210507_085632.jpg
Varför har du gjort delay på alla fyra par? :D
Ethernet behöver ju egentligen inte ens längdmatchas mellan paren.
Och de gånger man ska längdmatcha flera par, så utgår man ju från det längsta och förlänger de andra till samma. Så alltid en ledare/par som inte har några extra förlängningar.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
slaeshjag
Inlägg: 458
Blev medlem: 16 april 2008, 15:17:19
Ort: 10.0.0.10

Re: rPi CM4-baserad router/server/NAS

Inlägg av slaeshjag »

Angående längdmatcha ethernet: Oerfarenhet :)

Utöver en teoretisk kurs på KTH för snart 5 år sedan är höghastighetssignaler helt nytt för mig, och när jag sökte på det förut hittade jag inga särskilda rekommendationer, så jag längdmatchade i fall att.

Angående att alla par har meanders...
lazy.png
Jag var nog bara lat :D
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
slaeshjag
Inlägg: 458
Blev medlem: 16 april 2008, 15:17:19
Ort: 10.0.0.10

Re: rPi CM4-baserad router/server/NAS

Inlägg av slaeshjag »

Så uh... Vart var jag?

Justja, kort efter förra uppdateringen fick jag in Debian på pajen. Jag använde en nightly-build för rPi 4 (2021-05-02), och den bootade inte. Visade sig att debian inte skickar med något device-träd för CM4 än. Det var en chansning, eftersom debian kör upstream-kernel och rPi har sin egna bastardiserade kernel, men jag kopierade helt sonika CM4-dtbn, och hela overlays/-mappen från en raspberry pi os-image till debians boot-partition och... Nu hoppade allt igång! Nästan. Fick ingen video-signal till en början, vilket dock löstes med att lägga till i config.txt:

Kod: Markera allt

dtoverlay=vc4-fkms-v3d
Den raden har dock sönder shutdown och reboot, så jag kommer köra utan den så här i bringup-fasen när jag främst kommer SSHa in i den.

För att få igång fungerande USB behövdes också följande rad, men det gäller också raspberrypi os:

Kod: Markera allt

dtoverlay=dwc2,dr_mode=host
Väl inne började jag stressa ethernet-interfacet lite bara för att se att det lirar.
iperf3.png
De 10 omsända paketen på slutet dök upp när jag blev lite otålig och började webbsurfa... :)

Tanken var att inte pilla mer med hårdvaran innan paketswitchen dök upp, men jag kunde inte hålla mig.. :)

Så jag monterade dit realtidsklockan, trots att batterihållaren kommer att vara ordentligt i vägen senare.
rtc.jpg
Här kom också kortets första fulmod in. Jag hade mängder med problem att få RTCn att oscillera (trodde jag), och i jakten på det felet hittade jag i alla exempelscheman att VBAT-ingången brukar ha en kondensator på 100 puff, som inte var med på kortet. Hade ingen sådan hemma, så 220pF fick duga.

Men innan jag ens kom så långt, så hade jag problem att ens prata med RTCn. Lång historia kort så fick jag det bara inte att funka med RTCn kopplad till i2c0. När jag började fippla med i2cdetect däremot, så lade jag märke till en sak... Varje adress tog mycket längre tid än samma operation på i2c1, nästan som att något blockerade bussen och hindrade kommunikation. Efter att ha skummat manualen lite för CM4 såg jag att i2c1 kan mappas till samma pinnar som jag kopplat RTCn till, så det var värt ett försök!

Kod: Markera allt

dtoverlay=i2c1,pins_44_45
Och med det kunde i2cdetect se min RTC, så det var bara att snabbt kasta in dtb-raden för rtc!

Här missade jag dock något. I tidigare research så hade jag listat ut att linux drivrutin för mitt RTC-chip (MCP79410) ingår i DS1307-modulen. Så jag försökte ladda drivrutinen med:

Kod: Markera allt

dtoverlay=i2c-rtc,ds1307
Detta är dock fel. Det funkar så långt att chippet detekteras, och det går att sätta tiden. Vid bootup så läses tiden ut också. Tiden som sattes. Den tickar inte framåt. Jag lade flera timmar på att försöka felsöka och se om klockkristallen oscillerade och allt det där, till den punkten att jag funderade på att köpa några nya i fall att den jag har gick sönder i frakt, med andra lastkapacitanser och hela köret. Det var först när jag slösurfade på väg hem från jobbet som jag lade märke till att chippet har flaggor för att slå på oscillatorn, vilket snabbt ledde mig in i källkoden för i2c-rtc. Där framgick tydligt att man också skickar parametrar om vilket chip som faktiskt sitter där...

Så det skulle alltså egentligen så så här i config.txt:

Kod: Markera allt

dtoverlay=i2c-rtc,mcp7941x
Och med det hoppade realtidsklockan igång!

Passade också på att stressa USB-hubben lite. Läste med dd innehållet på ett 32 GB stort SD-kort i 20 MB/s. tog nästan en halvtimme, men inga fel i kommunikationen.

Annars har jag mest sysslat med vanliga debian-grejer, börjat konfigurera systemet så som jag vill använda det.

En sak som stökade till det här är att det fattas en textfil med parametrar för wifi, och wifi-modulen vill inte initieras utan den.
Löste det genom att helt sonika kopiera brcmfmac43455-sdio.raspberrypi,4-model-b.txt till brcmfmac43455-sdio.raspberrypi,4-compute-module.txt i /lib/firmware-mappen.

Tanken är att använda pajens interna wifi för en 2.4GHz-AP, och en WLE600VX för 5GHz, så numera använder jag paj-servern som AP till min mobil för att få lite timmar och känsla för hur det funkar, och hittills rullar det.

En bra-att-veta-sak jag upptäckte, är att config.txt skrivs över varje gång initramfs regenereras. Så mina tillägg till config.txt bor numera i /etc/default/raspi-firmware-custom, innehållet i vilken läggs automatiskt in i config.txt när update-initramfs körs.

Det var nog allt för den här gången.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
maDa
Inlägg: 4073
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: rPi CM4-baserad router/server/NAS

Inlägg av maDa »

Wow! Imponerande att bygga en eget moderkort för en RPi CM-modul.

Men hade det inte varit mer lämpligt att försöka bygga en ren NAS/Server, istället för försöka baka ihopa router och allt i samma? En RPi-baserad NAS (med 4st riktiga SATA) i ITX-utförande är verkligen något som saknas.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: rPi CM4-baserad router/server/NAS

Inlägg av Micke_s »

Detta kort verkar ha trevlig formfaktor. Får se när det går att köpa.
https://www.crowdsupply.com/wiretrustee ... ustee-sata
Användarvisningsbild
slaeshjag
Inlägg: 458
Blev medlem: 16 april 2008, 15:17:19
Ort: 10.0.0.10

Re: rPi CM4-baserad router/server/NAS

Inlägg av slaeshjag »

maDa skrev: 13 maj 2021, 19:51:00 Wow! Imponerande att bygga en eget moderkort för en RPi CM-modul.

Men hade det inte varit mer lämpligt att försöka bygga en ren NAS/Server, istället för försöka baka ihopa router och allt i samma? En RPi-baserad NAS (med 4st riktiga SATA) i ITX-utförande är verkligen något som saknas.
Det är tanken alla som bygger moderkort verkar ha. Antingen är det bra för NAS, eller för router, men aldrig båda :)

Jag vill ha allt i en låda. En burk att hålla koll på, och det är så jag alltid har gjort. Ett av målen den här gången är att hela burken ska ha ett mindre fotavtryck än ett miniITX-moderkort, och allt ska vara passivt kylt.

Eftersom det jag ville ha inte fanns att köpa så får jag bygga det :P
Användarvisningsbild
maDa
Inlägg: 4073
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: rPi CM4-baserad router/server/NAS

Inlägg av maDa »

Jag förstår. Jag körde tidigare mycket i samma burk, men på senare år så separera jag ur saker igen. Det är trist när en buggig grafikdrivrutin låser hela systemet, eller att filmen plötsligt börjar ladda för någon bakgrundstjänst börjar jobba, och att man ska behöva tappa internet eller trådlöst under tiden man startar om burken.

Men när numera RPi har riktigt GigabitEthernet och arm64-propp så hade jag verkligen kunnat tänka mig en NAS runt det, men lösa USB-diskar är inget alternativ.
Micke_s skrev: 14 maj 2021, 12:39:50 Detta kort verkar ha trevlig formfaktor. Får se när det går att köpa.
https://www.crowdsupply.com/wiretrustee ... ustee-sata
Trevligt! Verkar lovande!
Användarvisningsbild
mankan
EF Sponsor
Inlägg: 905
Blev medlem: 18 juli 2015, 11:23:22
Ort: Linköping

Re: rPi CM4-baserad router/server/NAS

Inlägg av mankan »

Riktigt kul projekt att följa. Bra jobbat.

Du verkar hemtam med Linuxkärnans globala slasktratt (aka device tree) iaf.
Användarvisningsbild
slaeshjag
Inlägg: 458
Blev medlem: 16 april 2008, 15:17:19
Ort: 10.0.0.10

Re: rPi CM4-baserad router/server/NAS

Inlägg av slaeshjag »

Hemtam vet jag inte. Har läst lite om device trees i förväg, annars är det första gången jag rör härket :P

Med bakgrund för tidigare kommentarer, kanske jag ska sammanfatta tanken bakom funktionerna jag har försökt kombinera med det här projektet. Den här gången tänkte jag försöka göra uppdelningen "alltid på" och "ibland på". Det här bygget är tänkt att ta hand om alla "alltid-på"-funktioner, utan att dimensionera för sådant som inte behöver vara tillgängligt 24/7.

Nästa punkt jag gav mig på var bluetooth, där tanken är att koppla burken till förstärkaren, för att få funktionen av en bluetooth-högtalare. Och bluetooth gav mig mängder med problem, till den graden att jag funderade på att skita i den biten.

Som det är nu kan jag sparka igång den inbyggda bluetoothsändaren genom att köra hciattach på ttyAMA1 två gånger i rad, den första blir alltid en timeout. Har inte heller fått det funka att starta från systemd. Verkar inte vara timing-relaterat då det inte ens funkar att starta tjänsten från en login-promt, men samma script funkar fint att köra från terminalen... Väl igång fungerade det hjälpligt innan bluetoothsändaren dök fullständigt och krävde spänningscykling, men det kunde jag senare konstatera bero på att jag hade fel version av firmware-filen. Denna fungerade, och ska i skrivande stund läggas i /etc/firmware/brcm/ av alla ställen.

Fnulat lite på hur man parar ihop två bluetooth-enheter. Inte så haj på bluetooth, men det där med en fix PIN-kod verkar vara förlegat. Med "SSP"-läge påslaget verkar i stort sett två gångbara alternativ finnas, ingen autentisering alls, eller visa en av enheten genererad kod med /ja/nej-val. Funktionaliteten skulle användas för att koppla upp mot förstärkaren över toslink och låta mig använda den som bluetooth-högtalare, en funktion jag fortfarande inte är säker på att jag vill ha. Men eftersom jag inte bestämt mig än är det fortfarande framåt som gäller.

Så jag bestämde att jag får helt enkelt lägga till en 6-siffrig display och en "acceptera"-knapp. Från början var tanken att bara ha två lysdioder (power, HDD) samt en knapp (gör bluetooth-enheten synlig) på sladd till headers. Nu blir det däremot ett kretskort i fronten med en mikrokontroller som dessutom lägger till två lysdioder för bluetooth (synlig, enhet ansluten). Då jag inte var så förutseende med interface, så finns det bara ett alternativ att välja på för att koppla in sig, UART-en nere vid kontakterna som jag lade till i fall den behövdes vid felsökning...
front-panel.png
Jag har också börjat fundera en del på hur jag ska kapsla in allt. Nuvarande huvudspår är ett 3D-skrivet hölje med två aluminiumplåtar på över och undersidan. Översidan vill jag nog ha lite kylfläns på också, men det blir många timmar vid fräsen för en person som inte kan hålla i en hammare rätt.

Efter att ha spenderat helgen i freecad, och därefter tappat allt sug på att ytterligare lära mig freecad, hade jag följande:
case-spacer-cad.png
case-spacer-cad2.png
Vilken sedan kördes ut på jobbets snorspottare, med godkänt resultat:
case-printed.jpg
Ett snabbt test av passform indikerar att med ytterligare uppstädning av överhängande delar borde kortet passa rätt bra:
case-test.jpg
Fortsättning följer...
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar