Okay, I get more and more frustrated in trying to get ChiliPeppr working on

Okay, I get more and more frustrated in trying to get ChiliPeppr working on my CNC machine.

Recently I bought a X-carve 750*750 mm CNC machine for milling random stuff and making my own PCB’s. I have the complete chain already working with Easel and importing different object. This chain works because I already have made some examples with that.

Now the fun part start, I’m trying to mill my own example PCB using ChiliPeppr. Everything seems to work fine. I can import an Eagle board file and can generate Gcode for it and it looks like it make some sense. After this I add the auto leveling feature and even the test probe option works fine. Now the frustrating part begins.

When I execute the Auto leveling feature or just starting to route the PCB it immediately jumps to the other end of my surface and tries to even go beyond that. I tried different things like homing cycle (yes i have homing switched) and setting the G54 to 0,0,0. But it still jumps to the far end.

I just use the X-controller for it, with grbl version 1.0c20161011
For chilliPepper is have no clue at all, but I use the forcerefresh=true (is that make some sense for some).

I guess it would be a very simple solution, but I just can’t seem to find it. SO I would be very very very very happy if someone can point me in the right direction into solving this problem for me.

Kind regards,


Ps: if i left something out that you will need, please let me know. I try to reply with a day (if I’m not working).

What workspace are you using? And what are your grbl settings?

Do you perform homing cycle before starting the milling job? Can you share the gcode, at least the part from the beginning to where the problem occurs? What are the coordinates shown in the axis widget?

@Justin_Adie My grbl settings are:
$0=10 (step pulse, usec)
$1=255 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=7 (dir port invert mask:00000111)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=115 (status report mask:01110011)
$11=0.020 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=1 (homing cycle, bool)
$23=3 (homing dir invert mask:00000011)
$24=25.000 (homing feed, mm/min)
$25=750.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$30=1. (rpm max)
$31=0. (rpm min)
$100=40.000 (x, step/mm)
$101=40.000 (y, step/mm)
$102=188.976 (z, step/mm)
$110=8000.000 (x max rate, mm/min)
$111=8000.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
$120=500.000 (x accel, mm/sec^2)
$121=500.000 (y accel, mm/sec^2)
$122=50.000 (z accel, mm/sec^2)
$130=540.000 (x max travel, mm)
$131=540.000 (y max travel, mm)
$132=100.000 (z max travel, mm)

But i dont really understand the workspace that you mentioned.

@sszafran , Yes i did that. At some point even a full reset and homing cycle before starting to send the auto leveling Gcode or noral Gcode.
That is also something, i dont see the numbers changing. They are always “stuck” at 0 for all three axis.
But the problem is that I cant post the Gcode from the auto leveling option becuase it is not visible for me. But if I saw it correctly, the following Gcode should be of my imported eagle PCB circuit:

(Gcode generated by ChiliPeppr Eagle PCB Widget 5/17/2017, 7:12:27 PM)
G28.2 X0 Y0 Z0
M3 S12000
(Tooldatabase for XATC [automatic tool changer])
(T1: Mill 1.0)
(T2: Sink 0.1)
(T3: Drill 0.8)
(------ DIMENSION Milling -----)
(chilipeppr_pause XTC T1)
M3 S12000
G0 Z1.0000 (al z mod 1)
G0 X26.7131 Y-0.496Z1.0000 (al new z)
G0 Z0.0000 (al z mod 0)
(step down -0.5 for new z -0.4)
G1 Z-0.4000 F30 (al z mod -0.4)
G1 X26.7131 Y-0.496 F100Z-0.4000 (al new z)
G1 X26.7752 Y-0.4841 F100Z-0.4000 (al new z)
G1 X26.8352 Y-0.4644 F100Z-0.4000 (al new z)
G1 X26.8924 Y-0.4373 F100Z-0.4000 (al new z)

What is the URL you use when you visit CP to mill using grbl?

I am not familiar with grbl 1.0c. It is way behind the current version. Is there a particular reason to use that version?

@Justin_Adie the link I use is: http://chilipeppr.com/xpix?forcerefresh=true

That was the version that came with the controller i’m using. And when i look at the producers website of my controller, their latest version is 1.0C. It is their own variant so i dont know if it is their own numbering or correlates to the grbl numbering.

I see. You probably need to track down the author of that workspace then.

Although that workspace seems to be intended to work with a tinyg so I find it very odd that it works with grbl at all. The messaging is completely different.

Perhaps 1.0c is a completely bespoke fork of the canonical grbl firmware that uses a tinyg style messaging paradigm. Seems odd though.

Frank Hermann is the author of xpix.

I came to ChiliPepper because if found in google that more people have tried this with the same setup as me. But the crucial part was still missing in those revieuw to debug my problem. But for them is worked.
Also when i connect to my CNC i have to select in the Jason server what kind of communication is expected, thus grbl and not thinyG.

Sure. The serial port widget changes the flow control that is used. But the workspace decides how to work with the information it receives.

As I said I know nothing about the messaging of 1.0c but you might try the grbl workspace. If it displays NaN then the status messaging protocol is not compatible.

I just opened the grbl workspace and tried the auto leveling feature.

As I was expecting, it’s that @#@#@# simpel solution. The auto leveling seems to work fine as is visible on screen. So i guess that would indicate the normal milling should also work, but that would be for tomorrow.

But @Justin_Adie you gave me just the right answers to solve my problem. So thank you so mutch in your effort and quick response.

@Justin_Adie ​ is right, you have to use grbl workspace. I don’t know which one is the best, possibly Justin’s one.

Depends on the messaging protocol. I have a feeling that neither will work as 1.0c seems to be a very intermediate and quickly abandoned branch.

@Remco_Hardeveld ​ if you can capture and publish what comes back from a ? query I can give better guidance on what the right workspace might be. This is the first time I have heard of anyone being on 1.0c

Perhaps you can also check with xcarve as to why 1.1x branch is not supported.

I have done what you asked, and this is the return:
$$ (view Grbl settings)
$# (view # parameters)
$I (view build info)
$N (view startup blocks)
$x=value (save Grbl setting)
$Nx=line (save startup block)
$C (check gcode mode)
$X (kill alarm lock)
$H (run homing cycle)
~ (cycle start)
! (feed hold)
ctrl-x (reset Grbl)

It just looks like a normal grbl interface to me, but it is the same output when using the TinyG workspace.

Also checked if 1.1x is supported but not on their offical website. There are some trying to use it, but personally I prefer to keep with their offical versions.

That is odd. Sending a question mark should return the current status. Not the help text. 1.0c must be a very non standard branch.

AFAIK neither the grbl nor the jpadie workspace will work, and neither will sjps as they all assume that a ? will result in a status report.

There is also a 0.9j version of the grbl firmware available on the X-Carve forked grbl page: https://github.com/inventables/grbl/releases. Possibly you could re-flash with the old version temporarily and see if that works any better. Another option is to copy grbl settings from the machine, re-flash it with official grbl firmware version of your choice (non X-Carve dedicated) and manually enter correct parameters back to the grbl.

I think the issue is not just parameters but that this is not a canonical version and does not report in the same way that vanilla grbl does. Until we know the status report format there is little we can do to help i think.

That is the other option I propose to use official grbl version (don’t know which is valid to be used, as I didn’t use grbl for a while) and copy parameters like steps/rev, axis direction etc. so the machine will move correct distance. I don’t have X-Carve, but I don’t think this is any different than other grbl based machines.