DryRun

User guide

9. Troubleshooting

Load errors appear in red over the viewport. machine.json errors are shown first; setup.json errors appear only once the machine loads. All messages below are exact.

Message Cause and fix
setup.json not found You opened a folder without setup.json directly in it. Open the project folder itself, not its parent or a sub-folder.
setup.json: machine file "<name>" not found machine names a file that is not there, relative to the project folder.
<file>: invalid JSON (…) Syntax error, typically a trailing comma or a missing quote. The message gives the position.
machine.json: units must be "mm" Add "units": "mm".
link "<name>": parent "<p>" does not exist Typo in parent.
machine.json: exactly one root link (without parent) is required, found 2 A link other than the base has no parent.
link "<name>": axis letter A requires a revolute joint (or X requires a prismatic joint) Swap the joint type or letter.
link "<name>": joint.letter "B" must be one of X, Y, Z, A Only A is supported as a rotary letter.
link "<name>": duplicate axis letter X (also used by link "<other>") Each letter drives one joint.
link "<name>": joint.limits must be [min, max] with min < max Prismatic joints need limits; check the order.
link "<name>": limits must include 0 (the start pose) Every DDCS program starts at machine 0, and on GRBL 0 is the homed end of the travel ([−travel, 0]). If your machine 0 really lies outside the travel, see section 5, step 2.
controller.home must lie inside the joint limits A GRBL home (the start pose) outside limits on X, Y or Z. Check the signs: GRBL machine coordinates are negative.
link "<name>": spoilboard needs a mesh on the table side / spoilboard must be a number of mm > 0 spoilboard belongs on the board's own table-side link, which needs a mesh.
link "<name>": collision shapes are only allowed on the tool-mount branch Table-side links are checked through their mesh; remove collision there.
link "<name>": collision[<i>] box needs min < max on every axis / cylinder needs from, to (different) and radius > 0 / must be { cylinder } or { box } Fix the shape.
controller.<field> must be … Wrong value; the message lists the allowed ones.
toolMount: link "<name>" does not exist Typo in toolMount.link.
workMounts: at least one work mount is required Add "workMounts": [ { "name": "table", "link": "base" } ].
link "<name>": mesh "<path>" not found The path is resolved relative to the folder of machine.json; the message shows the resolved path.
<owner>: path outside the project: <path> A .. path leaves the project folder. Copy the file into the project.
<file>: binary STL size mismatch: … / <file>: not an STL file / <file>: mesh has no triangles / invalid vertex at line <n> Broken or empty STL. Export again, binary, in mm.
stock: mount "<name>" is not a work mount of the machine (same for fixture:) Use a workMounts name, not a link name.
stock: exactly one of box, cylinder, mesh is required Give exactly one shape.
stock: box must be [x, y, z] with positive sizes / stock: cylinder needs positive diameter and length / stock: mesh must be a file name Fix the stock shape.
stock: resolution must be a number of mm from 0.01 to 10 resolution is a plain number (not a string) between 0.01 and 10, or null.
stock: resolution <h> mm needs <n>M rays, more than the 8M limit — use <h'> mm or coarser Set stock.resolution to the value named, or coarser (section 8).
stock: the mesh encloses no volume (open or inverted mesh?) The stock mesh is open. Export it again as a closed solid.
stock: the box encloses no volume on the <h> mm grid — use a finer resolution (or cylinder) The stock is thinner than the grid can see; set a finer stock.resolution.
tools[<i>]: number must be an integer 1..16 The DDCS tool table has 16 entries.
tools[<i>]: fluteLength exceeds length length is the whole stick-out from the spindle nose.
tools[<i>]: holder stack <s> mm must be shorter than length <l> mm The holder parts add up to more than the tool length; the tip must be below the holder.
tools[<i>]: type must be "flat" or "ball" Approximate other tools by one of the two.
tools: duplicate tool number <n> Each number once.
workOffsets: unknown offset "<name>" (allowed G54..G59) / workOffsets.<G5x>.<axis> must be a number Use G54…G59 as keys and plain numbers (not strings) as values.
setup.json: program "<path>" has an unsupported extension (use .nc, .ngc, .tap, .gcode) / … not found Rename the file or fix the path.

Problems after loading:

Symptom Cause and fix
"<folder>" has no setup.json and no program files (…) You picked a folder that is neither a project nor holds programs at its top level (programs in sub-folders of a program folder are not listed). Pick the project folder or the folder that holds the programs.
"Open folder…" does nothing or fails Use Chrome; the folder picker needs the File System Access API and the page served over HTTPS or from localhost. Allow read access when asked.
Permission to write to "<folder>" was denied Chrome's permission to edit files in that folder was refused or revoked (site settings) during Export…. Export… again and allow it when Chrome asks.
"<folder>": … — the stored programs are shown after Reload A project of My projects could not read its program folder (moved, deleted, or Chrome's permission to view it refused): the saved copy of the programs is shown. Allow the permission and Reload again, or open the folder with Open folder….
A project is missing from My projects My projects lives in this browser's site data (section 4.5.7): another browser, a private window or cleared site data do not have it. Restore it from an Export… folder with Open folder…, then Save.
<path>: <message> or … — could not restore <paths> after Export… A write failed (disk full, file locked, permission revoked). Section 4.5.7, "Order and failures": what was written is undone where possible; the paths named at the end could not be put back and should be checked.
A program file is missing from the list Its extension is not .nc, .ngc, .tap or .gcode, or it is more than three folder levels deep.
Every move is a collision, even in air A tool-side shape overlaps a table-side mesh at every pose (a gantry box enclosing its rail), or the stock or fixture is placed where the tool starts. Click the first entry: the two glowing bodies tell you which.
Collisions on the first line of motion The first move starts at the start pose (machine zero, or controller.home on GRBL); check that the machine model at that pose is clear of everything, and that the first rapid in the program is safe from there.
Pill orange: … machine links not checked Add collision shapes to those tool-side links (names are in the Program: entries).
Pill orange: Collision check skipped: … The machine's joint arrangement is not supported by the check (section 7.4, last paragraph).
Program: link "<name>" has no collision shapes … Same as the orange pill above.
Stock status orange: Stock stopped at line <n> (memory limit) — use a coarser resolution The stock model reached 1 GB. Set a coarser stock.resolution (section 8). Until then the result after line n is incomplete (section 7.6).
Stock status orange with Program: stock mesh is not closed: … under it The stock mesh has holes; part of the blank is missing. Export it again as a closed solid.
Stock not simulated: material removal skipped: rotary joint of link "<name>" is on the tool-mount branch The rotary axis carries the spindle; neither removal nor collision check supports that.
The simulation takes minutes, or the browser slows down The program is long and the resolution fine. Playback works meanwhile; for the next run set a coarser stock.resolution (section 8).
shank T<n> hits stock on a plain plunge or slot deeper than the flutes The shank, as wide as the cutter by default, rubs the wall of its own cut (section 7.8, item 2). Enter the real neck diameter as shankDiameter, or accept it as a real warning that the shank touches the wall.
G55 is not defined in setup.json; using zero offset Add that offset to workOffsets. Everything after it is in the wrong place until you do.
no tool change in program — T1 from setup.json assumed The program has no M6; the lowest-numbered tool is assumed to be in the spindle. Make sure that is the tool that will be in the machine.
tool <n> is not in the setup tool table Add the tool to tools. The M6 is refused and the previous tool stays in the spindle.
G43 H<n> while T<m> is active — tool length offset of another tool Usually a post-processor or program error; on the machine the tool would be at the wrong height.
Tool appears at the wrong height N, the tool length, or the G54 Z convention (section 5, step 9).
Rotary parts turn the wrong way Negate the A joint axis (section 5, step 7).
Programmed feeds have no effect on the time ignoreProgramFeed is true (DDCS factory default #101 = 1).