Repository navigation
TinyG 450.03
Pre-release
Pre-release
TinyG 450.03 (edge-next)
Built from edge-next at 47cc6036. This build carries every fix made on edge-next since 450.02. It supersedes 450.02; expect follow-up builds as the bug hunt continues.
9 firmware fixes, 5 harness/test merges since 450.02.
Flashing
- Flash
tinyg-450.03.hexthrough the xboot bootloader: send{"boot":1}(or$boot=1), then
avrdude -p x192a3 -c avr109 -b 115200 -P <port> -U flash:w:tinyg-450.03.hex. Never use a chip erase (-e): it wipes the settings in EEPROM. - Back up settings first (
$$in text mode, or a JSON dump). The settings layout has not changed, so every saved setting carries over. SHA256SUMSin the release lists the checksums of the hex and elf.
Behaviour change for hosts: the probe report is now in machine millimetres (E028)
{"prb":{...}}andprbx..prbcnow give the machine position in mm, whatever G5x offset or G20 is active. On 450.02 they gave work coordinates in current units. This matches 440.x and g2core (GitHub #135).- A host that reads the report must treat it as machine mm on 450.03 and later.
eis still the result: 1 contact, 0 no contact.
Highlights
Long slow moves no longer PANIC at the end (N80, #293)
- A long move at a slow feed on a finely microstepped axis ended in PANIC "step rate exceeds DDA", and the board needed a reset. It was found with
G0 Y1460at 800 mm/min with Y at 1280 steps/mm. The runtime added up each segment's target in 32-bit floats; over about 21,900 segments the sum fell about 0.3 mm behind, and the snap onto the section's end point asked for about 400 steps in one segment of 250 ticks. - Earlier builds without the step-rate guard finished such a move with a silent lurch of that size. Segment targets are now measured from the section's start, so long moves stay exact.
Remapping a motor no longer makes the next move jump (N82, #294)
$Nmachanged at rest left that motor's step position on its old axis, so the next move panicked or lurched by the difference between the two axes. A remap now resyncs the steppers, as$Nsa,$Ntrand$Nmialready did (GitHub #138).
A feedhold finishes on tiny-step moves (N70)
- A hold on a block planned as tail only (short moves entered slowly, such as rotary files with tiny linear steps) could crawl for minutes in HOLD, and a
~sent meanwhile seemed to be ignored. The tail is now rebuilt as a real stop. The remainder of the move stays queued for the resume.
Homing can no longer set zero in the wrong place (N72)
- A switch edge during the zero backoff stopped the move early and zero was set there, so the axis homed short. Homing now checks that the backoff reached its target, and aborts if it did not.
Rotary motors: $Ntr in G20 (N71)
- For a motor mapped to A, B or C,
$Ntris degrees per revolution. A value set in G20 was multiplied by 25.4, so the rotary moved 25.4 times short (GitHub #139). Linear motors still convert.
Gantry motors stay in step after a $Npo change (N79, #295)
- A polarity change was taken for a reversal of travel and shifted that motor's step phase, which could leave it one step off its twin.
$Nponow only reverses the motor.
Smaller fixes
- N73: the homing clear move no longer reads a limit switch that does not exist.
- N74: stale AVR Studio 4 project files and leftover merge markers removed (GitHub #255). Atmel Studio 7 builds through
firmware/tinyg/tinyg.cprojand the Makefile are unchanged.
Throughput
The perfbench program runs about 0.2% slower at jerk 20 and about 1% slower at jerk 200 than on 450.02 (26.9 s against 26.86 s; 21.5 s against 21.26 s).
Fixes
- E028 The probe report gives the machine position in millimetres
- N70 A feedhold rebuilds a crawling stop tail as a real stop
- N71 A rotary motor's
$Ntris degrees in G20 too - N72 Homing sets zero only after the zero backoff reached its target
- N73 The homing clear move reads the limit switch only when there is one
- N74 Stale project files and merge markers removed
- N79 The substep accumulator is mirrored on a reversal of travel, not on a polarity change
- N80 Segment targets are measured from the section origin instead of a float running sum
- N82 A motor remap (
$Nma) resyncs the steppers
Test harness
- 5 merges of test work (
tests/hil,tests/host). Host tests now run as part of every merge, built with stricter array bounds checks. Correction: at this release the merge check ran 82 of the 146 host test files; the other 64 ran no tests. Eight of those no longer built. The repair was merged after this release (edge-nextfd4a7a99): every host test file now runs in the merge check. - 450.03 was soaked on three boards at
47cc6036, with real switches, step pulses and spindle outputs checked on the third board's logic analyser. No firmware failure occurred. Jobs that did not pass first time: two debugger-driven tests that passed on rerun, one logic-analyser start-up fault that passed on rerun, and one 84-minute laser file that hit the test time limit.
Known issues (open at release time)
- N78 (#297): a feedhold on short segments at low jerk gave a PANIC "step rate exceeds DDA" once, on a build before 450.03. It has not reproduced since. If it happens, reset the board and report the file.
- N81 (#296):
$p1csl,$p1csh,$p1wsland$p1wshread back rounded to whole numbers. The board uses the exact value; only the readback is rounded, so a settings backup can restore the wrong value for a fractional range such as S 0-1. Fixed after this release (edge-nextf73b35b6): these four settings and the spindle speed readoutspsreport three decimals, in JSON and text mode. - #298: a G10 sent at rest, immediately followed by more lines, can collide with the EEPROM write that saves it: serial input is lost, the board reports status 13 ("Buffer full non-fatal - input lost") and stops the job in ALARM. Nothing runs from damaged input. Wait for the G10's reply and pause 250 ms before the next line. An earlier version of this note said about 50 ms; lines 20 ms apart are lost, and 50 ms was never measured. Fixed after this release (edge-next
01fc17ee): a G10 at rest now waits up to 100 ms for more input before it saves, and saves later when a host keeps streaming. - N02: on slow arcs (radius 5-15 mm at F100) a line-mode host can see 5 s without a line reply or status report; line replies pausing during an arc is by design, the missing status reports are under investigation.
- N04: with hardware flow control (
ex=2) a feedhold while the host keeps streaming can leave the board unable to receive the resume. Use line mode (rxm=1) for jobs that use feedholds; a fix is planned. - E015: the planner can exceed the jerk setting on short moves at speed (GitHub #210, #262); parked for a planner redesign.
- G-code files must not carry
!inside comments: TinyG acts on it anywhere in a line (feedhold).~and%act only at the start of a line. Hosts should strip!from comments. (Corrected 2026-11-07: an earlier version said~also acts anywhere.)