I will offer one tweak I am performing - adding a ferrite core to the USB cable - surely that’s suggested elsewhere - compensating for my misdirection ![]()
That is widely agreed upon and I doubt you will find any dissenters. Good to remind people.
I can’t pass up a challenge!
![]()
I recommend a USB cable with built in Ferrites at both ends, with gold plated connectors. The built in ferrites wrap the USB twisted pairs around the ferrite donut, rather than the whole insulated cable.
@Atreides at one-point Langmuir recommended the following to combat EMI.
FireControl Freezing During Cutting & How to Fix it! - CrossFire ® PRO - Langmuir Systems Forum
Well played!!!
Just remember!!! No limit switches ![]()
Oh John! We were having such a civil conversation here. And you had to go and do that!!! ![]()
I hate those things… Just kidding anyway.
Agreed…I literally only use them to home the machine at the end of the day. They do not bother me now that I have turned off the soft limits.
yeah see this is the thing… most people will never have the problem… but i like to get ahead of potential problems just in case i do. because if i was on a bigger budget then i’d have gotten a different system and just called tech support to deal with it. lol. but there’s something to be said for learning whats behind the scenes first and then moving up to better plug and play stuff later on if things go well.
Just had a massive problem cause im a dummy and mounted my plasma cutter to my table. Either it was feeding into the table or it was cause the main wall plug was touching or almost touching the main electrical box:sweat_smile:![]()
![]()
took me a week to figure it out
Welcome to the forum!
Just curios. What were the problems that were created by those circumstances?
0 volt readings during the live voltage test. But it would still cut things and the readings would fluctuate between 10-35 volts. Im assuming the main power for the plasma cutter was to close to the main electronics and was causing some type of ground loop or feed and making the thc misread the voltage. Will be mounting to the wall now
I can testify to the efficacy of @Bigdaddy2166 's grounding suggestions.
I recently replaced an ancient laptop (“Pentium inside”!) with a mini PC. The mini PC is much faster and runs firecontrol much better, but I’ve been having an intermittent “machine disconnected” message. The mini PC is a 2 prong power supply so I thought it would behave like the laptop. I always ran the laptop plugged in to AC since the battery was dead and never had an issue.
I didn’t go quite as thorough with the grounding, but I did do braid to each motor, the table, and the 8’ ground rod to a common ground bar. I ran an extra 8’ of braid to the ground rod so I can still roll the table around for big index cuts.
I just finished a 10 minute program with loads of pierces and some fairly long straight runs with zero issues. Previously nearly every project, no matter how small, would have at least one failure.
While I was messing around in the area I added some 1" plastic standoffs to the control box, and a plastic splash shield for the control box.
Awesome that your issues are gone .
USB port looks to be bent over and touching the housing too. semi-common issue.
Thanks Tin. I gave it a little screwdriver tweak based on your observation.
Maybe a custom script . here is one chat gpt made.
example code
(v1.6-af)
(Machine)
( vendor: Autodesk)
( model: Crossfire Pro)
( description: Langmuir)
G90 G94
G17
G20
H0
(2D Profile1)
G0 X1.3744 Y1.539
G92 Z0.
G38.2 Z-5. F100.
G38.4 Z0.5 F20.
G92 Z0.
G0 Z0.04 (IHS Springback + Backlash)
G92 Z0.
G0 Z0.15 (Pierce Height)
M3
G4 P0.6
G0 Z0.06 (Cut Height)
H1
G1 X1.276 Y1.7095 F100.
G3 X1.25 Y1.7245 I-0.026 J-0.015 F100.
G3 Y0.7755 I0. J-0.4745
G3 Y1.7245 I0. J0.4745
G3 X1.224 Y1.7095 I0. J-0.03
G1 X1.1256 Y1.539
H0
M5
G0 Z1.
G0 Y2.461
G92 Z0.
G38.2 Z-5. F100.
G38.4 Z0.5 F20.
G92 Z0.
G0 Z0.04 (IHS Springback + Backlash)
G92 Z0.
G0 Z0.15 (Pierce Height)
M3
G4 P0.6
G0 Z0.06 (Cut Height)
H1
G1 X1.224 Y2.2905 F100.
G3 X1.25 Y2.2755 I0.026 J0.015
G1 X2.25
G2 X2.2755 Y2.25 I0. J-0.0255
G1 Y0.25
G2 X2.25 Y0.2245 I-0.0255 J0.
G1 X0.25
G2 X0.2245 Y0.25 I0. J0.0255
G1 Y2.25
G2 X0.25 Y2.2755 I0.0255 J0.
G1 X1.25
G3 X1.276 Y2.2905 I0. J0.03
G1 X1.3744 Y2.461
H0
M5
G0 Z1.
M30
(PS100)
Here’s the Full Script You Can Run:
Just paste this into any Python environment (like Replit, VS Code, or even Python installed locally):
python
CopyEdit
import re
import math
gcode = """
(paste your full G-code here — same one you gave earlier)
"""
move_cmds = re.findall(r'([GM]\d+[^M]*)', gcode)
cutting = False
pierce_count = 0
cut_length = 0.0
non_cut_length = 0.0
last_x = None
last_y = None
def extract_coords(line, last_x, last_y):
x = last_x
y = last_y
if 'X' in line:
x = float(re.search(r'X([-+]?[0-9]*\.?[0-9]+)', line).group(1))
if 'Y' in line:
y = float(re.search(r'Y([-+]?[0-9]*\.?[0-9]+)', line).group(1))
return x, y
def extract_ij(line):
i = j = 0.0
if 'I' in line:
i = float(re.search(r'I([-+]?[0-9]*\.?[0-9]+)', line).group(1))
if 'J' in line:
j = float(re.search(r'J([-+]?[0-9]*\.?[0-9]+)', line).group(1))
return i, j
def calculate_arc_length(x0, y0, x1, y1, i, j, cw):
cx = x0 + i
cy = y0 + j
r = math.hypot(i, j)
v0x = x0 - cx
v0y = y0 - cy
v1x = x1 - cx
v1y = y1 - cy
dot = v0x * v1x + v0y * v1y
det = v0x * v1y - v0y * v1x
angle = math.atan2(det, dot)
if cw and angle > 0:
angle -= 2 * math.pi
elif not cw and angle < 0:
angle += 2 * math.pi
return abs(r * angle)
for line in move_cmds:
line = line.strip()
if line.startswith('M3'):
cutting = True
pierce_count += 1
elif line.startswith('M5'):
cutting = False
if line.startswith(('G0', 'G1', 'G2', 'G3')):
x, y = extract_coords(line, last_x, last_y)
if last_x is not None and last_y is not None and x is not None and y is not None:
if line.startswith('G1') or line.startswith('G0'):
dx = x - last_x
dy = y - last_y
dist = math.hypot(dx, dy)
elif line.startswith(('G2', 'G3')):
i, j = extract_ij(line)
dist = calculate_arc_length(last_x, last_y, x, y, i, j, cw=line.startswith('G2'))
if cutting:
cut_length += dist
else:
non_cut_length += dist
last_x = x
last_y = y
total_length = cut_length + non_cut_length
print("Pierce Count:", pierce_count)
print("Cut Length (in):", round(cut_length, 4))
print("Non-Cutting Travel (in):", round(non_cut_length, 4))
print("Total Travel (in):", round(total_length, 4))
You’ll Get Output Like:
java
CopyEdit
Pierce Count: 2
Cut Length (in): 11.142
Non-Cutting Travel (in): 3.567
Total Travel (in): 14.709
maybe something like this will work for you.

