GRBLhal on SKR 2 for an MPCNC

A while ago, my brother in law and I had decided it’d be a fun project to build our MPCNCs, one each. Given that we were both in Switzerland at the time, sourcing parts was not trivial, nor cheap. Grouping the orders made sense, and I have all the 3D printing experience and machines needed for those.

We sourced the hardware kits from someplace in Germany selling the M4/M8 variant of the MPCNC Burly kits at the time. And then, life got in the way, as it always does. I became a father, he took on a new job and had to move across country lines.

But recently I’ve had a need for a Grbl-based CNC router, and I thought “waitaminute, I’ve got those boxes of parts and tubing ready to go!” So I dusted off the box, pulled the steel tubes from the basement, and went shopping for a piece of furniture to mount machine on.

A few days of assembly later and I had my MPCNC ready for wiring & electronics. The wiring isn’t complete yet, since I will test the machine using a pen holder instead of the Aliexpress 500W, ER-11 equipped spindle.

I had initially ordered a RAMPS+Mega2560 board off Aliexpress to run Grbl. Oops. It didn’t pass the smoke test. Literally.

So then I hunted around for a decent quality controller I could run GRBL or GRBLhal on. I found a decently priced and quite close SKR 2 board with TMC2209 step sticks that would fit the bill.

Once it got here, I started working to flash GRBLhal onto it. The method is similar to how one flashes Marlin or the Klipper MCU firmware to any BTT board, put the firmware.bin on the SD card, let it start up and pull the SD card out, verify the file is now called FIRMWARE.CUR and you’re done.

Except… not quite. The damn thing wouldn’t show up on USB! Which is very odd. I had tested it out of the box and the factory test firmware did show up, so I knew the hardware was fine. But the platformio configuration had every flag needed for it that I could find in the platformio and GRBLhal documentations.

After 24 hours of frustration, some sleep and a lot of Google searches, I ran into this particular platformio forum thread outlining how the default platformio build parameters don’t really setup the USB CDC driver properly on the controller.

A clue was found, a thread pulled, and a mystery unravelled. Next thing I knew, the machine was sort of working. The only issue I then ran into was one of those pesky JST-XH connector crimps not working properly, leading to one of the steppers to never properly move.

Once all that was solved, well, it was time to move on. And move it did!

Tadaaaa!