Hi, great work on the annotated gcode — this is by far the most thorough public documentation of the P2S startup sequence. A few observations that might be worth reviewing:
1. G380 S2 — S2 parameter is documented
You mark S2 as unknown in both G380 calls, but this is actually covered in community research: S2 selects load cell-based collision detection mode. Unlike a standard G1 move, G380 uses the toolhead's load cell to abort the move if unexpected resistance is detected. That's specifically why it's used here instead of a plain G1 Z — it's a safety move with obstacle detection, not just a positioning move.
2. M960 S1 P0 / M960 S2 P0 — correction, your annotation is likely correct
I initially suggested these might map to LED channels on the P2S rather than lasers. On reflection this was wrong — the P2S only has a logo lamp (controlled via M960 S5) and chamber lighting managed separately. S1 and S2 don't correspond to any visible light source on the P2S. Your "likely a no-op from shared gcode template" annotation is correct — these are X1C laser commands that do nothing on the P2S.
3. M622 J2 — worth noting the pattern
You flag this as "possibly a third branch" in two places (flow calibration and bed leveling). Looking at the pattern across the full sequence, J0 = flag false, J1 = flag true, and J2 seems to consistently appear as a second "true" branch that runs similar code. In the bed leveling block notably, J1 uses G29 A1 and J2 uses G29 A2 — so A1 vs A2 might indicate first print vs subsequent print within the same session, or single vs multi-material mode. Worth investigating.
Great repo overall — already referenced it from scoofz/P2S-start-gcode and the OrcaSlicer PR #13079 that applies the two bug fixes you documented.
Hi, great work on the annotated gcode — this is by far the most thorough public documentation of the P2S startup sequence. A few observations that might be worth reviewing:
1.
G380 S2— S2 parameter is documentedYou mark
S2as unknown in bothG380calls, but this is actually covered in community research:S2selects load cell-based collision detection mode. Unlike a standardG1move,G380uses the toolhead's load cell to abort the move if unexpected resistance is detected. That's specifically why it's used here instead of a plainG1 Z— it's a safety move with obstacle detection, not just a positioning move.2.
M960 S1 P0/M960 S2 P0— correction, your annotation is likely correctI initially suggested these might map to LED channels on the P2S rather than lasers. On reflection this was wrong — the P2S only has a logo lamp (controlled via
M960 S5) and chamber lighting managed separately.S1andS2don't correspond to any visible light source on the P2S. Your "likely a no-op from shared gcode template" annotation is correct — these are X1C laser commands that do nothing on the P2S.3.
M622 J2— worth noting the patternYou flag this as "possibly a third branch" in two places (flow calibration and bed leveling). Looking at the pattern across the full sequence,
J0= flag false,J1= flag true, andJ2seems to consistently appear as a second "true" branch that runs similar code. In the bed leveling block notably,J1usesG29 A1andJ2usesG29 A2— so A1 vs A2 might indicate first print vs subsequent print within the same session, or single vs multi-material mode. Worth investigating.Great repo overall — already referenced it from scoofz/P2S-start-gcode and the OrcaSlicer PR #13079 that applies the two bug fixes you documented.