GCodeSimulator, GCodePrintr and GCodeInfo - Frequently Asked Questions

Does GCodePrintr simulate a print only or does it real 3D printing ?

In fact both ! 
GCodePrintr started as a pure simulator but later real 3D printing functionality have been added. The App has been renamed to GCodePrintr to avoid confusion (previous name was GCode Simulator & Printer)

Should I buy the full version to try out if the connection works?

NO ! Before buying the full version make sure that the printer connection and movement works with the free version.
Otherwise you might have wasted your money. 

Which 3D printer are known to work

Prusa i3
Prusa Mendel i2
Mendel 90
MendelMax 1.5
Rostock Delta
BCN3D Sigma
Anycubic Prusa i3
Anet A8
SpiderBot Delta Printer
Printrbot Simple/Simple Metal
Printrbot Jr/LC/Plus/Play
Multec Multirap
Multec Multirap M300 Pro
3D PotterBot
Dremel Idea Builder
Felix Printer
GermanReprap Protos/X400
GermanReprap Neo
Geeetech I3
Ultimaker 1
Ultimaker 2
Ultimaker 2 Go
Ultimaker 3
BQ Witbox
Renkforce RF1000
Velleman K8200/8400
Cubify Cube
Creality3D CR10
Lulzbot TAZ
Lulzbot Mini
Cerberus Delta Bot
Cyrus 3D Printer
Brahma 3
Tevo Tornado
Tevo Tarantula
Tevo Delta
Tevo Black Widow
Makerbot(Simulation only)
Makergear M2
Monoprice 13860

Reprap with various electronics:
RAMPS (Arduino Mega 2560, Arduino Mega, Taurino Mega,...) 
Gen7 (MCP2200 based)
BetaPrusa (Echinus board)
SAV MkI (Bluetooth)
RAMPS with JY-MCu HC-06 (Bluetooth)
Melzi Board

Which VendorIDs/ProductsIDs are supported

Supported VendorIDs and ProductIDs 
 	VENDOR_FTDI = 0x0403
   	FTDI_FT232R = 0x6001
    FTDI_FT230X = 0x6015;

    VENDOR_ATMEL = 0x03EB;
    ATMEL_LUFA_CDC_APP = 0x204b;

    VENDOR_ARDUINO = 0x2341;
    ARDUINO_UNO = 0x0001;
    ARDUINO_MEGA_2560 = 0x0010;
 	ARDUINO_MEGA_ADK = 0x003f;
    ARDUINO_MEGA_2560_R3 = 0x0042;
    ARDUINO_UNO_R3 = 0x0043;
    ARDUINO_MEGA_ADK_R3 = 0x0044;
    ARDUINO_LEONARDO = 0x8036;


    VENDOR_LEAFLABS = 0x1eaf;
    LEAFLABS_MAPLE = 0x0004;
    VENDOR_SILAB = 0x10c4;
    SILAB_CP2102 = 0xea60;
    MCP2200 = 0x00DF;
    VENDOR_MAKIBLE = 0x1d50;
    MAKIBOX = 0x604c;
If the VendorID/ProductID of your printer is not listed, please send me an email with the printer type/electronics.

Which Android devices are known to work

Samsung Galaxy Tab II
Samsung Galaxy Tab 7"
Samsung Galaxy Note II
Samsung Galaxy S3
Samsung Galaxy S4
Trekstor Breeze 7.0
Acer Iconia
Asus ePad
Acer picasso
Motorola Xoom
Matricom .TAB Nero X2
Nexus S (Bluetooth only)
Nexus 7
Nexus 5
Motorola Droid Razr
and many more.
Please find a longer list here: https://plus.google.com/u/0/+MathiasDietz/posts/7m3a9VKRpY5

General Device requirements:
Android >=4.03 is required 
1GB Ram is recommended (smaller gcode files will work on 512MB RAM models too)  
To print over USB, the Android device must support USB OTG/USB Host Mode. (USB OTG Cable needed) 
Bluetooth printing can be done even without USB-OTG support on Bluetooth capable devices. (Bluetooth capable printer needed)

How to debug connection problems ?

Connecting to the printer requires the following steps
1) USB Device detection works
See My Printer is not detected on USB port
2) Device must be detected as FTDI or CDC Device
See Error message "no supported FTDI_serial device..."
3) Serial connection must be established
The right baud rate must be set. Default is 115200, can be changed to 19200/57600/250000 in the communication config. 
If all baud rates do not work, it might a problem with the Android driver (e.g. my HTC One does not support USB-OTG for non storage-devices)

Sometimes it helps to detach the usb cable, stop GCodePrintr App, attach the cable again and let it start GCodePrintr   nm.
Some Android devices don't have enough power to feed the printer electronics, in this case a powered USB Hub might help. 

My printer is not detected on USB port

The Android base system has to detect the printer device on the USB port and recognize it as FTDI or CDC Device. 
For this the Android device _must_ support USB OTG/USB Host Mode. (USB OTG Cable needed).
The USB device detection is part of the base Android system and not done by the App itself. 
When you connect the USB cable it should pop-up a notification. 

Known problems:
1) Some Android devices seem to be very picky in regards to the order in which to you connect the printer.
Please try the following order and see if it helps:
	1) make sure the USB cable is disconnected and the Gcode Simulator App is closed
	2) Plug the printer USB cable into the OTG adapter
	3) Plug the OTG Adapter + Cable into the Android device
	4) Wait some seconds, Android should detect the USB device and show a notification or even ask you if the App should be started 
	4a) If it does nothing, startup the App manually 
	5) Press connect and see if the connection can be established.

2) If the USB device is still not detected, it might be that your Android device does not provide enough power for the printer. 
In this case a powered USB hub is required. 

3) Sometimes a reboot of Android system is needed. Make sure your device is at the latest software level. 

4) Your USB OTG cable is broken or if your device has multiple USB ports try another one. (maybe test with a USB stick if this is detected)

5) Sometimes the Vendor does not allow custom USB devices. In this case a "unsupported usb device" pop-up might be shown.

If all above does not help your device seems to not support USB HOST/USB OTG properly. Please contact your device vendor.
You can also try 3rd party tools like USB Host diagnostics to test the USB connection.

Error message "no supported FTDI_serial device..."

The Android base system has to detect the printer device on the USB port and recognize it as FTDI or CDC Device. 
For this the Android device _must_ support USB OTG/USB Host Mode. (USB OTG Cable needed).

When this error message appears, the Android System has at least one USB device detected. But fails recognize it as a valid FTDI/CDC device.

The are two main problem cases:
1) The detected USB device is NOT the 3D printer but something else (internal to your android device) 
You can check the VendorID/Product ID if it matches your printer. (try google the vendorid/productid to find out which device it is) 
The following list are some known internal usb devices : 
	VendorID:0x0bda ProductID:0x0179 Realtek Wifi
	VendorID:0x0bda ProductID:0x8179 Realtek Wifi
	VendorID:0x05c6 ProductID:0x904c Qualcomm WAN
	VendorID:0x058f ProductID:0x6366 USB Card reader
If it doesn't match your printer see: My Printer is not detected on USB port

2) If the VendorID/ProductID matches your printer but you still get the error message "no supported FTDI_serial device...", the device might not be on the supported list.
Please check if the VendorID/ProductID of your printer is listed on the supported vendorID list
Please send me the VendorID & ProductID together with some infos about the electronics and I can try to add it to the list.

How to send a gcode file from PC to the GCodePrintr App

In order to print a gcode file you need to transfer it to the GCodePrintr App first. GCodePrintr allows multiple ways to transfer the GCode file:

1) Network Receiver

The "NetworkReceiver" allows GCodePrintr to receive Gcode files over Wifi (assuming your tablet/phone has wifi connectivity). Once enabled in the printer connection preferences ("Activate networkreceiver at start") it will listen to port 53232 for incoming data. In order to send data from the PC, it is recommended to use the GCodeSimulator for PC Java application. (Download from here )
To send a gcode file: Step A & B can be skipped if you add GCodeSimulator as a post-processing script for your slicer (see separate FAQ entry below)

2) Web Interface

GCodePrintr has a web interface to control the printer through a web browers (e.g. firefox). Once enabled in the printer connection preferences ("Activate webserver") it will listen to port 2323 for http requests.
To send a gcode file:

3) Google Drive, Dropbox, etc.

GCodePrintr can open files from popular cloud storage apps like Google Drive, Dropbox, etc.

4) Use Slic3r/Cura send to Octoprint feature

The popular open-source slicer Slic3r and Cura have a feature to send gcode directly to OctoPrint servers. GCodePrintr will listen to OctoPrint style requests and accept those file uploads. Once the webserver is enabled in the printer connection preferences ("Activate webserver") it will listen to port 2323 for http requests. In Slic3r/Cura just enter the IP address and port of the GCodePrintr Web Interface (e.g. in the Octoprint field and try it out. (no API key required)

5) Open from local storage or SD card

GCodePrintr can open files from local storage or SD Card. You can copy the gcode file from you PC to the tablet/phone using standard Android mechanisms. e.g. through USB connection, put SD card in, bluetooth, .... Once the file is copied, open it in the GCodeprintr app.

How to use GCode Simulator (for PC) as post-processing script for Slic3r

Here is a small start script (gcodesim) for GCode Simulator on Linux:
	java -jar /opt/GCodeSimulator.jar "$1"
Put the script into your path (e.g. /bin) and add it to the slic3r post-processing script, like here.

Either create your own startup script or enter the full java command line into slicer:
e.g.    java -jar c:\GCodeSimulator.jar

How to debug problems during print (e.g. interuptions)?

Enable debug logging in the options (or by long press on print button).   
When the problem occurs stop the print and send the console output (long press on console, send by email)

Why does loading of large gcode files take so long?

GCodePrintr parses the Gcodes and calculates all kinds of values (duration, distance, filament,..).
All this is stored in a large memory structure to avoid additional latencies during print. 
Android is allocating new memory only in small chunks which makes it very slow and inefficient. 
There is an experimental option to preallocate memory to improve load times, but it might not work on devices with small memory. 

How to setup bluetooth with a JY-MCU module and RAMPS 1.4?

The following steps are necessary to attach a JY-MCU module to RAMPS 1.4 electronics.

Wire the JY-MCU module with your RAMPS for sending AT commands

The JY-MCU module is offered in two variants HC05 and HC06. This HOWTO is for HC06 only. The HC-06 module has 4 pins to connect: RX,TX, VCC, GND.

Connect bluetooth module to the RAMPS auxilary ports:
VCC -> 5V
RX -> AUX2 D65 (just to change the baud rate)
TX -> AUX2 D66 (just to change the baud rate)
See RAMPS 1.4 Pinout

Set the Baud rate and Bluetooth name of the JY-MCU module

Setting the baud rate of the bluetooth module must be done over serial (not over bluetooth). For this, we have already connected the RX/TX ports to AUX2 D65/D66.With the help of a small Arduino sketch, the baud rate of the module can be set easily.

Please open the arduino ide and upload the following sketch to the arduino board.

SoftwareSerial mySerial(65, 66); // RX, TX

void setup()
  // Open serial communications and wait for port to open:
  while (!Serial) {
          ; // wait for serial port to connect. Needed for Leonardo only
              Serial.println("Goodnight moon!");
             // set the data rate for the SoftwareSerial port
                   Serial.println("Hello, world?");
void loop() // run over and over
                       if (mySerial.available()){
                        if (Serial.available()){
Once the new sketch is running it will forward all commands received over serial to the bluetooth module.
Now use the Arduino Serial Monitor (Tools menu) to issue AT commands:
>Answer: OK115200
>Answer: Oksetname  
This will set the baud rate to 115200 and the bluetooth name to "reprap". Now, disconnect the Bluetooth Module !

Wire the bluetooth module to the serial port

The sketch to forward AT commands to the bluetooth module is no longer needed. Please upload your printer firmware (Marlin/Sprinter) again and make sure the baud rate is set to 115200 as well.

Rewire the Bluetooth Module RX/TX lines to the serial lines
RX -> AUX1 D1
TX -> AUX1 D0
Please note: Reprap wiki indicates that a pull-down resistor is needed because RAMPS uses 5V and the RX/TX lines of the bluetooth module expect only 3.3V. See RepRap Wiki for more information.
Reset Arduino. Bluetooth module is now ready.

Connect with GCodePrintr

The bluetooth module is ready and the led should blick steadily. Open the GCodePrintr communication settings and choose
Printer Connection Type = Bluetooth.
First time you should keep Bluetooth discovery enabled to find the new Bluetooth device.
Open the print panel and press the connect button. It will start a bluetooth discovery and find the new bluetooth device.
Choose the device and connect: Now you can control your printer over Bluetooth !!!

My gcode files fail to load?

This tools has been tested with Slic3r and skeinforge generated gcodes. It does not work with STL files.
It is meant for 3D printing gcodes,therefore cnc gcodes will likely fail.  
It might be the case that some unsupported gcodes are used or the format is not as expected (parsing error)
Please send me a copy of the gcode and I can fix the problem.

Here is an Example Gcode File which is known to work.

How can I participate in the beta test?

All GCodePrintr community members can opt-in to get the beta version. 

To participate in the beta test you need to join the Google+ Community first (Otherwise the opt-in will fail)
First join the  MeWe Community

Once joined, you can opt-in for the beta test.
Please look for posts in the Community which announce new beta versions.
Opt-in here (GCodePrintr Full version Opt-in)
Or here (Free version Opt-in)

After that, the beta version should appear as a normal update in Google Play. 
Please provide feedback about the beta version to the GCodePrintr G+ Community. Thanks.  

Is there a discussion forum or community to ask questions?

Yes, join the  MeWe Community
 for news, asking questions and more. 

Can I print in the background while another App is in foreground?

Yes, GCodePrintr V1.52 introduced a printer connection service which will do the print. The App can even be stopped during print. 
Please note: dependening on the system performance, the use of other Apps can cause stuttering or print pauses.  

Can I print at very high speed without stuttering?

Yes, if your Android device is powerful enough and has a low USB latency. 
You can start a testrun to measure the USB IO round-trip time by long press on the pause button (when connected).
The round trip time measured on Arduino Mega with Galaxy Tab 2 is ~15ms which allows for 66 Gcodes per second.
The round trip time measured on Arduino Mega 2560 with Galaxy Tab 2 is ~5ms which allows for 200 Gcodes per second.

Bluetooth is often slower than USB OTG but still capable of doing most prints. 
The round trip time measured on Arduino Mega with HTC One over Bluetooth is ~35ms which allows for 30 Gcodes per second.

What is the reason for short pause/interruptions during print?

A few people reported interuption problems to me already. But until now, I wasn't able to reproduce it. 

Pause/interuption during print can be caused by the following problems:
1) Timeout waiting for printer response caused by lost printer responses.
	Check your USB cabling. 
	Try another baud rate (On the printer as well as the App)
	Try setting the timeout higher or even very short to minimize the interuption
2) Delay caused by Android Garbage collector
The GCode Simulator code has been optimized to not allocate/free memory during print.
Therefore during normal operation, the garbage collector should never run. 
There are a few exception which cause memory allocation and therefore should be avoided:
	-Running in debug mode requires more memory allocations
	-Opening/closing the sliding drawer (print panel) often
	-Disabling the status bar in the options will fallback to a memory intensive method.

Why does the Android App need all the permissions ?

This is used to receive Gcode files over network and to provide the print status webpage.
Send anonymous staticstical data to Google Analytics to improve App behavior. ( e.g. number of starts, connects via USB OTG, connects via bluetooth)

Required to connect to the 3D printer over bluetooth.

Required to do a bluetooth discovery to find the 3D printer over bluetooth.

android.permission.ACCESS_WIFI_STATE and android.permission.ACCESS_NETWORK_STATE
Required to start the Networkreceiver and show the "listen IP address" in the console. 
Required to set a wakelock to avoid that the devices goes into standby during print 
Required to load gcode files from Google Drive and from SDcard 

Required to store gcode files (received over network) to SDCard and to store communication log file. 

What functions do all the buttons have ?

Can I remotely view the print status and stream my build-in webcam?

Yes, once connected GCodePrintr listens for browser connections on port 2323. (e.g. http://yourIP:2323) It shows the current print status, temperatures, remaining print time and more. Make sure the Webserver option is enables (Options -> communication) To stream video from your build-in webcam you need to install another (free) App called "IP Webcam" from Pavel Khlebovich. Once the app is installed you can start the webcam streaming over the GCodePrintr web interface.

How to configure Linux file manager Nautilus to automatically create thumbnails of GCode files by using GCodeSimulator

Follow the 3 Steps below:
1. Download and install #GcodeSimulator V1.30
Get GCodeSimulator here: http://gcodesim.dietzm.de/#Download Create a simple start script (e.g. /bin/gcodesim)
 java -jar /opt/GCodeSimulator.jar "$@"
2. Add mime type for gcode files
Create a new xml file /usr/share/mime/packages/x-gcode.xml
   <?xml version="1.0" encoding="utf-8"?>
   <mime-info xmlns="http://www.freedesktop.org/standards/shared-     mime-info">
    <mime-type type="application/x-gcode">
        <sub-class-of type="application/text"/>
        <comment xml:lang="de">GCode</comment>
        <glob pattern="*.gcode"/>
Update Mime types by calling : sudo update-mime-database
Nautilus should now show the mime type of .gcode files as GCode.

3. Configure thumbnailer
Configure the thumbnailer by creating a new configuration file: /usr/share/thumbnailers/gcode.thumbnailer
Add the following content:
 [Thumbnailer Entry]
 Exec=gcodesim %i %o --thumb

Make sure preview is enabled in the Nautilus options (pay attention to the file size limit option)
Finished Nautilus should now call gcodesim to create thumbnails of the gcode files.

Function & Keyboard help

The android version should be self explaining since you have a button for each available function.
The PC version can be either controlled with the menu bar entries or by using keyboard shortcuts  (press H to see the about dialog with the list of shortcut keys)

The Following functions are supported by the android and the PC version:
   Load   - Load a gcode file into the app (looks for *.gcode)
   Detail  - Shows different details in the text view on the lower right corner.
   Speed+ - Increase the simulation speed , paint the lines faster
   Speed-  - Decrease the simulation speed , paint slower.
   Speed+10 - Increase the simulation speed 10x , paint the lines faster 
   Speed-10 - Decrease the simulation speed 10x , paint slower.
   Step forward - when in pause mode, do a single step forward to the next gcode line
   Step backward - when in pause mode, do a single step backward to the previous gcode line   
   Next       - Jump to next layer
   Back      - Jump to the previous layer
   Pause   - Pause the simulation
   Restart  - Jump to first layer
   About  - Shows a help dialog
   Exit     - Quit

The Following functions are supported by the PC version only:

   Zoom+  - Zoom in - increase the window and paint larger
   Zoom- - Zoom out - decrease the window and paint smaller
   Fast Forward - Jump 50 gcodes forward
   Fast Rewind - Jump 50 gcodes back
  Show/hide Details - Show/Hide the details panel on the right
  Some options can be triggered with the mouse/mousewheel (See about dialog)
Android Beta (V1.02) Only:
	Android Beta: Long click on speedup/down will increase/decrease by 10x
	Android Beta: Click on speedup/down while in pause will step through the gcodes
	Android Beta: Long click on connect button will toggle Baud rate (115200 vs 250000)
	Android Beta: Long click on Print button will toggle debug mode
	Android Beta: Experimental Print mode enabled

About the details panel:

The details panel can display the following information, use the "toggle details" function to cycle through them:

Model Details - Show detailed information about the overall 3D model (all layers together)
Layer Details - Show detailed information about the currently painted layer
Printed Layer Summary - Show the list of printed layers incl. temperatur, average print speed and estimated print time
Model Speed Distribution - Show a condensed list of speeds used for the overall model. Show at which speed the most time is spend.
Layer Speed Distribution - Show a condensed list of speeds used for the current layer. Show at which speed the most time is spend.
Slicer Comments -. Show the comments of the slicer tool (e.g. Slic3r) if the gcode file has some.

PC Key Shortcuts Help:
		+/- = Speed up/down
		//* = 10x Speed up/down
		i/o = Zoom in/out
		n/b = Layer next/back
		m   = Show Model Details
		t   = Toggle Model Details		
		f   = Load Gcode File
		p/r/q = Pause / Restart / Quit
		space/backspace = Fast forward/back
		space/backspace = Step forward/back (Pause)
PC Mouse Shortcuts Help: 
		Mousewheel = Speed up/down
		ALT+Mousewheel = Zoom in/out
		Left Button on Bed = Next Layer
		ALT+Left Button on Bed = Previous Layer
		Right Button = Show Model Details
		Left Button on Details = Toggle Model Details
		Middle Button = Show Help
Other shortcuts :

Mouse click on Speedup Info Box  = Toggle Pause
Scrollwheel for speedup is only active when mouse is over printbed or labels

GCode Debug Mode
When Pause is activated then GCodeSimulator can be used to debug the gcodes. It will display the current line number 
followed by the gcode on the bottom of the detail panel. 
Use space/backspace to step through the gcode lines (single step).

Experimental Edit Mode (PC Only)
Change the print speed by percent
Change the extrusion rate by percent
Change the Layerheight by percent (+increase extrusion)
Modify extruder temperature (only update existing gcodes)
Modify bed temperature (only update existing gcodes)
Add Offset to Z position (requires layer option 'all'
Add Offset to X position (requires layer option 'all'
Add Offset to Y position (requires layer option 'all'
Modify Fan options 0=off, 255=full (only update existing gcodes)
Delete the specified layers