Controller Board v3.0c

Hi Everybody,

I am looking for the pinout for the ISP1 header on this board version. I found documentation on the 2.4 board but not on the v3.0c which is in my SO4. On my board the header is orientated differently to the documented layout.

I want to connect a SuperPID2 and not have to solder pins to the four holes on the right side of the board where it says SPID. Perhaps somebody can assist here…

Thanks in advance

Hi @Stefan,

Best would be to ask to get an official answer.

I don’t have a 3.0 board but I think it’s like this (@Norway can confirm, the pic is from him, the color labels are my interpretation)

One thing I do know is that you can also get the PWM signal off of the BitRunner connector on the left, it’s a Microfit connector, and as per @Norway’s reverse engineering work the pinout is


or on the vertical connector next to that


Don’t trust me and check with a voltmeter, the PWM pin voltage should vary from 0 to 5V depending on the spindle speed command (M3Sxxx) you send and what your GRBL $30 is.

Whatever you do, be super careful not to short a 5V pin with anything and fry your board…

Hi @Julien,

thanks for the answer. I actually reached out to support but did not get an answer. I found another post with the 2.4 board where @dandangerous posted a description. Hope that @Norway can confirm the pinout.

Goal is the following circuit that includes a run switch

and a selector to switch between a PWM speed control signal and the speed pot like shown here

What a journey… hopefully I can report success without blowing up my board

Hi @Stefan,

Sorry for the delay, summer vacation…

My guess is that there is zero difference in the schematics electronic components and signal names between most of the the Shapeoko controller boards except that connectors (and pinout) are of a slightly different type. It’s because the firmware is based on an open source project. Newer connectors are probably cheaper and more assembly friendly from cable point of view.

The PWM output goes directly to the mega328 uP and is unprotected. Be extremely careful if using the X12 connector as the unregulated 24V will potentially kill things… This is probably why you wouldn’t get any answers from support… no warranty policy for experimentation…

I posted some details about what can go wrong here: Feed Hold Switch - #69 by Norway

Signals between in the two connector are connect by name (wired on PCB). PWM is normally alternating 0V and 5V if using a BitRunner. The PWM duty cycle is else set by the commands as stated by @Julien in the “spindle ON” state.

I don´t have a SuperPID2 and it’s a bit hard to verify, but it looks correct based on what I’ve seen here: ShapeOko 2: SuperPID Upgrade! - YouTube. A bit confusing in this video @6:17 as it says that the PWM goes to the PC. It shall be output from the PC and input to the SuperPID2. Then there is probably a RC (serial resistor to a capacitor to ground) low pass filter where the average analog signal “equivalent” to you pot. goes from junction resistor-capacitor and output on terminal VS.

Wires connected to the 3.0 board should be PWM and GND only. This is my best guess. Good luck!

Hi @Julien,

I did wire up my SuperPID 2 with the SO4 now. I havent implemented the run switch yet but the selector between POT and PWM. It works fine but one problem is left, In CNCJS via PWM, the router doesnt stop when an M5 command is sent. It keeps spinning at 5k RPM. I checked $31 but it is set at 0. Do you have any idea what could be the problem?

What is the voltage between PWM and GND after you have issued the M5 command?

measured on the SuperPID between GND and PWM I have 0V after M5

Then I suppose it’s a matter of configuration at the superPID level? There may be a min RPM value parameter similar to $31 that forces a min RPM (e.g. to ensure a minimum airflow or something)?
I’m not familiar with the details of the superPID, sorry
Does manual operation with the potentiometer allow to go down to 0 RPM?

no, with the pot it stays at 5k, too.

might this:

Then find these two lines and “uncomment” - delete the two // in front (credit to this site and this post for the code and explanations).

> // #define INVERT_SPINDLE_ENABLE_PIN // Default disabled. Uncomment to enable.
> // #define USE_SPINDLE_DIR_AS_ENABLE_PIN // Default disabled. Uncomment to enable.


> #define INVERT_SPINDLE_ENABLE_PIN // Default disabled. Uncomment to enable.
> #define USE_SPINDLE_DIR_AS_ENABLE_PIN // Default disabled. Uncomment to enable.

be the problem?

Since you have found this thread,

did you hook up D13 to the SuperPID’s RUN input as per:


and then rebuild GRBL with that modification you mention ?
It seems like this will do exactly what you are after (stopping/starting the router automatically upon M3/M5, on top of setting its speed via PWM)

found that, too. I am going through the rebuild GRBL (bit scared not to fu… it up).

1 Like

it worked… now M3 and M5 operate correctly. Thx for your assistance

1 Like


That thrill when you click on the upload button in the Arduino IDE, and hold your breath for a few seconds while the GRBL reprogramming is in progress…priceless :slight_smile:

1 Like