Marlin is open source firmware originally designed for RepRap project FDM (fused deposition modeling) 3D printers using the Arduino platform. Once the firmware has been compiled from C++ source code it is installed and runs on a mainboard with onboard components and general-purpose I/O pins to control and communicate with other components. For control the firmware receives input from a USB port or attached media in the form of G-code commands instructing the machine what to do. For example, the command G1 X10 tells the machine to perform a smooth linear move of the X axis to position 10. The main loop manages all of the machine's real-time activities like commanding the stepper motors through stepper drivers, controlling heaters, sensors, and lights, managing the display and user interface