Makerbot Rep 2X and M322

108 views
Skip to first unread message

Jeffrey Birt

unread,
Apr 10, 2017, 9:36:48 AM4/10/17
to GPX converter
Hi all,

I recently started using Slimplify3D to give me more control over the slicing process. As you might know it used GPX to generate the x3g for the Makerbots. I was searching for a method to pause the print to insert a nut; typically I press in brass inserts but thought using a nut might work well in some cases.

After some searching I found that 'M322 zpos' 'should' insert a pause at the Z position designated by zpos, i.e. 'M322 Z18' will pause when Z is at 18mm. I also found that using the GPX macro ';@pause 18, 55' to insert the needed M322 commands for those Z positions.

I have tried both and when I manually insert the M322 into my starting script in S3D I can see it in the .gcode file but my 2X does not pause. I have seem that this 'may' not work with the Makerbot firmware but can't seem to find any confirmation of that, i.e. someone saying they changed to Sailfish and now it works for them.

Will M322 not work with Makerbot firmware? Is there a known set of GPX functionality that does not work with the Makerbot firmware?

Thanks!

Mark Walker

unread,
Apr 10, 2017, 9:48:04 AM4/10/17
to GPX converter
Can you post the gcode and x3g (upload to Dropbox and share a link here)? It may be that it isn't making it into the x3g. I've fixed a couple of bugs with pause and S3D is using an old version of GPX.

Also, GPX has a mechanism to avoid triggering during start gcode waiting position. You may have inserted the pause too early to work right. How are you putting it in? Editing the start gcode?

Daniel Newman

unread,
Apr 10, 2017, 10:20:02 AM4/10/17
to Jeffrey Birt, GPX converter
> Will M322 not work with Makerbot firmware?

In addition to Mark's comments, know that M322 is NOT supported by MakerBot's firmware. Yes
you must use Sailfish. While MakerBot copied Sailfish's "pause @ Zpos" for their own "pause
@ Zheight", they did not implement a m/gcode for it. It's entirely done through the LCD
display. (And also will not work if you change your Z axis steps/mm as they hard coded it
with 400 steps/mm.)

> Is there a known set of GPX functionality that does not work with the Makerbot firmware?

Keep in mind that GPX was written against Sailfish. Back in the early days of S3D, S3D only
worked with Sailfish. (It did things which unintentionally exercised bugs in the MakerBot
firmware; e.g., changing text on the LCD display in certain ways.) Overtime, GPX and S3D
have been generalized as necessary to also support the stock MakerBot firmware. However, yes
there are some things that the MakerBot firmware simply doesn't support -- not many -- but
one or two things. (I do not keep a list handy.)

Dan

Jeffrey Birt

unread,
Apr 11, 2017, 9:07:31 AM4/11/17
to GPX converter
Thanks for your replies! I read up on the Sailfish firmware installation as I was watching Start Trek Next Generation last evening and it all seems rather straight forward. The only small niggle is having to retrieve the offsets via Makerware first and then plug-them back into Sailfish; shame that could not have been automated. I am hesitant to try the firmware change as I have a backlog of prints to do now for students so it might have to wait a week or so.

S23 has really revived my 2X as Makerware has been crap for a long while now and Makerbot Print DOES NOT support both extruders. Makerbot has also made it more difficult over the past several months to report software bugs and provide feedback (there is a feedback button in help menu but they never respond in any fashion who who knows what happens to the feedback?)

Jeffrey Birt

unread,
Apr 19, 2017, 4:50:20 PM4/19/17
to GPX converter
I installed Sailfish, not a big deal to do. I then verified that everything works fine by doing a simple dual extrusion print.

Next, I tried to get a pause to work. I tried both the M322 and ;@pause. The M322 causes the machine to stop just after the prime strip is done. The ;@pause does nothing. If I use the Pause@Z from front panel it works fine. I used M322 Z2.0 in place of the ;@pause for the other try. I seem to recall 'something' about S3D using an 'older' version of GPX? Could that be the problem? Thanks!

Here is the code with ;@pause in it:

; **** Replicator 2X start.gcode ****
M73 P0 ; Enable build progress
G162 X Y F3000 ; Home XY maximum
G161 Z F1200 ; Home Z minimum
G92 Z-5 ; Set Z to -5
G1 Z0 ; Move Z to 0
G161 Z F100 ; Home Z slowly
M132 X Y Z A B ; Recall home offsets
M135 T0 ; Load right extruder offsets
G1 X-130 Y-75 Z30 F9000 ; Move to wait position off table
G130 X20 Y20 Z20 A20 B20 ; Lower stepper Vrefs while heating
M127 ; Set fan speed
M140 S110 T0 ; Heat buildplate
M134 T0 ; Stabilize bed temperature
M104 S230 T1 ; Heat left extruder
M133 T1 ; Stabilize left extruder temperature
G130 X127 Y127 Z40 A127 B127 ; Default stepper Vrefs
G92 A0 B0 ; Zero extruders
M135 T1 ; Load left extruder offsets
G1 X-100 Y-65 F9000 ; Move to front left corner of bed
G1 Z0.3 F6000 ; Move down to purge
G1 X90 Y-65 E24 F2000 ; Extrude a line of filament across the front edge of the bed
G1 X100 Y-65 F180 ; Wait for ooze
G1 X110 Y-65 F5000 ; Fast wipe
G1 Z1 F100 ; Lift
G92 A0 B0 ; zero extruders
M73 P1
;@pause 2
;@body (notify GPX body has started)
; **** end of start.gcode ****
G1 E-1.0000 F1200

Mark Walker

unread,
Apr 20, 2017, 2:21:07 AM4/20/17
to GPX converter
Running that through my version of gpx (and then decompiling) gives:

$ s3g-decompiler.py forum.x3g
Command count: (Command ID) Command description
1: (153) Start build notification, steps 0, name "forum"
2: (150) Set build percentage 0%, reserved 0
3: (134) Switch to Tool 0
4: (132) Home maximum on X, Y, feedrate 361 us/step, timeout 20 s
5: (131) Home minimum on Z, feedrate 136 us/step, timeout 20 s
6: (140) Define position as (0, 0, -2000, 0, 0)
7: (155) Move to (0, 0, 0, 0, 0), DDA rate 7799, X, Y, A, B relative, distance 5.000000 mm, feedrate*64 1248 steps/s
8: (131) Home minimum on Z, feedrate 1500 us/step, timeout 20 s
9: (144) Recall home position for X, Y, Z, A, B
10: (139) Absolute move to (-12235, -7059, 12000, 0, 0) with DDA 70
11: (145) Set X axis digipot to 20
12: (145) Set Y axis digipot to 20
13: (145) Set Z axis digipot to 20
14: (145) Set A axis digipot to 20
15: (145) Set B axis digipot to 20
16: (136) Tool 0: (13) Toggle blower fan 0
17: (136) Tool 0: (31) Set build platform temperature to 110 C
18: (141) Wait until platform 0 is ready, 100 ms between polls, 65535 s timeout
19: (136) Tool 1: (3) Set target temperature to 230 C
20: (135) Wait until Tool 1 is ready, 100 ms between polls, 65535 s timeout
21: (145) Set X axis digipot to 127
22: (145) Set Y axis digipot to 127
23: (145) Set Z axis digipot to 40
24: (145) Set A axis digipot to 127
25: (145) Set B axis digipot to 127
26: (140) Define position as (-12235, -7059, 12000, 0, 0)
27: (134) Switch to Tool 1
28: (139) Absolute move to (-12235, -7059, 12000, 0, 0) with DDA 70
29: (155) Move to (-9412, -6118, 12000, 0, 0), DDA rate 13395, A, B relative, distance 31.622776 mm, feedrate*64 9600 steps/s
30: (155) Move to (-9412, -6118, 120, 0, 0), DDA rate 7800, A, B relative, distance 29.700001 mm, feedrate*64 1248 steps/s
31: (155) Move to (8471, -6118, 120, 0, -2311), DDA rate 3137, A, B relative, distance 190.000000 mm, feedrate*64 2133 steps/s
32: (155) Move to (9412, -6118, 120, 0, 0), DDA rate 282, A, B relative, distance 10.000000 mm, feedrate*64 192 steps/s
33: (155) Move to (10353, -6118, 120, 0, 0), DDA rate 7841, A, B relative, distance 10.000000 mm, feedrate*64 5333 steps/s
34: (155) Move to (10353, -6118, 400, 0, 0), DDA rate 666, A, B relative, distance 0.700000 mm, feedrate*64 106 steps/s
35: (140) Define position as (10353, -6118, 400, 0, 0)
36: (158) Pause @ Z position 2.000000
37: (150) Set build percentage 1%, reserved 0
38: (155) Move to (10353, -6118, 400, 0, 97), DDA rate 1920, A, B relative, distance 1.000000 mm, feedrate*64 1280 steps/s
39: (150) Set build percentage 100%, reserved 0
40: (154) End build notification, options 0x00
EOF

It looks like the Pause is emitted where you'd expect.  It also gets emitted with gpx1.3 which I think is close to the one that s3d is using.  Do you have an x3g that S3D outputs using this gcode?  I could run the decompiler on it and see if it shows up.

Are you printing from the SD card using the LCD panel or are you driving the print over USB with S3D?

On Wednesday, April 19, 2017 at 1:50:20 PM UTC-7, Jeffrey Birt wrote:
I installed Sailfish, not a big deal to do. I then verified that everything works fine by doing a simple dual extrusion print.

Next, I tried to get a pause to work. I tried both the M322 and ;@pause. The M322 causes the machine to stop just after the prime strip is done. The ;@pause does nothing. If I use the Pa...@Z from front panel it works fine. I used M322 Z2.0 in place of the ;@pause for the other try. I seem to recall 'something' about S3D using an 'older' version of GPX? Could that be the problem? Thanks!

Jeffrey Birt

unread,
Apr 20, 2017, 10:16:27 AM4/20/17
to GPX converter
Thanks Mark. I found an up to date pre-compiled binary for GPX and dropped that in the proper directory in S3D and found I can indeed make it pause at a specified Z position when printing via SD card, when trying over USB it hangs up when the priming strip is complete.
Reply all
Reply to author
Forward
0 new messages