ASRock DeskMini A300 Casemodding

Motivation

Nachdem ich mit Schrecken feststellen musste, wie hoch der Leerlauf-Verbrauch meines PCs mittlerweile ist, musste eine neue Lösung her. Der erste Ansatz war, auf eine Moderne CPU/GPU Kombination, einem ITX-Board und SSD zu setzten. Die bislang vorhandenen Festplatten (3.5 Zoll) sollten in einem USB-Gehäuse bzw. einer NAS-Lösung Platz finden. Zudem hatte ich mich dazu entschlossen, bei meinem Monitor (21:9) Abstiche zu machen. Zum einen, weil der hohe Leistungsbedarf mich immer zu leistungsstarken Grafikkarten zwingt, zum anderen weil dieser wirklich viel Strom gefressen hat (ca. 100 Watt je nach Helligkeit). 

Insgesamt lag mein Leerlauf-Verbrauch vor der Modernisierung bei ca. 150-250 Watt (PC, Monitor, Lautsprecher). Nach Umstieg auf die ITX-Lösung und einem Modernen 1080p Monitor konnte ich den Leerlauf-Verbrauch auf ca. 80 Watt senken. Ziel erreicht, aber nicht zu 100% zufrieden. 

Durch Zufall bin ich im Computerbase.de Forum auf einen Beitrag über den ASRock A300 gestossen. Einem knapp 2-Liter PC mit einem AM4-CPU-Sockel und gleich 4 Festplattenanschlüssen. Zwei der Anschlüsse waren PCIe-Steckplätze im M.2 Format und bestens dafür geeignet, mit externen Grafikkarten herumzuexperimentieren. Was ich zu dem Zeitpunkt noch nicht ahnen konnte, ist, dass mich dieses Projekt durch die komplette Corona-Krise begleiten wird und die hier beschriebene Konfiguration nicht die Letzte geblieben ist ...

Variante Nummer 1 - Huckepack

Abbildung 1: Zerlegtes Gehäuse in der Variante A.

Hardware

Nach ein paar inspirierenden Beiträgen in diversen Foren, habe ich mich damit befasst meine eigene Variante zu basteln. In erster Linie war ich an einem stromsparenden System interessiert, welches bei Bedarf auf eine externe GPU zurückgreifen kann. Um dies zu realisieren habe ich eine GeForce 1660Ti auf das Gehäuse montiert und ähnlich via M.2 Adapter in das System eingebunden.

Die Stromversorgung läuft über ein starkes 12 V Netzteil (STD-12160) und einen selbstgebauten Verteiler. Die GPU lässt sich vor dem Systemstart sogar Stromlos setzen. Das System startet in diesem Fall ohne externe GPU. Der Monitor ist konstant am Mainboard Ausgang (DP) angeschlossen. Leistungshungrige Programme bekommen die externe GPU manuell zugeordnet. Ansonsten läuft diese im Standby. Um das Netzteil etwas zu schonen wurde die maximale Leistungsaufnahme mittels MIS-Afterburner leicht reduziert.
Die Leistungsgrenzen wurden zuvor im zerlegten Zustand zuerst mit einem externen ATX Netzteil, dann mit einer 250 Watt Pico PSU und schliesslich mit dem Selbstbauverteiler getestet.

Weitere Komponenten:

Ryzen 2400G (den 3400G bekommt man ja praktisch nicht mehr), 32 GB DDR4 2400 Mhz RAM, 1 TB WD Blue NVMe SSD, 0.5 TB WD Blue SATA SSD und ein Creative Sound Blaster X-Fi HD USB Audio-System.

Bei der GPU handelt es sich im Detail um die Zotac GTX 1660 Ti Gaming (die kürzeste) (Link zum Hersteller). Da die Karte keinen Autostop für die Lüfter unterstützt, habe ich nach einiger Recherche das Bios einer MSI GTX 1660 Ti 6 GB Gaming X auf die Karte gespielt (Link zur Bios Datei - Auf eigene Gefahr). Die eh schon leisen Lüfter wurden durch höhere Noctua Lüfter ausgetauscht und auf max. 50 % Leistung gedrosselt. Die Abdeckung besteht aus einer 4 mm Sperrholzplatte nach Bearbeitung im Laserplotter. Lackierung ist Hamerite als Basis und Revel Metallglanz für die Details. Die Lüfter selber liegen auf 5 mm breiten Dichtungen und sind nicht verschraubt.

Aufbau des Systems

Um die GPU in das System zu integrieren habe ich einen billigen M.2 NGFF auf PCIe 4x Adapter mit einer PCIe Verlängerung angeschlossen. Um das ganze System kompakt zu halten ist ein Schlitz in der Gehäuseoberseite mittels Kreissäge gemacht worden. Die Karte ist steht auf Gewinde Nieten (ich weis man nutzt diese anders).

Zusätzlich gab es noch kleine Änderungen um das System zu vervollständigen. Ein Taster zum Bios zurücksetzen wurde hinten am Gehäuse angebracht, Die zusätzlichen USB Anschlüsse wurden angeschlossen (modifiziertes Kabel damit die PCIe Verlängerung Platz hat) und die SATA Anschlüsse wurden mit SATA -> M.2 Adapter ergänzt. Auch der CPU Lüfter wurde durch eine 25 mm Variante ersetzt und separat nach oben und unten entkoppelt. Um der CPU genügend Luft zur Verfügung zu stellen, habe ich ein 80 mm breites Loch in das Gehäuse gesägt.

Arbeiten die jetzt noch ausstehen ist das Nachrüsten des WLAN Boards (welches gerade schlecht lieferbar ist) und eventuell ein weiter Lüfter für den Raum der Festplatten (unter Last bis 69 °C). Das System läuft aktuell auch unter Last sehr ruhig.

Abbildung 2: Das System im Lauffähigen Zustand, die Seitenwand blieb zur Kühlung meist offen.

Ansicht Gesamtsystem noch ohne die letzte Seitenwand. Diese muss offen sein damit die PCIe Verlängerung bei Zusammenbau eingesteckt werden kann. Das Kabel der Verlängerung muss kurz sein um genügend Platz für den CPU Kühler zu lassen.
Die Seitenwand läst sich nachträglich anschrauben.

Abbildung 3: Zerlegtes Gehäuse in der Variante A.

Die beiden "Module" dieses kleinen Monsters. Auf dem Bild ist der CPU Kühler noch nicht entkoppelt. Die Halterung für die CPU Kühler sollte eigentlich temporär sein, ist aber super leise. Aktuell suche ich nur noch schönere Gummibänder oder bastel noch ein Gehäuse um diese zu verdecken. Für den Zusammenbau muss man Geduld mitbringen. Durch die hohen Kühlern, der zusätzlichen Stromversorgung und den Schrauben für die GPU ist praktisch jeder Platz im Gehäuse belegt.

Abbildung 4: Blick in das Gehäuse und den Anschluss der Grafikkarte.

Seitenansicht auf die PCIe Verlängerung und die Anschlüsse der zusätzlichen USB Anschlüsse. Die Kabel dafür wurden abisoliert, gekürzt und der Stecker auf ein Minimum an Kunststoff zurück geschnitten. Auf dem Bild kann man auch gut das zusätzliche Loch für den CPU Kühler erkennen.

Abbildung 5: Blick auf den nachgerüsteten PCIe Steckplatz und die Stromversorgung des Steckplates.

Bei der Adaptern handelt es sich um einen ICY BOX M.2 SATA zu 2,5" Adapter (und zwar ohne Alugehäuse). Die Platine wurde hohem doppelseitigen Klebeband fixiert.

Systemleistung

Zur Ergänzung der obligatorische Benchmark. Im Vergleich mit den Testergebnissen von guru3d.com (LINK zur Seite) ergibt dies 92 % der zu erwarteten Leistung. Die Leistungsdifferenz lässt sich leicht durch das PCIe 4x Interface begründen.

Abbildung 6: Superposition Benchmark Ryzen 2400G, 32GB RAM, Geforce 1660Ti an PCIe 4x

Variante Nummer 2 - Wasteland

Abbildung 7: Zweite Variante im Fallout Look
Anpassungen

Im Vergleich zur ersten Variante hat sich an der Hardware noch nicht viel getan. Die Änderungen der Variante 2 sind praktisch alle optischer Natur. Die Grafikkarte hat ein Kleid aus Sperrholzplatten bekommen. Die wurden Schichtweise in Fusion 360 gezeichnet und anschliessend mit dem Laserschneider ausgeschnitten.
Das selbe gilt für den Vaultboy an der Front. Die ausgeschnittenen Platten sind mit Arcylfarbe angepinselt. Die noch feuchte Farbe wurde noch mit einer Mischung aus grauer und schwarzer Farbe (nicht 100% gemischt) verunreinigt, mit einen öligen Look zu erhalten. Für das Finish habe ich einen einfachen Klarlack genommen. Wenn ich heute das Gehäuse des Kühlers noch einmal aufbauen würde, würde ich auf eine bessere Qualität der Platte achten und mit Sandpapier einen guten Teil der Oberfläche abtragen. So scheint die Struktur des Holzes noch sehr dominant und lässt bei einem ungünstigen Betrachtungswinkel das Gehäuse billig aussehen. 

Systemleistung

Die Systemleistung hat sich nach der Anpassung, oh Wunder, kaum verändert. Wie auf dem Bild zu sehen wurde die Grafikkarte um ca. 10 mm angehoben. Das dient dazu den CPU-Kühler mit mehr Luft zu versorgen. Dieses hat dazu geführt dass, der Prozessor länger einen hohen Takt fahren konnte. Zwar sind die Mini-Einbrüche nur in Extremsituationen aufgetreten, der dabei wahrnehmbare Lüfter war mir schon wieder zu laut. 

Variante Nummer 3 - Touch it!

Abbildung 8: Das Gehäuse besteht nun aus der A300 Boden- und Rückplatte, 4 Gewindestangen und zwei Sperrholzplatten.
Verbesserungen

Natürlich war das Projekt für mich noch nicht abgeschlossen 😅. Das kleine Gehäuse hat sich als echter Warmluftspeicher herausgestellt. Nach einigen Stunden Dauerbetrieb konnte man schon mal 80°C am Temperatursensor der Festplatte ablesen. Die zusätzlichen Kabel machten dem Gehäuse zu schaffen. Da das System in der ursprünglichen Planung ein "Benchtable" werden sollte, war die Entscheidung einfach. Ein größeres, besser belüftbares Gehäuse muss her. Zudem ergaben sich weitere Änderungen die ich im Schnelldurchlauf kurz vorstellen möchte. 

  • Der Verbrauch im Leerlauf war (mir) noch zu hoch. Dieses wird durch die Grafikkarte verursacht, die ohne Aufgabe Bereits ca. 9 Watt von 24 Watt Gesamtleistung benötigt.
  • Es gibt ein neues Beta-BIOS für den A300 (A3.60H). Im Zeitraum zwischen dem ersten Post und dem Beta-BIOS habe ich einen Downgrade auf BIOS Version 1.20 vorgenommen. Der Ryzen 2400G konnte damit seine volle Stärke ausspielen. Auch die Einstellung der TDP funktioniert nachweislich mit der Version (Auslieferungszustand meines A300 ist Version 3.50). Mit Version A3.60H scheint ein ähnliches Leistungsniveau möglich zu sein. Die Einstellung des TDP funktioniert aber noch nicht wieder.
  • Wie bereits bei meinem Heimserver sollte der PC in der Lage sein, seinen eignen Stromverbrauch zu überwachen. realisiert wurde dies mit einem Adafruit M4 Feather Express, zwei INA260 und einem Touchscreen. Um die Grafikkarte separat steuern zu können, wurden noch zwei Relays eingebaut.
  • Die beiden Noctua Lüfter auf der Grafikkarte konnten noch weiter gedrosselt werden. Bei leicht gesenktem Powerlimit reichen 40-45% maximale Drehzahl aus, um die Karte unter Last kühl zu halten. Der Noctua NH-D9L kühl das jetzt die CPU sehr gut. Insgesamt verläuft der Luftstrom dabei jetzt horizontal, und nicht vertikal wie beim Original. Als positiver Nebeneffekt bleiben jetzt auch die Spannungswandler kühl. Der Kühlkörper der Spannungswandler lag vor dem Umbau praktisch am heißesten Punkt im Luftstrom.
Abbildung 9: Das zerlegte Gehäuse.
Der Aufbau im Detail

Der Mainboard-Schlitten und die hintere Blende sind die letzten Teile des Original Gehäuses. Auf dem Bild sieht man sehr gut die Stromversorgung. Unterhalb der 2.5 mm Buchse liegt der Anschluss für das 12 V Netzteil der Grafikkarte (Laptop-Netzteil). Eine Ader wird nach vorne zum Sensor für die Stromstärke geführt. Das Massekabel ist 180° versetzt wieder aufgelötet und wird gleich nach Aussen geführt. Nach dem das Kabel vom Sensor zurückgeführt wurde finden beide Ihren Anschluss in der Wago-Klemme. Natürlich sind die Adern entsprechend dimensioniert, dass die Leistung des Netzteiles ohne Brandgefahr transportiert werden kann. Die Konstruktion ist für GPU's bis ca. 130 - 150 Watt TPD geeignet. Mehr würde ich dem Netzteil auch nicht zutrauen. Die Sensoren für die Stromstärke schaffen je 15 A (180 - 228 Watt je nach Leitung). Um die Stromaufnahme vom Mainboard messen zu können, habe ich das Anschlusskabel durchtrennt und ebenfalls eine Ader zum Sensor an das Frontpanel geführt.

Abbildung 10: Im Vergleich zur ersten Version habe ich den PCIe Slot noch mal neu zusammengelötet.

Im Vergleich zur ersten Version habe ich den PCIe Slot noch mal neu zusammengelötet. Ich hatte noch einen zweiten herumliegen, und der erste Versuch machte mir keinen so guten Eindruck (für den Dauerbetrieb).
Der USB Port des Mainboard (Header oben links) wird zu einen zum Adafruit M4 Express, zum anderen an einen leeren Anschluss geführt. Das "Ardunio" Board ist also intern dauerhaft mit dem USB Port verbunden.

Abbildung 11: Oberseite ohne montierte Grafikkarte.

Wie man sieht ist eine grosse Fläche unterhalb der Karte ausgeschnitten. Dies soll verhindern, dass sich dort warme Luft sammelt. Der CPU Kühler sollte die Luft unter der Grafikkarte genügend bewegen. Die Grafikkarte selber ist nur an den beiden Gewindenieten angeschraubt. Die restlichen Nieten hängen ausschliesslich an der GPU bzw. dem PCIe Port und dienen als Abstandshalter.

Abbildung 12: Der M4 Express (Arduino, Circuit-Python Board) ist auf einem Touchscreen-Modul montiert.
Arduino-Steuerung

Direkt auf dem Sandwich ist noch ein kleines Relay-Modul montiert. Dieses dient zum Anschalten und Herunterfahren. Parallel dazu ist auch ein regulärer Taster verbunden. Die 2.5 mm Klinkenbuche ist zum Anschluss des grossen Relays (230 V,10 A), um das Netzteil der GPU schalten zu können. Ich habe mich für diese Variante entschieden, weil die Stromstärke auf der 12 V Seite sehr hoch sein kann, und grössere Relays meist nicht mehr mit 3.3 V schaltbar sind. Zu dem liegen die Schutzmechanismen des Netzteiles jetzt vor meinem Relay.
Am Frontpanel oben links sieht man auch die beiden Sensoren für den Verbrauch. Diese sind über SCA, SCL, 3V und GND angeschlossen. Die Kabel dafür sind parallel angeschlossen und enden Zwischen den Boards.
Bei den Sensoren handelt es sich um Adafruit's INA260 Boards. Diese sind zwar nur für Gleichspannung geeignet, dafür sehr genau und einfach zu verwenden (Adresse ist anpassbar).
Auf der Rückseite des TFT Modules ist praktischerweise für jeden Pin noch ein Pad zu löten verfügbar (sehr schön zu sehen hier). Auch auf dem Bild zu sehen, ist der zusätzliche Schalter am Frontpanel. Dieser unterbricht die Stromversorgung für die Schaltung (Falls das Display Nachts stört). Die beiden offenen Drähte auf der Rückseite sind für das 19 V Netzteil des A300. Diese musste ich trennen damit sich das Gehäuse ohne Schreibtisch bewegen lässt. im Betrieben werden diese ordentlich verschraubt.

Arduino-Programm
Funktionsumfang
  • Wechsel von APU/GPU- oder APU-Modus (ohne umstecken des Monitors)
  • Messung des Stromverbrauchs von Mainboard (CPU, Platten und USB-Verbraucher), sowie der GPU
  • Überwachung von RAM, CPU und GPU mit Ausgabe auf dem Display
  • Ein paar nette Animationen
  • Touch-Eingabe ohne Verzögerung

Das Programm erkennt ob der PC gestartet ist, und passt die Sequenz der Relays entsprechend an. Der Zustand des PCs wird über den Stromverbrauch beurteilt (an/aus).

Realisierung
  • Das Bild besteht aus 14 Teilen (1x Alles, 13x "Abdeckungen")
  • Die Animationen bestehen aus 15, 8, 14 bzw. 2 Bildern
  • Alle Aktionen werden zeitgesteuert ausgelöst, so bleibt der Touchscreen auch während auf die nächste Aufgabe (z.B. nächsten Frame einer Animation abwarten) nutzbar.
  • Über Open Hardware Monitor werden die Werte von RAM, CPU und GPU generiert und als .JSON bereitgestellt.
  • Ein Python-Script schickt die Daten regelmässig über die USB/Serielle-Schnittstelle des Entwicklungsboards an den "Arduino".
  • Der Stromverbrauch wird jede Sekunde über zwei INA260 Sensoren ermittelt, umgerechnet und als Watt ausgegeben.

Informationen zur PC-Python-Arduino Brücke: https://github.com/leots/Arduino-PC-Monitor
Den Code teile ich gerne, jedoch kann ich keine Garantie für Schäden übernehmen. Der Code wird nicht publiziert. Der Urheberrechtsanspruch einzelner Grafiken und Codeteile ist nicht vollständig geklärt.

Das Upgrade

Im Frühjahr 2020 war der Ryzen PRO 4750G bei einem Online-Händler bestellbar. Da es schon ein Beta-Bios mit Unterstützung für diesen Prozessor gab zögerte ich nicht lange und spendierte meinem A300 den aktuell schnellsten Prozessor für die Plattform. Ab diesem Zeitpunkt schlägt in dem kleinen Gehäuse ein echter 8-Kerner neben 32 GB RAM und 3 Festplatten. Die Geforce 1660 Ti verhilft dem Setup weiterhin zu einer guten 3D-Leistung mit vergleichsweiser kleiner Stromaufnahme.  

Für die Bildbearbeitung hatte ich in meinem Computern bis jetzt immer einen RAID-1 Verbund für mein Arbeitsverzeichnis. Dieses habe ich im Laufe des Jahres auf dem A300 realisiert. Über Sinn und Unsinn einer sollen Lösung lässt sich sicher streiten. Jedoch konnte ich ein der Vergangenheit schon einen grossen Schäden an einem Laufwerk abfangen. Sicher könnte ich öfters Backups machen... 

Ab hier war immer noch Luft nach Oben, so wanderten im gleichem Atemzug auch noch 64 GB RAM mit 3200 Mhz in das System. Danach ging es erst einmal Bergab.

Das Downgrade

Der Einbau des Speichers erwies sich Anfangs als schlechte Idee. Wie ich später herausfinden sollte macht die Kombination aus Ryzen 4750G und DDR4 Speicher mit mehr als 2666 Mhz die Stabilität des Systemes zu einer Lotterie. Nach dem Durchprobieren von so ziemlich jeder Kombination aus XMP-Profil, TDP-Target und Bios-Version habe ich erst einmal das 32 GB Pärchen wieder eingebaut. Der ursprünglich verwendete Ryzen 2400G hatte in der Zwischenzeit einen neuen Platz in meinem Heimserver gefunden und läuft mit übertriebenen 64 GB Arbeitsspeicher.  

Ungefähr Anfang November 2020 hat mit Setup angefangen, nach längeren Spiel-Einlagen ohne Vorwarnung einzufrieren. Da das System ein halbes Jahr ohne Probleme lief, habe ich die Abstürze erst mal auf die Spiel-Engine und die Treiber geschoben. Auch den Arbeitsspeicher hatte ich wieder in Verdacht. Als die Probleme jedoch mit einer grossen Regelmässigkeit auftraten bin ich der Sache genau nachgegangen. Es stellte sich heraus dass, das Netzteil der GPU (192 Watt, ein paar Jahre alt) wohl die beste Zeit hinter sich hatte. Je nach Nutzung wurde dieses ziemlich warm. Da es sich bei dem Netzteil um ein geschlossenes handelt, war nach der Abschaltung immer erst einmal Schluss für ein paar Stunden. Durch Tests mit reduzierter Leistung habe ich herausgefunden dass, das Netzteil nicht mal mehr 80 Watt dauerhaft (wahrscheinlich 80-120 Watt mit Lastspitzen) bereitstellen kann. 

Um das System wieder problemlos lauffähig zu machen musste ein neues Netzteil her. Da ich nicht wieder auf ein Tischnetzteil setzen wollte (und Tischnetzteile in der Leistungsklasse rar sind) wurde es ein Schaltnetzteil. Variante 4 war damit geboren.

Variante Nummer 4 - More Power

Abbildung 13: Variante 4 noch ohne optische Anpassungen mit komplett integrierten Netzteilen.
Idee
Neue Bauteile