Getting bCNC working; Setting up required parameters

I’ve been successfully using Carbide Create and Carbide Motion on my Pro XXL for a few months now. However, I need automatic leveling for a job I’m working on [*] and decided to try bCNC. I’m using a Raspberry Pi 400 (RPi 4 built into the keyboard) and have correctly installed bCNC.

When I run it,I can connect to my machine but when I do, it stutters in the Y+ direction for a few inches then stops and bCNC flags an error and disconnects. The movement sounds like the machine is trying to move too fast and is missing steps. CM has never done this - it has been working great and still does if I go back to it.

Is there a bCNC tutorial someplace that describes the required setup for a Shapeoko? Initial parameters like speeds and machine size, sample initialization file or whatever? Anyone else have bCNC working on a Shapeoko?

Thanks in advance.

  • Dan

[*] - The pieces I’m working on are slightly warped reclaimed wood and I need to machine away only about 0.045" while engraving some words for a sign. I cannot fly surface the wood since it is already finished on a 0.030" think veneer.

Never used bCNC but it’s strange that it would impact how the machine behaves, since it’s still GRBL leading the show, and it should still have its original parameter values (the ones set by CM when using “send configuration data” )

The bCNC main page has a few info in the IMPORTANT! and Configuration sections that you may want to check, especially those two:

  • GRBL should be configured to use MPos rather than Wpos . This means that $10= should be set to odd number. As of GRBL 1.1 we reccomend setting $10=3 . If you have troubles communicating with your machine, you can try to set failsafe value $10=1 .
  • CADs, bCNC and GRBL all work in milimeters by default. Make sure that $13=0 is set in GRBL, if you experience strange behavior. (unless you’ve configured your CAD and bCNC to use inches)
1 Like

I don’t know anything about bCNC, but I am curious about what you are trying to do and what you think bCNC can do. From what I gather, you want to engrave at constant depth on a non-flat surface? bCNC can probe that and generate the surface definition for you?

Correct, bCNC has an auto-leveling feature where a surface can be probed, then a G-Code file will be mapped to the probed surface (by converting it to polylines and adjusting the Z coordinates) before sending to the machine — usually this is done for PCBs, but it can be useful for other projects.

Ah, I see. Thanks for the description, Will. I have heard the term with respect to 3-D printers (bed flatness compensation feature), but didn’t really know exactly what it meant in this context. And I’d have to say it is a bit of a lazy term, if “auto-skew” is as accurate and descriptive as “auto-level”.

I’ve tried $10=3 and $10=1 but no success so far. I’ve also noticed that Z moves down slightly while Y jitters up (+) a few inches.
[Edit: Pretty sure it’s not an inches/metric thing since I cannot even get past the startup phase to a point where I could set that.]

CM still works well and I can manually drive the machine using PuTTY and CuteCom. (That’s how I changed $10.) Here’s a $$ list in case there is something else wrong:

$0=10
$1=255
$2=0
$3=5
$4=0
$5=0
$6=0
$10=1 (Also tried $10=3)
$11=0.020
$12=0.010
$13=0
$20=0
$21=0
$22=1
$23=0
$24=100.000
$25=2000.000
$26=25
$27=3.000
$30=1000
$31=0
$32=0
$100=40.000
$101=40.000
$102=200.000
$110=10000.000
$111=10000.000
$112=1000.000
$120=500.000
$121=500.000
$122=270.000
$130=845.000
$131=850.000
$132=95.000
ok

I thought the baud rate might be wrong but I’m using 115,200 in all 4 programs. Also, using the bCNC debug log feature, I get this log:

8x8x8x8888888888x8x8xx8x8x8x888888888888x8x8x8x8888888888x8x8x8x8888888888x8x8x8x8888888888x8x8x8x8888888888x8x8x8x888888888888x8x8x8x8888888888x8x8x8x88888888888888888x8x8x8x8888888888x8x8x8x8888888888x8x8x8x8888888888x8x8x8x8888888888x8x8x8x888888888888x8x8x8x8888888888x8x8x8x88888??
?Grbl 1.1f [’$’ for help]
[MSG:’$H’|’$X’ to unlock]
<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0|WCO:0.000,0.000,0.000>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0|Ov:100,100,100>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0|WCO:0.000,0.000,0.000>
!!?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0|Ov:100,100,100>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>

?Grbl 1.1f [’$’ for help]
[MSG:’$H’|’$X’ to unlock]
<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0|WCO:0.000,0.000,0.000>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0|Ov:100,100,100>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>
?<Alarm|MPos:0.000,0.000,0.000|Bf:14,128|FS:0,0>

One more bit of information, $10 was =255 before I changed it to =3 and =1.

Well … after much fooling around and trying lots of different things, I have it “sort of” working. If I use a terminal emulator (PuTTY or CuteCom) to reset (Ctrl+X) and home the machine ($H), then exit and run bCNC, it still stutters in +Y for a few inches and moves a little in -Z, BUT then I can switch to the CONTROL tab and hit HOME. That works - sometimes. It’s still hit or miss but once it’s connected and working, it seems to be stable. The bad behavior only occurs when trying to make the connection between bCNC and the machine.

Now hopefully I can get used to the bCNC interface. It is NOT as friendly as CM and I’ve crashed into the hard stops a few times. So far, I’m only “air cutting” so haven’t broken anything or ruined a work piece. But I can tell - I need to be VERY careful with every mouse click!

I haven’t found any good support for bCNC other than filing an issue on github.

I used bCNC when it first came out (and pitched a couple of usability ideas) — it should send the same sort of commands to start homing as Carbide Motion does — could this be coincidental w/ some other change which is the actual cause?

I haven’t made any other changes to my setup or machine. Haven’t changed power connections, location or USB cable. All the same as it has been for months. Plus CM and terminal emulators work perfectly. But every time I connect to the machine with bCNC, I get the undesirable movements in Y&Z.

According to the bCNC debugging log file, it doesn’t appear to be doing anything strange either. The only odd thing is the string of random “8” (0x38) and “x” (0x78) characters that appear to be coming from the Shapeoko at startup. Here’s part of a detailed log file:

000000.003 Q-RX reset_input_buffer
000000.004 DTR inactive
000001.008 Q-RX reset_input_buffer
000001.008 DTR active
000002.011 TX 0000 0A 0A …
000002.013 RX 0000 78 x
000002.014 RX 0000 38 8
000002.015 RX 0000 78 x
000002.015 RX 0000 38 8
000002.016 RX 0000 78 x
000002.017 RX 0000 38 8
000002.017 RX 0000 78 x
000002.018 RX 0000 38 8
000002.018 RX 0000 38 8
000002.019 RX 0000 38 8
000002.019 RX 0000 38 8
000002.019 RX 0000 38 8
000002.020 RX 0000 38 8
000002.020 RX 0000 38 8
000002.021 RX 0000 38 8

Maybe it relates to bCNC toggling DTR for 1 second?!?!? DTR really only applies to a real serial port. I’m not sure what this does to the USB port.