eMCon is a CNC control system for milling machines / routers, with a C++ GUI and Ethernet (UDP) communication with a controller based on a 32-bit 240 MHz microprocessor. It drives the X, Y and Z axes plus an A axis (gantry slave on dual-motor tables, or 4th rotary axis), the spindle (via VFD) and auxiliary outputs.
Part I — First commissioning
If this is the first time you set up the machine, follow these steps in order: each one depends on the previous.
2. Connectivity: physical layer first
Power and cable. With the controller powered, connect the Ethernet cable. If you connect the PC directly to the controller (no router or switch), use a crossover cable: the controller does not auto-cross the pairs. Through a switch or router a normal cable is fine.
Watch the RJ45 LEDs. Solid link LED = physical layer OK (cable and power fine). Blinking LED = traffic. No lights = do not continue: check the cable (crossover?), connectors and power before touching anything in the application.
USB cable driver (Windows 7 only). Windows 10 and 11 recognise the controller on their own and need nothing installed. On Windows 7, with the USB cable plugged in, open the drivers folder that ships next to the program and run CH341SER.EXE → INSTALL button. When it finishes, a new port appears in Device Manager under Ports (COM & LPT), something like USB-SERIAL CH340 (COM5); the number does not matter, the program tries them all. If one or two yellow-marked entries called USB JTAG/serial debug unit stay under Other devices, that is normal and needs no fixing: they are the chip's debug side, which the program never uses. The same steps are written down in drivers\LEEME.txt.
Set the PC IP on the same subnet. The controller ships at 192.168.157.112, port 2055. With that address, the PC needs a fixed IP 192.168.157.x other than that one (for example 192.168.157.2), with mask 255.255.255.0. How: Control Panel → Network and Internet → Network and Sharing Center → Change adapter settings; right-click the network connection the controller is on → Properties → select Internet Protocol Version 4 (TCP/IPv4) → Properties → Use the following IP address, and type the IP and the mask. Gateway and DNS can be left blank.
Press Connect — even if you do not know the controller's IP. When the controller does not answer at the address it has, the program looks for it on the network by itself —no USB and no drivers needed, and it works the same on Windows 7 as on 10 or 11— and, if it finds one, asks whether you want to use that address. If nothing answers on the network, it offers to ask over the USB cable (that is where the driver from the first step is needed). It never changes the IP without asking, and it saves it as soon as it connects. In Settings → connectivity you only type IP and port and press Apply, which also warns you if that IP is not on the subnet of any PC adapter.
If it still does not connect with the lights fine, it is almost always the PC IP (wrong subnet) or a firewall blocking UDP.
The rest of the board connections
This is the controller terminal map, with the board as it sits in its enclosure. Along the top are the outputs block and the spindle terminals; along the bottom, left to right, the power, the encoder, the inputs and the axes block. It is the same board across the whole family — eMCon, ePCon and eTCon — so you will see the odd terminal a milling machine does not use, such as the RS485. The drawing is of the eMCon V3.0 board: if yours is older the layout differs — check it before wiring.
2.1 — How each terminal is wired
The drawing above says where each block is; this is what goes on it. Except for the emergency stop and the limit switches, every input and output is isolated from the controller electronics.
Axes (U4). Each axis leaves with Step and Dir towards its driver, plus a ground. Watch the grounds: the whole block has only two Gnd terminals and they are shared — one between Xs and Yd, another between Zs and Ad — so two axes hang off each one. These are 3.3 V signals going straight to the driver, unconditioned: check your driver manual accepts them, because plenty ask for 5 V. If an axis runs backwards, do not swap the wires: tick it as inverted in Settings → Axes.
A axis (second gantry motor). It gets the same signals as its master, generated only once, so the two motors cannot drift apart. If the motors face each other and one has to turn the other way, do not cross its phases: tick Invert dir. in Settings. If your machine has no second motor, those two terminals stay free.
Outputs Out1, Out2 and Out3 (U7). Each is a pair of terminals acting as a dry contact: a solid state relay that opens and closes, with no voltage of its own and no polarity. They take 60 V and 550 mA at most. On a milling machine they are used for the spindle start, the coolant and whatever else you need; each has its button on screen and its key (F5, F6 and F7). If what you are switching needs more — a contactor coil, say — put a relay in between: the board's contact drives the relay, and the relay drives the load.
Spindle (10V, PWM and ACM). This is the speed reference for the VFD: 0-10 V on the 10V terminal, referred to ACM, which is their ground (that is why it is black). The PWM terminal puts out that same signal unfiltered, in case your VFD prefers it that way. How it connects to the drive, with a drawing, is in step 6.
Emergency stop (P3) and limit switches (P4). They are dry contacts to Gnd and they come in not isolated: do not feed them any voltage, just a clean contact. The limits all go in series into the same terminal, which is why the controller knows one has been hit but not which one: the three LEDs light up together. If one works the wrong way round, invert its polarity in Settings → Inputs.
Probe (P6). Three terminals: Gnd2, Vout and Signal. If you probe with a metal plate (the usual way to touch off a tool), what you have is a dry contact and the loop must be closed with the block's own voltage: Vout to the tool (the clip on the spindle) and Signal to the plate; when they touch, the circuit closes. If instead you use a three-wire sensor, the block feeds it itself, since Vout puts out the same voltage you fed into Vin: blue (0 V) to Gnd2, brown (+) to Vout and black (the output) to Signal. It comes in isolated and takes 5 to 24 V. If the Probe LED works the wrong way round, invert the polarity in Settings → Inputs; the wiring stays as it is.
Input1 (P1). A spare input, for whatever you need. It is a floating input: its two terminals are the two ends of the optocoupler and share no ground with anything on the board — not even with the probe or the encoder, which do hang off the common Gnd2. It is activated by applying 5 to 24 V across its two terminals, with the + on 1; if you cross them nothing happens, there is a protection diode. If what you have is a dry contact (a relay, a pressure switch), close the loop with the board's own voltage: 5 V from P8 → contact → terminal 1, and the Gnd2 of that same P8 → terminal 2.
Encoder (P5). Three terminals — A, B and Z — isolated, fed from the 5 V and the Gnd2 of P8. Not used yet: it is there for later, so for now it stays free.
Power (P8). The board is powered from the USB, which is also how you program it: no external supply is needed. The Vin input is only used if some accessory asks for it, a 24 V sensor for instance. It accepts 12 to 30 V DC. That same voltage is what comes out on Vout of P6, and the 5 V on P8 feed the encoder and Input1. On that block, looking at the enclosure from the front, you get 5 V on the left, Gnd2 in the middle (the black terminal) and Vin on the right.
RS485 (P2).Not used on a milling machine: it is the link to the board that measures arc voltage on plasma machines. It stays free.
Three rules for all the wiring. Keep signal cables away from power cables and do not run them in the same conduit. Use shielded twisted pair where you can, with the screen grounded at one end only, never both. And bear in mind that on this machine the noise comes from the VFD: its cables to the spindle motor are the dirtiest thing in the cabinet, so route them as far from the signals as you can.
3. Calibrating the axes (steps/mm)
The theoretical steps per millimetre come from motor, driver and transmission, but the real check is done by measuring. The practical rule, axis by axis:
Zero the axis with its DRO button and mark the physical position (or set up a dial indicator/ruler).
From the MDI command a 100 mm move, e.g. G1 X100 F500.
Measure the real displacement with a ruler or caliper; call it d.
Correct: new steps/mm = current steps/mm × 100 / d. Apply the value in Settings → Axes.
Repeat with 1000 mm (G1 X1000 F1000): the longer the travel, the smaller the measuring error weighs, and the tuning gets fine. Same formula with 1000 instead of 100.
Mind the units: these tests count in millimetres. If the app is set to inches, G1 X100 means 100 inches (about 2.5 m) and the axis will run into its limit switch. Calibrate with Settings in mm, or put the unit on the line: G21 G1 X100 F500.
Start with conservative speeds and accelerations; raise them once the mechanics are proven. If an axis loses steps in the test, lower acceleration before speed.
4. Testing the probe signal
The probe sets the tool height (the Probe Z button): a plate or sensor that closes contact when the tool tip touches it. Before trusting the automatic probing:
With the machine stopped, watch the Probe LED in the Inputs group: at rest it must be off.
Close the contact by hand (touch the plate with the tool or bridge the sensor): the LED must light up. If it works backwards, invert the polarity in Settings → Inputs.
Dynamic test: jog the Z axis slowly down towards the plate and watch the LED at the moment of contact. Keep your hand on the button to stop: in this test nothing stops Z automatically.
5. Testing the E-Stop and limit switches (alarms and re-arming)
E-Stop. With the machine stopped, press the mushroom button: the E-Stop LED must light and the outputs (spindle included) must switch off. With the E-Stop pressed the application blocks Run and jog.
Limit switches. Press them by hand and check their LED. If any works backwards, invert its polarity in Settings → Inputs.
How an alarm is re-armed. First remove the physical cause: release the E-Stop (turn to unlatch) or jog off the limit switch (jog IS allowed with a limit pressed, precisely to free it). Then press Reset. While the cause is still present, Reset does not clear the alarm.
6. Configuring the spindle (VFD)
How it is wired
The spindle is driven by one thing only: a 0 to 10 V voltage that leaves the controller and tells the drive how fast to turn. Three wires, and they go exactly where the drive potentiometer was.
The G-code S word sets the spindle RPM through the VFD. In Settings → Spindle:
Max RPM: the spindle RPM at VFD full scale (command signal at 100%). Check the spindle nameplate or the VFD configuration.
Spin-up (ms): the time the spindle takes to reach speed after an M3. Execution waits this long before cutting, so the material is not attacked with the spindle still accelerating.
Check with the MDI: M3 S12000 should start the spindle at half speed (if Max RPM is 24000); M5 stops it.
If your spindle has no drive (plain start and stop), you need none of the above: wire the Out1 output (U7 block) to the motor contactor and forget the 0-10 V. The controller drives that output always, together with the speed command — M3 closes it and raises the voltage, M5 opens it and drops it to 0 V, and so do the Head (F5) button and the safety stops. The only thing you lose is the G-code S word: the motor fixes the speed, so M3 S12000 and M3 S6000 run the same.
7. Configuring the pendant keys
In Settings → Remotes, start by choosing the pendant type: XHC WHB02, numeric keypad or CNC remote. Choosing it does two things: the screen draws that pendant — every button appears where it actually sits on the device, inside its outline — and its factory map is loaded, ready to use.
The numeric keypad mirrors the on-screen jog panel and is used with Num Lock off:
Num Lock
Run/Pause (/)
Spindle (*)
←
A+ (7)
Y+ (8)
Z+ (9)
J- (-)
X- (4)
Step (5)
X+ (6)
J+ (+)
A- (1)
Y- (2)
Z- (3)
Ok (Enter)
Go to zero (0)
Stop (.)
J+ / J- change the jog speed, Step cycles the jog mode (continuous, x1, x10, x100) and Ok captures the point in Trace mode. While tracing, 0 undoes the last point instead of going to zero (point 14). A+ / A- only move the A axis when it is a rotary (not a gantry slave).
On the CNC remote (the «Mach3 CNC manual remote controller»): Start = Run/Pause, Spindle (SPINDLE ON/OFF) = spindle, F+ / F- = Feed Override ±5 %, J+ / J- = jog speed, Step = step mode, Origin = Go to zero, and Trace+ / Trace- (SPINDLE SPEED UP / SLOW DOWN) = capture / undo point in Trace mode. RE DO is not used. F+ and F- have no factory key: assign them once.
To go back to the factory map, choose another pendant type and then yours again.
To change an assignment, click that function's button and press the key or pendant button you want: it is captured. It makes no difference whether the pendant is a keyboard or an XHC unit; both arrive through the same path.
Grey keys are buttons the device has but this application does not use.
Actions the chosen pendant has no physical button for are not drawn. If they already had a key assigned, it keeps working.
There is X/Y/Z/A jog, jog speed, step mode, Go to zero, part zeros (X/Y/Z), Run/Pause, Stop, spindle, Feed Override +/-5 % (the CNC remote's F+ and F-) and the two Trace actions.
The pendant type and every assignment are saved: they belong to the machine, not to today's job.
A note on keyboards: the pendant is listened to globally, so the keyboard map deliberately avoids bare letters (a "T" for the head would fire while typing in the MDI). Use navigation, the numeric keypad and function keys. Escape cannot be assigned: it is always the software emergency stop.
Part II — Daily use
8. Preparing a job: work zero and dry run
Referencing here is manual: the Ref All Home of Mach3 does not exist. You find the zero by hand, on the part itself, with the jog. The limit switches protect the travel, they are no good for referencing: they all go in series into the same terminal, so the machine knows one has been hit but not which one.
Work zero (X/Y). With the part clamped, jog the tool to the point your CAM used as origin (typically a corner or the centre) and zero X and Y with the DRO buttons.
Z zero. Use Probe Z on the touch plate (the macro does fast search + fine measurement and subtracts the plate thickness), or touch the surface with a paper shim and zero Z by hand.
Check on the graphic view that the drawing falls inside the part: the red cross marks the current tool position relative to the program.
Dry run (highly recommended with a new program). Run the program without tool or with Z raised (shift the Z zero up a few centimetres) and the spindle off. Verify travel and that nothing collides. Then: real zero, spindle ON, and machine.
9. Basic workflow
Press Connect to establish communication with the controller.
Load a G-code file with the Load file button.
Review the toolpath in the G-code list and the graphic view.
Set the work zero (point 8).
Press Run to execute the program (it starts by raising Z to Safe-Z).
Use Pause/Resume (soft braking), Reverse to backtrack along the path, and Cancel to abort.
10. Main tabs
Main: execution, graphic view, coordinates (DRO), G-code list and MDI.
Settings: connectivity, axes, A axis, inputs, spindle, velocity profile (junction deviation / jerk) and remote keys configuration.
About: this manual.
Logs (hidden; enable with "Tab Logs" in Settings): diagnostic logs and built-in viewer.
11. Main controls
Connect: connects or disconnects the controller.
Run / Cancel: starts the loaded program or aborts it.
Pause / Resume: pauses with soft braking or resumes forward (at the machine's real acceleration). The button is disabled when nothing is running.
Reverse: while paused, backtracks along the already-executed path (spindle off).
Out1 (F5) / Out2 (F6) / Out3 (F7): controller outputs (spindle/coolant/auxiliary). When on, they blink orange.
Go to zero: moves the machine to zero with a safe strategy (raises to Safe-Z before moving XY).
Probe Z: tool-height probing (two-touch macro: fast search + fine measurement).
Jog X / Y / Z / A: manual movement (continuous or steps x1/x10/x100).
Feed Override / Jog Override / Spindle: feed adjustment during execution (steps of 5), manual jog (steps of 10) and RPM.
Find corner: outside XY corner
Preparation: Probe Z first, then Find corner
Always run Probe Z before Find corner. Stop the spindle, check the Probe input and use the correct plate thickness to reference Z. Run Probe Z over a solid part of the plate, not over the hole.
Example XYZ touch plate. After Probe Z, position the cutter approximately above the centre of the hole, clear of the plate and without contact.
With a tool sensor like the one illustrated:
In Settings > Probe, enter your sensor offsets and press Save settings. For the 10 mm X/Y and 5 mm Z model, enter X=10.00, Y=10.00, Z=5.00 mm. X/Y are the distances from the probed outside faces to the stock edges; Z is the height of the sensor top face above the stock. They are entered in the app's units (mm or inches); the example is in mm. Attach the clip to the metal shank of the cutter itself, as illustrated.
Fit the sensor over the corner: its recessed underside rests on the top surface and the inner faces of its lower locating rim register against both stock edges. Do not simply place it on top, away from the edges. Secure it with its faces parallel to X and Y and connect the probing contact. The underside view illustrates this rim; it is a schematic, not a dimensioned drawing.
Run Probe Z on the solid part of the plate, then raise the cutter clear before repositioning.
Manually position the cutter axis approximately above the centre of the hole. Keep the tip above the sensor; do not insert it into the hole.
Enter the effective cutter diameter in mm in D, not the hole diameter. For a 3 mm cutter enter 3.00. Check this value whenever you change cutters: the cycle compensates the radius, D/2.
Check the heights and outward travel described below, then press Find corner.
The hole is only an initial positioning reference: this cycle probes outside faces; it does not centre a hole. Find corner adds radius D/2 and each axis offset to obtain the stock corner. For example, contact X=-11.5, D=3 and X offset=10 give X=0. Probe Z assigns Z=5 at contact with the top of a 5 mm sensor, so Z=0 corresponds to the stock surface. Do not apply these compensations again manually.
Without that sensor:
If offsets are not supplied as parameters, the macro uses zero (0 mm) for each missing value. An empty field also means 0 mm; 10/10/5 are this sensor's values, not automatic defaults. For direct XY probing enter X=0 and Y=0. For Probe Z with another plate, enter its thickness in Z; without a plate, Z=0.
Run Probe Z first using a suitable plate, then remove the plate from the travel path.
Position the cutter axis above the stock, approximately 5 mm inward from each edge of the lower-left corner: an initial position of (5 mm, 5 mm) relative to that corner. This does not mean entering X=5 and Y=5 in the controller's current coordinates.
Enter the effective cutter diameter in D, check heights and clearance, then press Find corner. Direct probing requires working electrical contact on both stock faces; insulating stock requires a suitable conductive fixture.
Probe Z and Find corner are on the right below Spindle. They are independent: Probe Z measures height; Find corner measures only the X and Y faces of the lower-left outside corner of solid stock aligned with the axes. It does not search for unknown stock from machine zero.
With the spindle stopped and the Probe input checked, manually position the probe above the stock near the corner, without contact. Before moving XY, the macro raises Z by SAFE_Z above the height where you left the cutter. Keep all paths clear of clamps and check machine travel limits. Supervise the first physical test with emergency stop accessible.
Enter the cutter's effective diameter, in the app's units, in the D field beside Find corner. The app saves this value and the macro automatically compensates its radius. Configure these two mandatory heights in Settings > Probe, beside the offset illustration (initial values: SAFE_Z=10 mm, PROBE_Z=-5 mm); the macro will not move if either one is unset:
SAFE_Z: how far Z rises from where you leave the cutter when you press the button, to clear the stock and fixtures. 0 or more.
PROBE_Z: how far Z drops from that same point, to place the sensing part of the tip opposite the side faces. Negative (e.g. −5 mm).
Heights use the controller's current coordinates, not distances from the surface. Probe Z does not automatically calculate them. Review both heights after changing Z zero. The displayed X/Y value, including a negative value, does not constrain the cycle: lateral travel is calculated from the starting position and each contact. PREP_DISTANCE is calculated automatically per axis as axis offset + cutter diameter D + 5 mm. Settings > Probe displays both results, updated when offsets or D change. With X=Y=10 and D=3, each outward distance is 18 mm. This is the outward travel from the starting point: it must exceed the distance to each edge plus tip radius and clearance. Adjust feeds, retraction and clearance for the probe and stock.
Move to SAFE_Z, travel outward in Y−, then descend outside the stock to PROBE_Z.
Probe in Y+ with a search touch and a fine touch, then retract.
Raise to SAFE_Z, return to the initial Y and move outward in X− before descending to PROBE_Z.
Probe in X+ with two touches, then retract.
Raise to SAFE_Z and position above the measured corner with radius compensation and no diagonal moves.
No Z surface measurement or Z zeroing takes place. Every raise, outward move, retraction and positioning move is a G0 rapid; only the two touches on each face are probe moves. The fine touch travels the retraction distance plus the clearance margin so it cannot finish exactly at the sensor edge. If a touch reaches maximum travel without contact, the machine remains at the reached point and displays Retry and Cancel: Retry continues probing from that same point and Cancel ends the macro after raising Z to SAFE_Z. A probe remaining active after retraction also aborts the cycle. Inspect the position and cause before retrying.
On successful completion, the cutter reaches the measured corner at SAFE_Z and sets X=0 and Y=0 there. If you left the cutter at Z=5 with SAFE_Z=10, the DROs show X=0, Y=0 and Z=15. Z zero is unchanged. Cancellation or failed probing does not zero X/Y. This redefines the current origin; it does not create a separate work offset. Trace remains a separate digitizing operation.
12. Graphic view
Mouse wheel: zoom. Right-button drag: pan the view. Right double-click: re-centre.
Tapping a figure selects its line in the G-code list (and vice versa: selecting in the list highlights the figure in red).
Arrows on the rapids (G0): each rapid carries an arrowhead showing its direction; following a figure's exit arrow you see which one is machined next, and the entry arrow tells you where it came from. Very short rapids carry no arrow so a dense nesting stays clean.
13. MDI and Run from line
The MDI tab sends quick manual commands (machine stopped only): G0 / G1 with X, Y, Z coordinates and F for the feed. Coordinates and feed are in the Settings units; to force the other unit, write it on the line: G21 G0 X10 (mm) or G20 G0 X1 (inches).
Run from line: starts execution from a specific program line. Check the tool position before using it.
14. Trace mode (digitize)
Digitize a contour point by point on the graphic view (moving the machine by hand and capturing points with the pendant) and export it as DXF, to reuse real shapes. Only available while the machine is idle.
Prepare the origin. Jog the tool to the corner you want to start from and set X and Y to zero with the DRO buttons. That point becomes vertex 0 of the trace.
Enter the mode with the Trace button. The button blinks while you digitize.
Capture the vertices. Move the tool to the next point of the contour and press the capture point key: a vertex is added with the DRO's X/Y, and the line is drawn on the graphic view as you go.
Numeric keypad
XHC
CNC remote
Capture point
Enter (Ok)
YES
Trace+
Undo the last one
0
NO
Trace-
Undo never removes the origin: it stays as the anchor. On the numeric keypad, 0 is Go to zero outside Trace mode; while tracing, it undoes.
Num . (with Num Lock on) clears the whole trace and leaves only the origin.
Finish by pressing the Trace button again. A dialog with three buttons appears:
Export to DXF: opens the save dialog and writes the file.
Discard: erases the trace and leaves the mode.
Keep tracing: goes back to the mode with nothing lost, in case you pressed it by mistake. Closing the dialog or cancelling the save does the same: the trace is never lost by accident.
After exporting, the shape stays on the graph so you can see it. The next press of the Trace button only erases it, and the one after that starts a new trace. If you leave without capturing any vertex, it asks nothing and the graph is left clean.
The DXF is written as an AutoCAD R12 POLYLINE, the format that Vectric Aspire/VCarve and the other usual CAM programs import without trouble. Coordinates are in millimetres and the R12 format does not store the unit: when your CAM asks on import, choose mm (choosing inches makes the part 25.4 times larger).
15. Keyboard navigation
Tab / Shift+Tab move focus to the next / previous control.
Enter in single-line boxes confirms the value and advances.
F5/F6/F7 toggle the outputs; SPACE pauses/resumes (except inside a text box).
The jog keys (X/Y/Z/A and speed) are configured in Settings (see point 7).
While tracing, Enter (Ok on the numeric keypad) captures the point and does not press any on-screen button. Outside Trace mode, Enter is an ordinary Enter.
16. FAQ
What G-code does eMCon understand?Mach3-style code: G0/G1 (lines), G2/G3 (arcs with I/J centre or R radius; Mach3 convention: negative R = arc greater than 180°. Full circles require I/J: in R format they are geometrically ambiguous and eMCon warns and ignores them when loading the file), G4 (dwell), G94/G95 (feed per minute / per revolution), M3/M5 (spindle with S for the RPM) and M30, in millimetres (G21) or inches (G20). The posts' G53 G0 Z.. (raise in machine coordinates, typical of Fusion) becomes a rise to Safe Z that only goes up; a G53 with X/Y rejects the program. A program with incremental coordinates (G91), another work offset (G55–G59), cutter radius compensation (G41/G42), another plane (G18/G19) or drilling cycles (G81–G89) is also rejected as a whole. No variables or subroutines: the file must arrive "flat".
Where is the tool radius compensated? In the CAM (Fusion 360, FreeCAD, Vectric, etc.), not in eMCon: the G-code must arrive already compensated.
Where do feeds and RPM come from? From the tool manufacturer's data (chip load) for each material and diameter. The CAM sets F and S; here you fine-tune them live with the overrides.
What units does it work in? Internally, always millimetres. The file decides with its code: G21 = mm, G20 = inches (converted to mm on load and machined at its real size). A file with neither G20 nor G21 is taken as mm: if your post works in inches, make sure it writes the G20. If you load an inch file with the app in mm, eMCon tells you in a window; the editor keeps showing the file's values and the DRO the app's. The units selector in Settings changes what you see and type by hand: the DRO, the feed, the axes, the MDI, Safe Z, Junction dev. and Jerk (with their unit in brackets). So do the offsets and heights on the Probe tab and the D field of Find corner. settings.ini is always saved in mm, so switching units never alters a setting. The change applies when the application is restarted: when it opens, everything is already in the new unit.
17. Safety recommendations
Always keep the physical E-Stop at hand: it stops motion and switches the outputs off even if the PC hangs. How to re-arm: point 5.
Grounding and interference (EMI): the spindle VFD generates electrical noise. Use shielded cable to the spindle, ground the machine and keep signal cables (Ethernet, USB) away from power cables. It is the most common cause of disconnections.
Check limits, tool and workpiece clamping before running; with a new program, do the dry run first (point 8).
Check height and possible collisions before using Run from line or Go to zero.
Do not run movements before setting the work zero and going over the configuration (step 8).
18. Saving the configuration (and how to recover it)
There is no save button: the application saves ALL the configuration automatically on close, to settings.ini (and, if connected, also to the controller memory). The per-block Apply buttons push changes to the controller live, without waiting for close.
Automatic backup: at every startup, if settings.ini is healthy, the application saves a copy to settings.ini.bak. Saving is also atomic: a power cut mid-save does not leave the file corrupted.
Taking your configuration to another PC. In Settings there are two buttons, Export and Import. Export writes all your settings into the file you choose; Import replaces the current ones with that copy. Use it when you change computers, to set up an identical second machine, or to send your configuration to service. On import the application first saves a copy of what you had, and you must restart it for the new configuration to come in whole.
If the INI still gets corrupted (the application starts with everything at defaults or absurd values): close the application, delete settings.ini, rename settings.ini.bak to settings.ini and reopen. You recover the configuration of the last good startup.
The configuration lives on the PC. Always. The controller only executes it. On every connection the PC pushes its settings down; from the board only what the PC cannot invent is kept: the firmware version and the serial number. This avoids the problem of connecting a new board and having its factory settings overwrite the machine's good configuration.
Export / Import: in Settings → General you can save the whole configuration to a file and restore it later. It is the counterpart of the above: if you reinstall the application, the controller no longer hands your settings back, so that copy is your safety net. Importing backs up the current configuration and requires restarting the application.
19. Updating the controller firmware
The board firmware can be updated over the network, with nothing to dismantle and no USB cable. In Settings → Connectivity you have the controller serial number, the firmware version currently running and the Update firmware button: pick the file and in about ten seconds the board restarts on the new version. The application accepts .bin images and encrypted .epk packages.
The machine must be stopped, with no job running, no alarms and the head off. The application checks this before sending anything, and the controller checks it again.
An interrupted update breaks nothing. The image is written to a second memory area and is only activated once it arrives complete and correct. If it is cut short, the board keeps booting the one it had.
And if the new one does not work, it rolls back on its own. A freshly installed image boots "on trial" and is only accepted once the board proves it is healthy: network up and talking to the PC. If it cannot, the next restart brings back the previous one.
The version shown next to the serial number is your confirmation that the update really went in.
Boards with plain OTA closed only accept an .epk prepared for their serial number and signed with the original manufacturer key. A normal .bin is rejected; do not generate a new key.
Each controller also has its own identity, generated inside the board the first time it boots and never leaving it. It lets the manufacturer prepare updates that are encrypted and signed for that specific machine: such a package cannot be opened on another board, and the board will not accept firmware without the manufacturer's seal.
From version 1.4.0 on, when connecting, the application checks that the board is a genuine eMCon controller: the board shows its factory certificate and signs a random question with its identity. If it fails, the application lets you look at it (position, settings, firmware update) but will not machine or move the machine.
The identity lives in its own area of the board's memory. Erasing the settings does not touch it; erasing the whole memory over USB does: the controller then loses its identity and must be registered again with the manufacturer. There is no other way to recover it.
20. Quick diagnostics
If it does not connect: RJ45 lights first (point 2); then PC IP/subnet (the connectivity Apply warns you if it does not match), firewall.
If it disconnects or misbehaves right when the spindle starts: almost surely grounding/EMI (point 17).
If an axis does not respond or measures wrong: check steps/mm (point 3), max speed, acceleration and limits.
If probing fails or trips falsely: Probe LED and its polarity (point 4).
If the machine does not move and you don't know why: look at the E-Stop and limit LEDs — there may be a latched alarm (point 5).
If «Board not checked» appears when connecting: the application lets you look at the board (position, settings, firmware update) but not machine or move. The reason is shown in the message bar. Disconnect and connect again with the machine stopped; if it keeps appearing, update the firmware to 1.4.0 or later (point 19) or contact the manufacturer.
Enable "Tab Logs" in Settings to inspect the session and pendant logs without leaving the app; if the app closed itself during a job, check feed_crash.txt next to the executable.
21. Final note
This manual is an operating guide. Before machining a real part, always verify toolpath, references, tool and safety conditions.