The syringe pumps are controlled by the 3D printer motherboard, which is already flashed with Marlin software and therefore works with G-code. There are two ways of controlling the pumps: a) using a computer connected to the board via USB and using direct control software such as PronterFace or Octoprint , with the latter able to be used remotely via network. B) writing the G-code file, uploading it on a microSD card and using the printer interface for printing the file without the need of a computer attached to the pumps. A G-code file is a set of instruction which Marlin interprets line by line and passes the operations to the motors. The file is a simple text file saved as .gcode. For controlling the pumps, a few Gcode commands are needed: M92 X<Steps per mm> Y<Steps per mm> Z<Steps per mm> M92 should be at the start of the G-code, as this command will set the number of steps required for moving one axis one millimeter, which in the case of the Ender 3 motors/drivers and the M5x0.8 mm threaded rod is 4000 steps per mm. The Ender 3 uses stepper motors with a step angle of 1.8 °, or 200 steps per revolution. The TSMC2208 stepper drivers are set to 1/16 microsteps, which is the default setting for the Ender 3. The pitch of the leadscrew is 0.8 mm. This gives the value of 4000 steps per mm. However, as we are dealing with flows, we found that it is more userfriendly to change this command from steps per mm to steps per mL. This can be easily done by calculating the distance required to push a volume of 1 mL depending on the diameter of the syringe used. To do this, the inner diameter (I.D.) of the syringe needs to be determined. Next, the area of the plunger can be calculated. The linear syringe travel to deposit 1 mL can be calculated by dividing 1 cm 3 by the plunger area (cm 2 ). Divide this number by the steps per mm value (4000) to get the steps per mL. We have attached a simple calculator in the supplementary material to calculate the steps per mL using the diameter of a syringe as input. As an example, a 10 mL syringe has a diameter of 15.6 mm and the calculated steps required to move 1 mL are 20927, a 5 mL syringe has a diameter of 12.3 mm and the calculated steps are 33663. Another thing to take note of, is that in the normal configuration, the X and Y motors are inverted, so this should also be set in the M92 command by giving negative step/mm values. A M92 set up using two 5 mL syringes on the X and Z axes and a 10 mL syringe on the Y is therefore: