GCode Sender Software For XCarve and VCarve Desktop

I appreciate the ease of use of the Easel program and it’s general features for setting up XCarve. But I am looking for something more powerful and not cloud based.

After much reading and actual demo use of VCarve Desktop, I have found the software for CAD/CAM. However, I am struggling finding a good sender software. I have read that most forum members use either the Easel sender program, UGS, Pic Sender or CNCj.

Using Easel does not move me away from being cloud based, so I have done some preliminary evaluations of UGS and Pic Sender. UGS I could not get to work effectively for CNC setup and the GUI was not intuitive to me. Pic Sender’s setup reminds me of one similar to Easel which is more straight forward. However, I had problems with it claiming an alarm event that put me in G90 absolute mode which I think I figured out. But when operating the servo motors with the manual control, the motors “do not sound” the same as with Easel. I have made a few adjustments that gets the motors and their behavior to be quieter and smoother, but I feel like I do not know enough to make the right adjustments.

So that brings me to my question, has anyone established a setup for Pic Sender that mimics what is done on Easel for setup that establishes a baseline before carving? This setup would make sure all the right gcode registers are sent for things like limit switches, screw type, etc. and allows smooth manual operation for setup.

Any learnings, examples or advice would be very helpful. I would like to make sure I have the right sender software before spending money on VCarve Desktop and Pic Sender. Forum help would be appreciated.

One thought I had was to use Machine Inspector on Easel to see if I can learn the register values for the key setup items so I can better set up Pic Sender for the XCarve. Any thoughts? I plan trying this later today.


Your GRBL settings are stored on the controller not the computer sending gcode. I almost always use CNCjs to control my machines. It will not change your GRBL settings unless you explicitly type in and send new values.


I tried CNCjs for getting connected and just jogging and homing the machine. Overall, I like what I saw and the stepper motors behaved like they do when using Easel. Out of the box, it appears that CNCjs is better than UGS and Pic Sender which were going to require some setup effort on my part to get the XCarve up and running as expected.

There were several things that did come up that I need clarity on.

  1. After the XCarve first connects, there is an alarm that comes up and nothing functions on CNCjs except for Homing and Lock. Both of these clear the alarm and allow me to use the other functions. What is happening and what do I need to do to prevent the alarm from coming up? The same was true for Pic Sender.
  2. How do I save favorite settings. For instance, I use inches as opposed to mm. So I changed the command to give me inches. After I shut down and bring it back up, it is back in mm. How to I save this setting?
  3. How do I use the CNCjs to setup my Z probe? I see the Probe area, but it is not clear to me how to set it up.
  4. What is the best “guide” or setup manual for CNCjs?

For information:
I have an upgraded ShapeOko to XCarve. It has the X controller. The size is 500mmx500mm and I have homing limit switches. I use an IOT relay to turn my DeWalt DW611 on and off during the execution of a project.

Do you have favorite settings or operational tips that you can provide?


  1. This is a grbl thing. When homing is enabled, the default behavior is to enter an Alarm state until you home or unlock. You could disable homing, but I wouldn’t recommend it since you have the switches. You could re-compile grbl to change that default behavior, but I’d just recommend homing when you power on.
  2. I use mm, so I’m not sure on that one.
  3. Distance you want to probe (before there’s an error), feedrate, thickness of your probe (height above Z zero) and retract distance after successful probe. Use G38.2.
  4. There’s a wiki on the GitHub site. That’s where I’d start.

As far as tips, not really, but I wrote some macros for CNCjs. The tool change macros have changed the way I think about CNC. I’ve finally stopped avoiding tool changes and I now embrace the advantage it brings.

  1. Default behaviour, when homing is enabled power-on start in an alarm-state. Simply click “Home” and it will clear the alarm, do a homing cycle and syncronize machine coordinates with design/material coordinates. Creating a known reference point as work zero, parking spots etc are stored as offsets.


  1. Apparently, Easel does not experience this alarm because I never ran into it until using UGS, Pic Sender and CNCjs. Will this interfere with running gcode from VCarve Desktop or other CAD/CAM. Will I always need to home before running the g-code job?
  2. What do you mean by distance you want to probe (before there is an error)? Is this the distance that the bit goes into the probe before it stops? Essentially, zero correct? If you have the Xcarve and its Z probe, what are the settings that you use here?

Thanks for info on your macros…


Thanks for input…

If you always jog to within 10mm (eyeball) of the probe, you might set this to 15mm. If you just start probing from the top of your Z axis, you might want to set it to 100 or 150. If the Z axis moves that distance without making contact with the probe, motion will stop and it will report an error. That’s to make sure you don’t have a mechanical or electrical issue that would keep the probe motion going until something breaks.


You should when you first turn on the machine or lose position for some reason, but if you want to give up that absolute reference, you can just unlock the machine. If it’s already been homed, you can load and run as many jobs as you want.

No, you only do a new homing cycle if you think you have lost steps somewhere in the process / or need to restart an aborted operation.
Re-homing will re-sync machine to design.

Neil / Haldor,

After learning how to use CNCjs interface, I successfully took the Avalon sign created in the VCarve Desktop demo and ran it on my XCarve without error. It took me awhile to master the various functions of CNCjs, but it all worked without a hitch. Nice interface.

The CNCjs user guide could be improved so there is not so much discovery of how to run a project once everything is setup. A lot of trial & error and viewing a video before it all made sense.

Now, for my next question. Can I use Carbide Create with CNCjs to run a project on my XCarve? The thing that is confusing me is that I need an XCarve post processor on VCarve Desktop to create the toolpaths for the XCarve, but there does not appear to be the ability to add a post processor to Carbide Create. Do I need one or can I take the gcode .nc file directly from Carbide Create, upload it to CNCjs and run it successfully on my XCarve.

If I can use Carbide Create I can do most of what I want to do right now without the expense of VCarve Desktop. I understand VCarve Desktop is a more powerful program, but Carbide Create can probably do 80% of what I want to do right now until my skill level increases.

Thanks… Mark

No need to do anything special.


I am still exploring the CNCjs desktop app and ran into another question of how to use it.

How do I make a simulated run of my gcode before I run it on my XCarve? Supposedly the Visualizer Widget will do this, but I do not see any way to turn the Visualizer Widget on for simulation only.

It appears the only way to load gcode is when CNCjs is connected to my XCarve. When you hit the forward button, it operates the XCarve and shows/simulates the action on the CNCjs display. I want to be able to do the simulation without operating the XCarve. How do you do this? Is it possible?


Pick up an arduino clone, and plug that in when you want to visualize. I always have arduino boards laying around (I teach electronics), but more often than not, I use this online tool to visualize my gcode if I need more than just seeing the toolpaths.

1 Like