<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Application on Sovol on mainline Klipper</title><link>https://sovol.lexfrei.dev/zero/application/</link><description>Recent content in Application on Sovol on mainline Klipper</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://sovol.lexfrei.dev/zero/application/index.xml" rel="self" type="application/rss+xml"/><item><title>KIAUH stack</title><link>https://sovol.lexfrei.dev/zero/application/kiauh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sovol.lexfrei.dev/zero/application/kiauh/</guid><description>&lt;h1 id="the-application-stack-via-kiauh"&gt;The application stack via KIAUH&lt;a class="anchor" href="#the-application-stack-via-kiauh"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Everything above Klipper — Moonraker, Mainsail, Crowsnest — is already stock upstream, so the fastest clean install is &lt;a href="https://github.com/dw-0/kiauh"&gt;dw-0/kiauh&lt;/a&gt;. Clone it and install, in order: &lt;strong&gt;Klipper, Moonraker, Mainsail, Mainsail-Config, Crowsnest.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Point Klipper&amp;rsquo;s host at the same &lt;code&gt;master&lt;/code&gt; checkout your MCUs were built from, with a venv built from its &lt;code&gt;requirements.txt&lt;/code&gt;, and set &lt;code&gt;[update_manager klipper] channel: dev&lt;/code&gt; in &lt;code&gt;moonraker.conf&lt;/code&gt; so it tracks &lt;code&gt;master&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="two-post-install-fixes"&gt;Two post-install fixes&lt;a class="anchor" href="#two-post-install-fixes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Both come from experience on this board:&lt;/p&gt;</description></item><item><title>Klipper config</title><link>https://sovol.lexfrei.dev/zero/application/klipper-config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sovol.lexfrei.dev/zero/application/klipper-config/</guid><description>&lt;h1 id="translating-the-config-to-mainline"&gt;Translating the config to mainline&lt;a class="anchor" href="#translating-the-config-to-mainline"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The vendor &lt;code&gt;printer.cfg&lt;/code&gt; doesn&amp;rsquo;t run as-is on upstream Klipper — a few sections depend on vendor-only firmware behaviour. Translate these off the vendor config; the rest carries over.&lt;/p&gt;
&lt;h2 id="eddy-on-software-i2c"&gt;Eddy on software I2C&lt;a class="anchor" href="#eddy-on-software-i2c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The vendor ran the LDC1612 on hardware &lt;code&gt;i2c2&lt;/code&gt;, but only because its F103 firmware carries STM32F1 hardware-I2C errata workarounds that mainline lacks; on mainline, hardware &lt;code&gt;i2c2&lt;/code&gt; throws &lt;code&gt;START_NACK&lt;/code&gt; → shutdown. Use bitbang instead:&lt;/p&gt;</description></item><item><title>Plugins</title><link>https://sovol.lexfrei.dev/zero/application/plugins/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sovol.lexfrei.dev/zero/application/plugins/</guid><description>&lt;h1 id="plugins-and-venv-extras"&gt;Plugins and venv extras&lt;a class="anchor" href="#plugins-and-venv-extras"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The add-ons this machine actually runs, on top of the stock KIAUH stack.&lt;/p&gt;
&lt;h2 id="scipy--required-by-the-eddy-probe"&gt;scipy — required by the eddy probe&lt;a class="anchor" href="#scipy--required-by-the-eddy-probe"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Install &lt;code&gt;scipy&lt;/code&gt; into the Klipper venv:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/klippy-env/bin/pip install scipy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Without it the eddy probe calibration fails. If PyPI stalls when downloading from the board, sideload the wheels — see &lt;a href="https://sovol.lexfrei.dev/zero/troubleshooting/"&gt;troubleshooting&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="sovol_codes--the-knob-screen-codes"&gt;sovol_codes — the knob-screen codes&lt;a class="anchor" href="#sovol_codes--the-knob-screen-codes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The vendor firmware shows numeric codes on the knob screen (&lt;code&gt;101&lt;/code&gt;/&lt;code&gt;103&lt;/code&gt;, the &lt;code&gt;60+&lt;/code&gt; shutdown range); mainline shows human-readable messages. To keep the codes on upstream Klipper, install the opt-in &lt;code&gt;sovol_codes.py&lt;/code&gt; plugin:&lt;/p&gt;</description></item><item><title>Calibration</title><link>https://sovol.lexfrei.dev/zero/application/calibration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sovol.lexfrei.dev/zero/application/calibration/</guid><description>&lt;h1 id="calibrate-and-verify"&gt;Calibrate and verify&lt;a class="anchor" href="#calibrate-and-verify"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;With both MCUs on mainline, the config translated, and plugins in, calibrate the eddy probe and motion, then prove it with plastic.&lt;/p&gt;
&lt;h2 id="eddy-and-tap"&gt;Eddy and tap&lt;a class="anchor" href="#eddy-and-tap"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Run in order, &lt;code&gt;SAVE_CONFIG&lt;/code&gt; after each:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;LDC_CALIBRATE_DRIVE_CURRENT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PROBE_EDDY_CURRENT_CALIBRATE&lt;/code&gt; — builds the freq→height table&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PROBE_EDDY_CURRENT_TAP_CALIBRATE&lt;/code&gt; — sets &lt;code&gt;tap_threshold&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="belt-tension"&gt;Belt tension&lt;a class="anchor" href="#belt-tension"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Aim for ~110 Hz plucking the XY belts over their 150 mm span. (The Z belt is factory ~137 Hz, but that&amp;rsquo;s a 21.5 cm span — a different length, so don&amp;rsquo;t compare the two numbers.) Tighter than that only cleans up the shaper graphs on paper and adds ringing. Klipper&amp;rsquo;s belt &lt;em&gt;similarity&lt;/em&gt; test is unreliable here — the head-mounted accelerometer is noisy at standstill from motor hold-current buzz, so its readings swing run to run. Check tension by ear or a phone tuner instead (Android works; iPhone noise suppression corrupts the reading).&lt;/p&gt;</description></item><item><title>Extras</title><link>https://sovol.lexfrei.dev/zero/application/extras/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sovol.lexfrei.dev/zero/application/extras/</guid><description>&lt;h1 id="extras--optional-hardware-and-practices"&gt;Extras — optional hardware and practices&lt;a class="anchor" href="#extras--optional-hardware-and-practices"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Additions that are not part of the core migration but earned their place on a real machine.&lt;/p&gt;
&lt;h2 id="usb-wifi-dongle-when-the-onboard-radio-dies"&gt;USB WiFi dongle (when the onboard radio dies)&lt;a class="anchor" href="#usb-wifi-dongle-when-the-onboard-radio-dies"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The onboard RTL8189FTV is a known single point of failure — on this unit it died of PSU-inflicted causes (&lt;code&gt;mmc: error -110 whilst initialising SDIO card&lt;/code&gt; on every boot, on stock firmware too, through ~21 attempts across two kernel stacks; software revival — power-cycling the chip via its GPIO, longer &lt;code&gt;post-power-on-delay-ms&lt;/code&gt;, lower SDIO clock — changes nothing). If you see that signature, stop debugging and plug a dongle into one of the board&amp;rsquo;s USB-A ports.&lt;/p&gt;</description></item></channel></rss>