<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Motor desync at spin-up→closed-loop handoff — regression from previous firmware]]></title><description><![CDATA[<h3>Setup: M0138-1 ESC</h3>
<pre><code>motor kV=650
running firmware `39.25`
spinup_type=1 (sinusoidal), spinup_bemf_comp=1, timing_advance=60, sense_advance=20, demag_timing=1
</code></pre>
<p dir="auto">already set per the low-kv tuning guide.</p>
<p dir="auto"><strong>Key finding: these same motors/ESCs/params run fine (no desync) on an older firmware version. Nothing in the mechanical setup or param file changed — only the firmware. That's why we don't think this is purely a spin-up/commutation tuning gap.</strong></p>
<p dir="auto">Reproduction (unloaded motor, bench):</p>
<p dir="auto">Constant RPM step from rest to 1000–1500 RPM: clean, stable.<br />
<img src="/assets/uploads/files/1785477214947-test62a-resized.png" alt="test62a.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Constant RPM step from rest to 3000 RPM: desyncs right at the spin-up→closed-loop handoff (~1.5s in, ~1000 RPM actual), gets stuck oscillating around ~640 RPM with elevated current, does not recover.</p>
<p dir="auto"><img src="/assets/uploads/files/1785477214743-test62d-resized.png" alt="test62d.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Threshold is consistent:<br />
clean below ~2400 RPM target, desyncs above ~2500 RPM target.<br />
A sinusoidal power sweep through the same RPM range shows intermittent desync but does recover — likely because the commanded value keeps sweeping back down, unlike a fixed high target.</p>
<pre><code>python3 voxl-esc-spin-step.py --id 2 \
    --power 20 --step-amplitude 10 --step-frequency 0.5 \
    --waveform-type sinusoidal --cmd-rate 500 \
    --temperature-limit 70 --timeout 5 \
    --skip-prompt true --enable-plot 1
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1785477436888-test60-resized.png" alt="test60.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">We've reproduced this on <code>39.RC11</code>, <code>39.25</code>, and <code>39.26</code></p>
<pre><code>python3 voxl-esc-spin.py --id 0 --rpm 2500 --timeout 2.5 --skip-prompt true --enable-plot 1
</code></pre>
<p dir="auto">The same command on the same motor/ESC does not desync on an older firmware version:</p>
<pre><code>Board      : version 42: ModalAi 4-in-1 ESC (M0138-1)
UID        : 0x2030303355465716005A003A
Firmware   : version  39.00, hash e4f576a0
Bootloader : version    184, hash e1c038de
</code></pre>
<h3>Questions for you:</h3>
<p dir="auto">Is there a known change between <code>39.00</code> and <code>39.RC11+</code> affecting the spin-up→closed-loop handoff, feedforward power calculation, or commutation timing near low RPM?</p>
<p dir="auto">Is there a known interaction between spinup_bemf_comp/spinup_power/spinup_time_ms and large commanded RPM steps arriving right as spin-up completes?</p>
<p dir="auto">Could you provide the <code>39.00</code> firmware binary?<br />
We can't find this version in the GitLab history and it's currently our fastest path to confirming this is a regression.</p>
<p dir="auto">What's the best way to debug this desync event more directly on our end — is there a debug/verbose logging mode on the ESC itself (e.g. raw BEMF/zero-crossing timing) beyond what the voxl-esc-tools plots already show?</p>
<p dir="auto">Happy to share full logs/plots if useful.</p>
<p dir="auto">Thanks,<br />
Finn</p>
]]></description><link>https://forum.modalai.com/topic/5357/motor-desync-at-spin-up-closed-loop-handoff-regression-from-previous-firmware</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 22:50:43 GMT</lastBuildDate><atom:link href="https://forum.modalai.com/topic/5357.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Jul 2026 06:02:52 GMT</pubDate><ttl>60</ttl></channel></rss>