> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.simplyprint.io/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Printer screen stuck at 0% or ignoring the bed mesh when printing through OctoPrint over USB

You start a print from SimplyPrint or OctoPrint and the printer prints, but its own screen and settings behave as if it isn't:
- the screen shows the printing screen with the name of the last file you printed from the SD card, and no thumbnail;
- the progress bar stays at 0% for the whole print;
- the bed mesh or Z-offset you set on the printer seems to be ignored, so the nozzle pushes into the bed at the start, even though the same file prints perfectly from the SD card.

This guide explains why, and what you can do.

**In this article**
- [What serial printing is](#2-what-serial-printing-is)
- [Why the printer acts as if it isn't printing](#2-why-the-printer-acts-as-if-it-isnt-printing)
- [Step 1: Load the bed mesh in the start G-code](#2-step-1-load-the-bed-mesh-in-the-start-g-code)
- [Step 2: Set the Z-offset in the start G-code](#2-step-2-set-the-z-offset-in-the-start-g-code)
- [Step 3: Update the printer's firmware](#2-step-3-update-the-printers-firmware)
- [Step 4: Look for an OctoPrint plugin](#2-step-4-look-for-an-octoprint-plugin)
- [Step 5: Try a community firmware](#2-step-5-try-a-community-firmware)
- [Step 6: Consider Klipper](#2-step-6-consider-klipper)
- [Check your printer on the compatibility list](#2-check-your-printer-on-the-compatibility-list)

## What serial printing is
When you print from the SD card, the printer reads the whole file itself and runs its own print routine: it shows the file name and thumbnail, counts the progress and loads its saved settings.

With OctoPrint, the file stays on the Raspberry Pi. OctoPrint sends the G-code to the printer over the USB cable a few lines at a time, and the printer runs each line as it arrives. This is called serial printing, or streaming. A print you start from SimplyPrint on an OctoPrint printer is streamed the same way.

## Why the printer acts as if it isn't printing
To the printer, a streamed print is a long list of commands. Many printers handle that well. On some, the firmware only runs its "print" routine for files on its own storage, so during a streamed print the screen isn't updated and the saved bed mesh or Z-offset may not be switched on.

The mesh and Z-offset are still stored on the printer, and the printer still runs the print. This is how that printer's firmware handles serial printing, not a bug in SimplyPrint or OctoPrint, and neither can change what the firmware does. What you can change is the G-code the printer gets, and the firmware it runs.

The screen is cosmetic: SimplyPrint and OctoPrint show the real progress of the print. Fix the bed mesh first, since that affects your prints.

## Step 1: Load the bed mesh in the start G-code
||| Watch the first layer of a small test print after any change here, and be ready to stop the print. A wrong setting can push the nozzle into the bed.

These commands work on most Marlin printers:
1. In your slicer's printer settings, open the start G-code (usually called **Start G-code** or **Machine start G-code**).
2. Find the `G28` line, which homes the printer.
3. Right after it, add `M420 S1`. This turns bed leveling on, using the mesh the printer has saved.
4. Or, to measure a fresh mesh before every print, add `G29` there instead. This probes the bed, which adds some time to each print.
5. Slice the file again and print it.

If `M420 S1` doesn't help, level the bed from the printer's screen, save the result, and try again.

## Step 2: Set the Z-offset in the start G-code
If the first layer is still too low or too high with the mesh loaded, the printer may not be applying its Z-offset. On most Marlin printers:
1. In OctoPrint, open the **Terminal** tab and send `M503`. The reply lists the printer's stored settings, including a line starting with `M851` that holds the Z-offset.
2. In the start G-code, add that line with the same Z value before `G28`, for example `M851 Z-1.25`.
3. Slice again and watch the first layer.

Some slicers also have a **Z offset** setting in their printer settings that shifts the whole print up or down. Use one or the other, so the correction isn't applied twice.

## Step 3: Update the printer's firmware
Install the latest official firmware for your exact model from the manufacturer's support page. Newer versions sometimes improve printing over USB.

## Step 4: Look for an OctoPrint plugin
Search the [OctoPrint plugin repository](https://plugins.octoprint.org) for your printer's name. For some printers, a plugin fixes serial-printing quirks, such as the screen not showing progress. See [How to install an OctoPrint plugin](https://help.simplyprint.io/en/article/how-to-install-an-octoprint-plugin-gpw4br/).

## Step 5: Try a community firmware
||| Installing third-party firmware is at your own risk. Write down your settings first, and follow the project's instructions for your exact printer and mainboard.

Many popular printers have a community Marlin build that fixes things the official firmware doesn't. For the Elegoo Neptune 3 Pro, there is [Elegoo-Neptune-marlin](https://github.com/Hummtaro/Elegoo-Neptune-marlin).

## Step 6: Consider Klipper
Klipper is printer firmware that runs on a computer such as your Raspberry Pi, with the printer's board following it. Klipper's official repository has configurations for some printers, the Neptune 3 Pro among them. A Klipper printer connects to SimplyPrint through Moonraker, the software behind Mainsail and Fluidd, instead of OctoPrint.

This is an advanced change: you flash the printer's board, and the printer's own screen may stop working. Do it at your own risk.

## Check your printer on the compatibility list
Look your printer up on the [SimplyPrint compatibility list](https://simplyprint.io/compatibility). On its page, the OctoPrint card lists anything the printer needs first, such as a minimum firmware version, a community firmware or an OctoPrint plugin. A printer known to behave as this guide describes says **Its screen may not show prints sent over USB, or load its saved bed mesh for them**. Owners' ratings show how well it works with SimplyPrint for each connection method.

The [compatibility finder](https://simplyprint.io/compatibility/check) shows the other ways your printer can connect. Some newer printers connect through the SimplyPrint Client or Klipper instead of OctoPrint, and don't stream G-code over USB.

## Related articles
- [How to tell if a 3D printer is compatible with SimplyPrint, OctoPrint, Mainsail or Fluidd](https://help.simplyprint.io/en/article/how-to-tell-if-a-3d-printer-is-compatible-with-simplyprint-octoprint-mainsail-or-fluidd-18txgyi/)
- [My printer isn't on the SimplyPrint compatibility list](https://help.simplyprint.io/en/article/my-printer-isnt-on-the-simplyprint-compatibility-list-ma5j3h/)
- [Bad print quality when printing through USB / SimplyPrint / OctoPrint](https://help.simplyprint.io/en/article/bad-print-quality-when-printing-through-usb-simplyprint-octoprint-1ampvu7/)
- [How to install an OctoPrint plugin](https://help.simplyprint.io/en/article/how-to-install-an-octoprint-plugin-gpw4br/)
- [Can I still use SD card or OctoPrint when SimplyPrint is installed?](https://help.simplyprint.io/en/article/can-i-still-use-sd-card-or-octoprint-when-simplyprint-is-installed-1n5vct0/)