LinuxCNC on LowriderV2

PART 1: Why

Features added with LinuxCNC and Fusion360 Post Processor:

  • Auto Squaring of Z and Y Axis
  • Max and Min Switches
  • Physical Emergency Stop (NOT YET ADDED, will update)
  • Repeatable Home position
  • Stable Control software (Lots of Lag/freezing with CNC.js)
  • Auto On/Off Router
  • Easier Tool Changes with touchplate for extreme accuracy
  • More Capable GCode interpreter (subroutines, looping, etc)

Previous WorkFlow

  1. Design/CAD
    • InkSkape (For signs)
    • Fusion360 (For Structural or multipart Pieces)
    • Blender (only a little)
  2. CAM
    • Fusion360
  3. Control/Hardware
    1. Gcode saved to Network SMB Share on Design PC
    2. Loaded into CNC.js on V1Pi from Share Folder
    3. Ultimaker Rambo 1.4 controller
    4. Lowrider V2 w/ Dewalt 611
  4. Profit?

Current WorkFlow

  1. Design/CAD
    • InkSkape (For signs, Save as DXF import into Fusion360)
    • Fusion360
  2. CAM
    • Fusion360 w/ semicustom Post Processor (linked below)
  3. Control/Hardware
    1. Saved to USB Thumb (why not share folder, see security comments below)
    2. Transferred to Refurbished Dell Point of Sale machine running LinuxCNC 2.8
    3. LinuxCNC Controller GUI
    4. 2x Parallel Ports out to Sainsmart Breakout Boards
    5. TB6600 Stepper Motor Drivers (maybe not the best choice)
    6. LowriderV2 w/ Dewalt 611
  4. Profit?

Part 2:Parts

Part Cost Source Notes
Desktop Computer $104 NewEgg I'm using HP Elite 8200. It must have an onboard 25 Pin Parallel Port. A second Parallel Port can be added with PCI expansion board
Parallel Port Connector $7 Amazon
Parallel Port PCIe $9 Amazon
Parallel Port BOB $22 Amazon
Parallel Port BOB $22 Amazon Will Need 2 to replicate my setup
Stepper Motor Driver $100 Amazon Will need 5 to replicate my setup, can use different stepper motor drivers for as low as $10 using 4988 stepper motor drivers. Will test with this setup later and report
Microswitch $8 Amazon Will need at least 5, to replicate my setup.
PowerSupply $12 Amazon You probably already have one
Touch Plate $6 V1
Misc Wire $10 I'm using Network cable and Ethernet Breakout Boards but this isn't required
Optional Parts
Ethernet Connectors $7 x 10 Amazon Used to connect between the CNC and the controller
Cat5 $60 Amazon You DO NOT need this much, but I already had it from work
RJ45 Connectors $9 Amazon
RJ45 Tool $16 Amazon
Power Relay $27 Amazon Many options out there like this that can be done much cheaper
Barrel Jacks $12 Amazon I use this to connect my Touch Plate to the Gantry so I can easily remove it
Min Total $60 Assumes you already have a Desktop Compatable and are using cheap 4988 stepper motor drivers, which you may already have too
Safe Total $300 Everything on this list essentially that isn't optional
What I spent $400ish

Part 3:Wiring


I’ll post the next parts tomorrow. That wiring diagram took longer than I thought it would to make


Thank you for this

1 Like

Part 4: Install LinuxCNC

Note: In retrospect this is not the best way to do this. I’ll provide more information at a later date with how to get a better environment, but following these steps will let you get at least an initial setup. Later on I should be able to provide a custom ISO with everything set up, so there is minimal steps. Namely I want to use either the Ubuntu (way more user friendly) or Debian 9. Both of these would be more secure. With this current setup I highly discourage using this Debian 7 Machine for anything other than running LinuxCNC. You should not browse the internet, or sign in to any of your accounts. Debian 7 is very vulnerable to exploitation.


What you are doing in this step is downloading the Debian Operating System that has been custom compiled to operate CNC machines. It includes some of the software needed to run the Lowrider, but we will be upgrading it to the "not officially released" version to get one of the best features. Kinematics. This will allow you to Home each motor independently.

Steps to Install the OS

  1. Download LinuxCNC ISO
    • This is a direct link to the Debian 7 ISO. An ISO in this case is an install disk for an operating system.
  2. Download Rufus for Windows (assuming you are on Windows), if you are on Linux you can use dd
  3. Insert a reasonably large (16GB+) USB drive into your computer. And open Rufus software
  4. Select the ISO downloaded in step one as the source and the USB drive as the target.
    • I used linux `dd if=~/linuxCNC.iso of=/dev/sdb`.The above should work but if anyone has issues or input let me know and I'll update this section as needed
  5. Safely remove the USB (eject) when complete
  6. Insert the USB into the powered off PC that you plan on using for your LinuxCNC controller
  7. Power on the PC and press the keys to enter BIOS as the PC powers on. (ESC on my computer, often it is F10 or DEL)
  8. This step is a little vague because its going to be very different based on what PC you are using and its BIOS. You need to set it the Boot Order, so that USB comes before the HDD. If you need assistence with this send me a PM and I'll help you work thru your particular machine. Google is your friend here.
  9. Save and continue booting to the USB
  10. Follow the on screen promts to install Debian. If I remember correctly the defaults were all fine, you will just have to make a user and password.
  11. You should eventually boot into Debian 7 LinuxCNC 2.7 (but we aren't done yet. We need to update to 2.8)

So for those of you interested in doing this, I’m going to post my HAL file, INI file, Fusion360 post processor, and a few short scripts I use. I’ll host it on my github.

WARNING: I’m getting a weird skewing issue on my cuts. I’m not sure if this is software or hardware at this point.

Its a mess right now, but I’ll keep updating it once I make fixes and adjustments. I should have been already …

1 Like

So the skewed issue was due to me setting the amps too low on my motors and missed steps. I seem to have solved it. So it wasn’t software.

1 Like

It would be worth mentioning to the uninitiated that linuxcnc has a feature called “Path Blending”. It’ll take shortcuts from one path (movement) to the next to save time. In computer graphics terms you can kind of think of it like anti-aliasing. The tolerance with which linuxcnc stays within the gcode path can be set with a G64 P#.#### gcode in the files preamble.

1 Like

Hey that’s super interesting and could be the cause of some issues I’ve been seeing. I’m definitely going to look in to it

1 Like

What are your jitter numbers on your PC? Did you find you had to make any bios or hardware changes or were they good right out of the box?

You might be interested on this quick instruction on getting LinuxCNC running on Mint 20

1 Like

I added a second Parallel card, and had to make some changes in bios to get the second card working. I don’t remember what exactly now. I also had a hard time getting it to boot to USB, I actually wasn’t the one that fixed that one, my gf did while I was at work. I had tried setting the boot order, and turning off every other boot device, but it still kept trying to either network boot or boot to HDD. She said there was some security setting she had to adjust. The Bios on this computer is … lacking … to say the least.

I’m currently running the motors off the PCIe Parallel card, when I should instead be running it off the onboard one. My jitter numbers are like 10ms but those were set and tested before I made a lot of changes and I didn’t stress the machine near enough so I should do it again. I didn’t have a Parallel port header cable when I first started setting it up, and added it later. I should be able just flip the addresses in the hal and flip the cables to switch the two without changing all the parport.0 to parport.1 and vise versa. It’s running fine now but I’ll definitely be readjusting it after I make that change.

Mint is a good option. I’m pretty familiar with it, but more familiar with debian, since that is what I use at work. Mint is more user friendly tho and may be better for others. I may work on making a custom ISO with mint and linuxCNC set up for the Lowrider that people can download and install. I’d like to but so many projects right now …

I just looked at a gcode generated by fusion360. It doesn’t add any G64, so the default is being used which is blending. I can easily add that to my fusion postprocessor to add a G64 P?. But what should the tolerance be set to? Do you have any recommendations?

1 Like

I don’t know but for reference the PP I’m using for SheetCam and plasma cutting has it set to 0.01" (or 0.254 mm)

G64 P0.01 Q0.001 (tracking tolerances: 0.01")

But that’s plasma which is already blazing fast and I suppose isn’t going to be as dimensionally accurate as milling.

I’m guessing the correct but unsatisfying answer is “it depends.” I suppose if you’re doing big 2d signage you can set it relatively high, if you’re doing fine 3d modeling then set it to something like 0.0001

1 Like

Well I think it definitely needs to be set to something. I’ll play with it and update this post and my github with my findings.

I’d like to come up with some sort of benchmark piece to test this. Like a benchy or temp-tower for 3d printing.