3D Druck - 2 Jahre mit einem neuen Hobby

Über zwei Jahre ist es nun schon her, dass ich ein neues Hobby entdeckt habe (Danke an Papa und die ganze Familie, die das erst ermöglicht haben). Es war zu Weihnachten 2015 als ich ein ganz besonderes Geschenk unter dem Christbaum gefunden habe: ein Bausatz für einen Velleman Vertex K8400 3D Drucker. Freilich musste ich mich noch ein wenig gedulden, aber am 27.12.2015 habe ich damit begonnen das "Ding aus einer anderen Dimension" zusammen zu bauen.

 

Seit damals ist viel passiert. Ich erinnere mich an die ersten Ausdrucke... ich, keine Ahnung von 3D Druck und viel zu aufgeregt um stundenlang irgendwelche Tutorials zu lesen, habe einfach herumprobiert. "Try and error"  ist eine recht einprägsame Lernmethode. Im Internet fand ich interessante Projekte (Open RC und ähnliches), Thingiverse ist eine wahre Fundgrube für 3D Modelle und schließlich begann ich sogar mit TinkerCAD eigene kleine Modelle zu entwickeln.

Das schon erwähnte Open RC Projekt hat es mir besonders angetan. So entstand ein Formel 1 Auto (in gelb und schwarz gehalten, in Anlehnung an die aktuellen Farben des Renault F1). Als es daran ging Reifen für das Fahrzeug zu machen, musste ich leider feststellen, dass das mit meinem Drucker nur schwer möglich sein wird. Reifen druckt man aus flexiblem Material, da der K8400 das Filament zum Druckkopf schiebt (Bowden Setup), könnte das aufgrund der geringeren Festigkeit des Filaments problematisch werden. Einfacher geht das mit Druckern, die das Filament zum Druckkopf ziehen (Direct Drive), und nur das letzte Stück in den Druckkopf hinein schieben. Daher endete das Vorhaben mit folgendem Status:

Im Februar 2017 startete dann ein "Youtuber" (Thomas Sanladerer) ein Projekt in dem er zeigte, wie man sich mit möglichst geringen Kosten selbst einen 3D Drucker bauen kann. Es wurde ein Prusa i3 MK2 geklont (das Gerät erhielt den sprechenden Namen "Dolly"). Natürlich war ich gleich voll mit dabei. Teile bestellen aus allen Ländern dieser Welt, aus Kostengründen das meiste aus China, aber auch Qualitätsteile aus England, Deutschland und Österreich). Im März begann ich damit die Teile zu ordern, bis alles da war es bestimmt schon später April. Ich begann damit, den Drucker nachzubauen. Was ich dabei alles gelernt habe ist von unschätzbarem Wert. Wenn man einen Drucker von Grund auf mechanisch, elektronisch und softwaretechnisch selbst konfigurieren muss, weiss man hinterher viel besser, an welchen Rädern und Schrauben man drehen muss, um bestimmte Dinge zu erreichen.

 

Im Juli 2017 war es dann endlich so weit und ich konnte die ersten Ausdrucke mit meinem neuen 3D Drucker machen. Das Ergebnis war von Anfang an recht anschaulich, wesentlich besser als ich es mir jemals erwartet hätte:

 

Da dieser Selfmade-Drucker ein Direct Drive Drucker ist, war es mir nun auch möglich, flexible Materialien zu drucken. Ich "traute" mich aber trotzdem relativ lange nicht drüber, warum genau kann ich nicht sagen, weil was soll schon großartiges passieren? Vor ein paar Tagen war es dann endlich so weit, ich benötigte insgesamt 7 Versuche um 4 Reifen zu drucken, mein Respekt war nicht unbegründet. Wenn das Drive Gear und die Öffnung zum Druckkopf nicht exakt in einer Linie liegen, kann das Material nicht hineingeschoben werden und es kommt zu einem Stau. Aber am Ende hat es dann doch ganz gut funktioniert. Das Ergebnis ist ein komplettiertes Open RC F1 Auto:

 

Mit Elektronik wird das Auto vorerst nicht ausgestattet, da es geschuldet meinem anfänglichem Nicht-Wissen etwas verzogen ist. Vielleicht mal später, wenn ich ein neueres Modell gedruckt habe (das ursprüngliche Modell ist aus dem Jahr 2015, inzwischen gibt es Upgrades für die 2017- und 2018-Version der Formel 1 Autos).

Windows Update ETLs manuell dekodieren

Seit Windows 10 werden die Logfiles vom Windows Update Service nicht mehr in einfach lesbare Log-Dateien sondern in sogenannte Event Trace Logfiles (ETL) geschrieben. Wieder einmal eine ganz tolle Idee von Microsoft, die besonders dann hilfreich ist wenn es ans Troubleshooten von Windows Update Problemen geht (die soll es ja angeblich hin und wieder geben).

Die ETL Files haben 2 eklatante Nachteile:

  • man kann nicht mehr live (mittels tail oder anderen Tools) mitlesen
  • lokal gibt es das Powershell Cmdlet "Get-WindowsUpdateLog", welches die ETLs in ein lesbares Log dekodieren und auf den Desktop legen. Leider ist man nicht immer lokal unterwegs, schon gar nicht wenn man im Enterprise Umfeld tätig ist.

Manuelles dekodieren ist möglich, aber natürlich nicht so einfach wie man es gerne hätte. Dazu muss man wie folgt vorgehen:

Die Windows Update ETL Files befinden sich auf C:\Windows\logs\WindowsUpdate:

Mittels tracefmt.exe können diese ETLs nun in eine lesbares Logfile dekodiert werden:

tracefmt.exe -o windowsupate.log WindowsUpdate.20180308.103756.226.8.etl -r c:\Symbols

Möchte man mehrere ETLs auf einmal dekodieren, einfach durch Leerzeichen getrennt die entsprechenden Dateinamen angeben.

Das Ergebnis ist ein (halbwegs vernünftig) lesbares Logfile, wie man es von früheren Windows Versionen gewöhnt ist:

[0]0DA8.25DC::03/07/2018-14:37:26.883 [WUTraceLogging]{"name":"Misc","Info":"Got WSUS Client/Server URL: \"http://wsus.meine.firma.at/ClientWebService/client.asmx\""}
[0]0DA8.25DC::03/07/2018-14:37:26.900 [WUTraceLogging]{"name":"ProtocolTalker","Info":"OK to reuse existing configuration"}
[0]0DA8.25DC::03/07/2018-14:37:26.900 [WUTraceLogging]{"name":"ProtocolTalker","Info":"Existing cookie is valid, just use it"}
[0]0DA8.25DC::03/07/2018-14:37:26.900 [WUTraceLogging]{"name":"ProtocolTalker","Info":"PTInfo: Server requested registration"}
[0]0DA8.25DC::03/07/2018-14:37:26.916 [WUTraceLogging]{"name":"Misc","Info":"Got WSUS Reporting URL: \"http://wsus.meine.firma.at/ReportingWebService/ReportingWebService.asmx\""}
[0]0DA8.25DC::03/07/2018-14:37:26.916 [WUTraceLogging]{"name":"IdleTimer","Info":"WU operation (CLegacyEventUploader::HandleEvents) started; operation # 102; does use network; is at background priority"}
[0]0DA8.25DC::03/07/2018-14:37:26.916 [WUTraceLogging]{"name":"WebServices","Info":"Auto proxy settings for this web service call."}
[0]0DA8.25DC::03/07/2018-14:37:27.241 [WUTraceLogging]{"name":"IdleTimer","Info":"WU operation (CLegacyEventUploader::HandleEvents, operation # 102) stopped; does use network; is at background priority"}
[0]0DA8.246C::03/07/2018-14:47:27.250 [WUTraceLogging]{"name":"Agent","Info":"Earliest future timer found: "}
[0]0DA8.246C::03/07/2018-14:47:27.250 [WUTraceLogging]{"name":"Agent","Info":"    Timer: 29A863E7-8609-4D1E-B7CD-5668F857F1DB, Expires 2018-03-08 09:14:12, not idle-only, not network-only"}
[0]0DA8.13E0::03/07/2018-14:47:28.253 [WUTraceLogging]{"name":"Misc","Info":"CSusClientGlobal::DoServicePreShutdown"}
[0]0DA8.13E0::03/07/2018-14:47:28.253 [WUTraceLogging]{"name":"IdleTimer","Info":"Idle timer disabled in preparation for service shutdown"}
[0]0DA8.13E0::03/07/2018-14:47:28.253 [WUTraceLogging]{"name":"Misc","Info":"WUTaskManager uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.253 [WUTraceLogging]{"name":"Agent","Info":"Earliest future timer found: "}
[0]0DA8.13E0::03/07/2018-14:47:28.253 [WUTraceLogging]{"name":"Agent","Info":"    Timer: 29A863E7-8609-4D1E-B7CD-5668F857F1DB, Expires 2018-03-08 09:14:12, not idle-only, not network-only"}
[0]0DA8.13E0::03/07/2018-14:47:28.259 [WUTraceLogging]{"name":"Misc","Info":"CreateSessionStateChangeTrigger, TYPE:2, Enable:No"}
[0]0DA8.13E0::03/07/2018-14:47:28.259 [WUTraceLogging]{"name":"Misc","Info":"CreateSessionStateChangeTrigger, TYPE:4, Enable:No"}
[0]0DA8.13E0::03/07/2018-14:47:28.266 [WUTraceLogging]{"name":"Misc","Info":"Agent uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.269 [WUTraceLogging]{"name":"Misc","Info":"Reporter uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.269 [WUTraceLogging]{"name":"Misc","Info":"network cost manager uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.269 [WUTraceLogging]{"name":"Misc","Info":"Eventer uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.269 [WUTraceLogging]{"name":"Misc","Info":"ServiceManager uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.270 [WUTraceLogging]{"name":"Misc","Info":"PersistentTimeoutScheduler uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.270 [WUTraceLogging]{"name":"Misc","Info":"datastore uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.297 [WUTraceLogging]{"name":"Misc","Info":"setting cache uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.297 [WUTraceLogging]{"name":"Misc","Info":"security checker uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.297 [WUTraceLogging]{"name":"Misc","Info":"Test Hook uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.297 [WUTraceLogging]{"name":"Misc","Info":"IdleTimer uninit"}
[0]0DA8.13E0::03/07/2018-14:47:28.299 [WUTraceLogging]{"name":"Shared","Info":"* END * Service exit Exit code = 0x240001"}