undeadly_org.html - webdump_tests - Testfiles for webdump
 (HTM) git clone git://git.codemadness.org/webdump_tests
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
       undeadly_org.html (11601B)
       ---
            1 <!DOCTYPE html>
            2 <html lang="en">
            3 <head>
            4 <meta charset="UTF-8">
            5 <meta name="viewport" content="width=device-width, initial-scale=1">
            6 <link rel="stylesheet" href="themes/default.css" title="default/standard theme">
            7 
            8 
            9 <title>3D printing on OpenBSD? Yes, that’s a thing!</title>
           10 </head>
           11 <body>
           12 <header id="page_hdr">
           13 
           14 
           15 
           16 
           17 
           18 <div id="logo">
           19 <a href="/cgi?action=front"><img src="images/MangaRamblo_25_x.png" alt="Front page"></a>
           20 </div>
           21 
           22 <div id="search">
           23 <form action="https://undeadly.org/cgi" method="post" autocomplete="off" autocapitalize="none">
           24 <input type="hidden" name="action" value="search">
           25 <input id="f_q" type="text" name="q" required>
           26 <input type="submit" title="We canardly search!" name="submit" value="Search site">
           27 </form>
           28 </div>
           29 
           30 <p class="branding">OpenBSD Journal</p>
           31 
           32 <nav id="menubar">
           33 <p><a href="/cgi?action=front">Home</a>
           34 <a href="/cgi?action=archive">Archives</a>
           35 <a href="/cgi?action=about">About</a>
           36 
           37 <a href="https://undeadly.org/cgi?action=submit">Submit Story</a>
           38 <a href="https://undeadly.org/cgi?action=register">Create Account</a>
           39 <a href="https://undeadly.org/cgi?action=login">Login</a>
           40 </p>
           41 </nav>
           42 
           43 
           44 <h1><abbr>3D</abbr> printing on OpenBSD? Yes, that’s a thing!</h1>
           45 </header>
           46 
           47 
           48 <main>
           49 <div id="primary">
           50 <div class="story">
           51 <div class="article_header">
           52 <p class="attrib">Contributed by
           53 <a href="https://www.darwinsys.com/">Ian Darwin</a>
           54 on <time datetime="2023-09-13T04:43:06Z">2023-09-13</time>
           55 from the 'What else can you do with it?' dept.</p>
           56 </div>
           57 <p>Can you really do 3D printing from OpenBSD? Cue suspenseful music
           58 whilst I formulate my answer, which is: Yes.</p>
           59 <p>If you aren’t familiar with the 3D printing process, it’s divided
           60 into several steps, vaguely analogous to writing, compiling and running
           61 a program in a compiled language.</p>
           62 
           63 <ul>
           64 <li><em>Design (CAD)</em> The design tool gets you from an idea to an
           65 exact specification - like writing and editing a source code file. The
           66 most common format for these is
           67 <a href="https://en.wikipedia.org/wiki/STL_(file_format)">STL</a>,
           68 standing for stereolithography,
           69 what 3D printing was originally called.</li>
           70 <li><em>Slicing - convert to layers</em> The “slicing” converts the file
           71 from STL to‘<a href="https://en.wikipedia.org/wiki/G-code">g-code</a>’,
           72 analogous to compiling a program. These codes
           73 represent each layer with a set of movements for the 3d print head to
           74 follow. The g-code format originated decades ago for use in numerical
           75 controlled machining, and the pioneers of 3D printing wisely adopted and
           76 adapted this format for the needs of 3D printers.</li>
           77 <li><em>Download to 3D printer</em> The downloading is analogous to
           78 loading a compiled program into a program that can run it, like qemu or
           79 the Java runtime. The g-code is interpreted by the 3D printer to make the
           80 finished article.</li>
           81 </ul>
           82 
           83 <figure>
           84         <img src='/features/2023/09/3dp_screenshot.png' style="width:800px" alt="Busy screenshot of all three steps">
           85         <figcaption>Fig. 1 - A CAD tool, a slicer, and a downloader.</figcaption>
           86 </figure> 
           87 
           88 <h2>Design</h2>
           89 <p>OpenSCAD has been in ports for quite some time. At h2k23 I worked on
           90 a port of another 3D CAD tool, solvespace, which I imported shortly
           91 after. These are both “parametric” tools, e.g., specify that these two
           92 parts must meet at exactly 45 degrees, that this part shall be so many
           93 units wide, etc. OpenSCAD also has a very nice menu system allowing you
           94 to edit the parameters of the job. I’m using this to make labels for a
           95 club I belong to, working from
           96 <a href='https://www.printables.com/model/224439'>
           97 Xavier Faraudo’s versatile name tag kit</a>.
           98 Having configured the project as I want it, I can just open
           99 the file, enter the member’s first and last names, and hit
          100 <code>Render</code>. Moments later it spits out an STL file, ready for
          101 slicing.</p>
          102 <p>Some people use Blender (which has been in ports for ages) to do 3D
          103 modelling. There are also web-based design tools such as Tinkercad,
          104 which is easy to use and free to use, but may be a “portal drug” to the
          105 proprietary CAD software sold by Tinkercad’s sponsor, Autodesk.</p>
          106 
          107 <h2>Slicing</h2>
          108 <p>While at h2k23, I was in touch by email by Johannes Tishman to work
          109 on a port of 
          110 <a href='https://prusaslicer.com'>PrusaSlicer</a> 2.6.1. There are several dependencies that make
          111 it harder to port to 2.6.1 compared with 2.5.2. I did some work on the
          112 replacement for <code>oce</code> needed for 2.6.1, but that wound down
          113 inconclusively.</p>
          114 <p>Then in Sept 2023, Renato Aguiar circulated his completed port of
          115 PrusaSlicer 2.5.1. I needed to try this out at once! I took the 45
          116 minute print job formatted with openscad (see above under
          117 <em>Design</em>), sliced it with Prusaslicer, and it printed fine. All
          118 on OpenBSD. 
          119 <p>
          120 With feedback from Johannes and an OK from jcs@, I committed
          121 this port into the tree in mid-September, 2023. This was the last major
          122 step in completing the ability to do 3D printing, since the downloading
          123 step (below) doesn’t need any new software to be ported.</p>
          124 <p>Note that, despite being from Prusa, this software can slice and dice
          125 STL code for almost any modern printer, either FDM (filament) or SLA
          126 (resin). It comes with profiles for a large range of printers, but even
          127 if your printer isn’t already known, you can probably configure it to
          128 work. In fact, some Prusa competitors like Bambu Labs make their own
          129 slicers… based on PrusSlicer. 
          130 PrusaSlicer in turn was based on an earlier slicer called Slic3r.
          131 Open source works that way.
          132 </p>
          133 
          134 <h2>Downloading</h2>
          135 <p>The download step could be completed by sneakernet (putting the file
          136 on a USB stick and walking it over to the printer), but that’s pretty
          137 low bandwidth. There are at least two better ways.</p>
          138 <p>There’s a free open source project called
          139 <a href="https://octoprint.org/">OctoPrint</a> that provides great downloading and
          140 monitoring of most 3D printers. This software can be run on a Raspberry
          141 PI (where it’s called OctoPI), connecting to most brands of printers via
          142 USB. There are also
          143 <a href="https://octoprint.org/download">downloads for other platforms</a>
          144 such as Android. The standard version is controlled by a web
          145 browser like Firefox on your desktop, and is used for sending files to
          146 your printer, starting and monitoring them, etc.</p>
          147 <p>With a Prusa MK4 printer, you don’t even need the Raspberry PI. Prusa
          148 printer’s firmware includes a built-in web server and a web app called
          149 PrusaLink. This is invoked from your desktop just by giving the
          150 printer’s Ethernet or WiFi IP4 address as the browser URL, e.g.,
          151 <code>http://10.1.1.42/</code>. You log in with a username of
          152 <code>maker</code> and a password randomly chosen by the printer itself
          153 (available on the printer’s LCD screen). There’s no UI for changing this
          154 password, so one suspects it’s a hash of the printer’s serial number.
          155 I’ve used PrusaLink a lot over wired Ethernet and it has been
          156 reliable, though I've heard complaints from people using it over WiFi.</p>
          157 
          158 <h2>Happy Ending</h2>
          159 <p>I’m glad to say that we can now perform the whole 3D print workflow
          160 on OpenBSD. Use one of the design tools <code>openscad</code> or
          161 <code>solvespace</code> to generate the STL file. Use PrusaSlicer to
          162 generate the g-code. Then use prusalink or octoprint via FireFox or
          163 Chromium to feed the g-code from your desktop to the printer, and to
          164 start and monitor the printing. Everything you need is now in the
          165 OpenBSD ports tree, and will be included in packages soon, probably by
          166 the time you read this.</p>
          167 <p>Thanks to Johannes and Renato for work on PrusaSlicer, and to
          168 everyone else who helps to make OpenBSD usable as one’s all-in-one
          169 operating system.</p>
          170 
          171 <h2>Future Work</h2>
          172 <p>The next steps will probably be an upgrade of PrusaSlicer from 2.5.2
          173 to 2.6.1 - this brings major improvements - and the addition of
          174 additional cad tools, perhaps FreeCAD.</p>
          175 
          176 </div>
          177 <div class="x_cmds_status">
          178 <p><span class="x_cmds"><a href="https://undeadly.org/cgi?action=reply;sid=20230914075444">Reply</a>
          179 </span>
          180 </p>
          181 </div>
          182 <hr>
          183 
          184 </div>
          185 <div id="extras">
          186 
          187 <div class="extra">
          188 <h2>Latest Articles</h2>
          189 <ul><li><time datetime="2023-09-14">Thu, Sep 14</time><ul><li><b><time datetime="2023-09-14T07:54:44Z">07:54</time></b>
          190 <a href="/cgi?action=article;sid=20230914075444"><abbr>3D</abbr> printing on OpenBSD? Yes, that’s a thing!</a>
          191 (0)</li>
          192 </ul></li>
          193 <li><time datetime="2023-09-12">Tue, Sep 12</time><ul><li><b><time datetime="2023-09-12T09:47:27Z">09:47</time></b>
          194 <a href="/cgi?action=article;sid=20230912094727"><abbr>p2k23</abbr> Hackathon Report: Landry Breuil (<code>landry@</code>) on chasing memory corruptions</a>
          195 (0)</li>
          196 </ul></li>
          197 <li><time datetime="2023-09-10">Sun, Sep 10</time><ul><li><b><time datetime="2023-09-10T19:40:38Z">19:40</time></b>
          198 <a href="/cgi?action=article;sid=20230910194038"><abbr>p2k23</abbr> Hackathon Report: Jeremy Evans (<code>jeremy@</code>) on Ruby ports cleanup, database progress, and more</a>
          199 (0)</li>
          200 </ul></li>
          201 <li><time datetime="2023-09-09">Sat, Sep 09</time><ul><li><b><time datetime="2023-09-09T10:07:06Z">10:07</time></b>
          202 <a href="/cgi?action=article;sid=20230909100706">p2k23 Hackathon Report: Marc Espie (espie@) on a flurry of packages activity</a>
          203 (1)</li>
          204 </ul></li>
          205 <li><time datetime="2023-08-30">Wed, Aug 30</time><ul><li><b><time datetime="2023-08-30T05:24:02Z">05:24</time></b>
          206 <a href="/cgi?action=article;sid=20230830052402">Game of Trees 0.92 released</a>
          207 (3)</li>
          208 </ul></li>
          209 <li><time datetime="2023-08-29">Tue, Aug 29</time><ul><li><b><time datetime="2023-08-29T05:12:57Z">05:12</time></b>
          210 <a href="/cgi?action=article;sid=20230829051257">Keystroke timing obfuscation added to <code>ssh(1)</code></a>
          211 (6)</li>
          212 </ul></li>
          213 <li><time datetime="2023-08-10">Thu, Aug 10</time><ul><li><b><time datetime="2023-08-10T10:45:39Z">10:45</time></b>
          214 <a href="/cgi?action=article;sid=20230810104539">OpenSSH 9.4 released!</a>
          215 (0)</li>
          216 </ul></li>
          217 <li><time datetime="2023-08-07">Mon, Aug 07</time><ul><li><b><time datetime="2023-08-07T09:43:05Z">09:43</time></b>
          218 <a href="/cgi?action=article;sid=20230807094305">New routed <abbr>IPsec</abbr> <abbr>VPN</abbr> mode committed</a>
          219 (0)</li>
          220 </ul></li>
          221 <li><time datetime="2023-07-30">Sun, Jul 30</time><ul><li><b><time datetime="2023-07-30T11:07:11Z">11:07</time></b>
          222 <a href="/cgi?action=article;sid=20230730110711"><code>rpki-client</code> 8.5 released</a>
          223 (0)</li>
          224 </ul></li>
          225 </ul>
          226 
          227 </div>
          228 
          229 <div class="extra">
          230 <h2>Credits</h2>
          231 <p id="credits">Copyright &copy;
          232 <time datetime="2004">2004</time>-<time datetime="2008">2008</time>
          233 <a href="http://www.benzedrine.ch/dhartmei.html">Daniel Hartmeier</a>.
          234 All rights reserved.
          235 Articles and comments are copyright their respective authors,
          236 submission implies license to publish on this web site.
          237 Contents of the archive prior to
          238 <time datetime="2004-04-02">April 2nd 2004</time> as well as images
          239 and HTML templates were copied from the fabulous original
          240 <a href="http://web.archive.org/web/20010331150409/http://deadly.org/">deadly.org</a> with
          241 <a href="http://monkey.org/~jose">Jose</a>'s and
          242 <a href="mailto:jamesp@deadly.org">Jim</a>'s kind permission.
          243 This journal runs as <abbr>CGI</abbr> with
          244 <a href="https://man.openbsd.org/httpd.8">httpd(8)</a>
          245 on <a href="https://www.openbsd.org/">OpenBSD</a>, the
          246 <a href="/src/">source code</a> is
          247 <a href="http://www.opensource.org/licenses/bsd-license.php">BSD licensed</a>.
          248 undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]</p>
          249 
          250 </div>
          251 
          252 </div>
          253 </main>
          254 
          255 </body>
          256 </html>