Skip to content
Main site

Mainsail dashboard basics

The printer runs Mainsail, a web interface you open from any browser on the same network. Nothing is installed on your computer.


  1. Power the printer on and wait about a minute for it to join the network.
  2. Open a browser on the same network and go to http://g1os.local.
  3. The dashboard should appear straight away.

If the address does not resolve, it is almost always the network, not the printer:

  • Check the band. The Raspberry Pi only joins 2.4 GHz. If your computer is on the 5 GHz half of a network that shares one name, .local lookups can fail between the two. Join the same band, or use the IP address.
  • Find the IP in your router’s device list and open that instead. It works even when name lookup does not.
  • Restart the router if the name has never resolved - a fresh machine’s name takes a few minutes to propagate.

Prefer the name over the IP for day-to-day use: the IP can change when the printer reconnects, the name does not.


The G1OS dashboard: the sidebar down the left, the print job and Toolhead controls in the middle, temperatures and console on the right

The sidebar carries the sections below, plus two entries that are Ginger’s own: UPDATE G1, where the printer applies its own configuration, and by Ginger Additive at the bottom, which is always there and is not a status.

The home screen, and where you will spend a print.

  • Temperatures - one row per heater. The G1 shows four: heater_bed and the three barrel zones, listed as extruder, extruder1 and extruder2. Those are T0, T1 and T2 - the Feeding, Melting and Nozzle zones, counting from the top of the barrel. Two more rows are sensors only, with no heater behind them: Octopus (the main board) and Pi.
  • Click the temperature graph to expand it. A zone that saws up and down across several degrees, or climbs far more slowly than the others, is worth reading here before anything else.
  • Toolhead - axis positions and the manual jog buttons.
  • Macros - the buttons that do the G1’s own jobs. See below.

The G1 ships a long macro list, most of which are internal steps that the printer calls itself. These are the ones meant for you:

MacroWhat it does
BED_LEVELHomes, probes the bed, and saves the result. The one to run after moving the machine.
LOAD_MESHHomes and loads the saved bed mesh without re-probing.
SCREW_ADJUSTMENTTells you which Z rod to turn by hand, and by how much. There are no bed screws on the G1 — the gantry is trammed, not the plate.
CHANGE_NOZZLEWalks the machine through a nozzle change.
CHANGE_MATERIALWalks the machine through a material change and purge.
EXTRUDER_ROTATION_DISTANCESets the Rotation Volume for the screw.
MIXING_STEPPER_ROTATION_DISTANCEThe same, for the hopper auger (E1).
SET_PRESSURE_ADVANCE_AND_SMOOTH_TIMEChanges Pressure Advance live, mid-print.
LOAD_FILAMENT / UNLOAD_FILAMENTDrive material in and out by hand.
PAUSE / RESUME / CANCEL_PRINTPrint control.

Anything beginning with an underscore is an internal step. Leave it alone - those macros expect to be called in sequence, and pressing one on its own can move the machine in ways you are not expecting.

Left sidebar, then Heightmap. Shows the bed mesh from the last BED_LEVEL run.

Two names show up here. global is the full-bed probe that BED_LEVEL saves and LOAD_MESH loads. mesh1 is written at the start of each print, probed only across the area the part covers — so after a print, that is the one you are looking at.

On a machine that has never run BED_LEVEL there is no global yet, and LOAD_MESH has nothing to load. Run BED_LEVEL once before the first print. See Bed leveling system for which mesh a given print actually uses.

Reading it: a mesh sitting inside a few tenths of a millimetre is normal and the printer compensates for it. What matters is not the absolute numbers but the shape - a bed that slopes steadily from one side to the other is a levelling job for SCREW_ADJUSTMENT, not something to correct in software.

The Klipper terminal. Type G-code, and read what Klipper says back - when a print fails, the reason appears here first.

PID_CALIBRATE exists in Klipper but is never run on the G1. A zone that will not hold temperature has a physical fault; see Troubleshooting a temperature fault.

Where sliced files live, and where you start a print from. Drag a file onto the page to upload it, or send it straight from Ginger Slicer.

This folder is the only place the printer reads G-code from. A USB stick plugged into the Raspberry Pi will not show up here.

Maintenance lives here.

Config Files - the printer’s configuration, editable in the browser.

  • printer.cfg - the machine’s own config.
  • G1-Configs/ - the Ginger layer: macros, screen and interface config. These are written by the configurator and replaced on update, so anything you change by hand here is lost the next time. Change settings through the configurator.
  • After an edit, Save & Restart applies it.

Update Manager - eight rows: klipper, moonraker, mainsail, mainsail-config, KlipperScreen, crowsnest, GingerConfigs and system.

The full procedure is in Klipper firmware update.

System Loads - live CPU and memory for the Raspberry Pi.

Every past job with its duration and how it ended. Useful for the thing that is otherwise hard to reconstruct: whether a print that came out wrong actually finished, or stopped early.


The logs are their own section, not part of Config Files: left sidebar, Machine, then the Logs area.

Attach these when you report a problem:

  • klippy.log - Klipper’s own events and errors. This is the one that matters.
  • moonraker.log - the API layer between the browser and Klipper.
  • crowsnest.log - the camera service.

Top-right power icon.

OptionWhat it does
RestartRestarts the Klipper host process. Re-reads the config. Seconds.
Firmware RestartAlso resets the control boards and re-establishes the link to them. What to use after a SAVE_CONFIG, or when a board has dropped off. It does not flash any firmware - the name is Klipper’s, not a description.
RebootFull Raspberry Pi restart, about a minute.
ShutdownPowers the Pi down. Wait for the activity to stop before cutting mains power.

See Firmware restart for when each one is the right answer.


What you seeUsually meansWhat to do
g1os.local not foundName lookup, not the printerUse the IP from your router; check you are on 2.4 GHz
Page loads, says DisconnectedKlipper host stoppedFirmware Restart from the power menu
”Klippy is not running” bannerSame, or a config errorRead the Console - the reason is printed there
All zones show Off or nothingThe control board is not talkingSee Klipper MCU communication lost
Interface slow or stutteringPi under loadCheck System Loads; the camera is the usual cause
Display shows Unauthorized, browser fineMoonraker was updated to 0.11Display stuck after a Moonraker update