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 ©
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>