New Video about 3d Printer Calibration

In this video, I demonstrate the new g-code terminal I built as a Chrome/Edge website.

[video=youtube_share;liL2IoXe4D0]3d Printer Maintenance, Extruder Steps, and PID Calibration - YouTube

The Github repository with the source code is here:

ishapiro/3d-printing-tools: Information and tools to enhance your FDM 3d printing experience. (

I think this is 1 of your best videos: very informative yet easy to follow. You are to be lauded for providing such a tool to the community. I have a couple of suggestions for v1.x, when you get there: [LIST=1]

  • create a "command history/LIFO" box off to the right of the command input box; say, 5 entries. After the user enters a command, copy it to the history box, pushing the oldest command out of the box. If a user wishes to re-execute a command, let them click on it in the history box and copy it to the command box, when it can be sent again. This idea could be further enhanced:[LIST=1]
  • have the commands in the history box be executed immediately when they're clicked, or perhaps double-clicked
  • allow the use to select a history command & make it "permanent" so it doesn't scroll out of the box. Perhaps a checkbox beside each command?? [/LIST]
  • allow the user to enter their own extrusion lengths: e.g. they can enter 50 as the desired extrusion length and 60 as the length marked on the filament. They then enter the length left over after extrusion & your routine does the calculations. [/LIST] Including the "use uppercase" option is a really nice touch.

    ​​​​​​​I like how you encourage people to learn basic gcode by having them look up the commands.

    I also like your use of the retractable keychain to hold the electrical cable out of the way on your 3V2. Very McGyver.

    PS. you misspelled integral. [SIZE=20px]?[/SIZE]

  • Excellent suggestions. I will be adding a history capability. I need to think about the implementation since I am new to Vuejs/Javascript. I could make each entry a URL or a Button (which does not have to look like a button), etc. I need to do some research to determine which is more efficient.

    How humbling to have spelling errors in a software app. You would think vscode would catch that :slight_smile:

    OK, in the spirit of being a beta, I have some more observations/suggestions: [LIST=1]

  • it would be good if the [I]Connect [/I]button changed to say [I]Connected [/I]& changed color to indicate a connection has been made. Since they're so prevalent throughout society, perhaps changing the button to green when a connection has been made & red when there is no connection would be suitable. .
  • not sure how this could be implemented, but having the option to have the log entries in reverse order would be interesting (i.e. the most recent entries at the top) .
  • at 1 point I had to issue a G92 in order to get the extruder to move. .
  • clicking on the [I]Extruder Steps[/I] button seems to cancal the serial connection in the [I]Terminal[/I] window. It also unchecks the[I] Upper Case Commands[/I] checkbox. Basically, clicking away from the [I]Terminal[/I] window seems to wipe out anything that was done in that window. I got around it by opening the [I]Extruder Steps[/I] window in a new tab. .
  • the app doesn't support the Brave browser. I get a **** Your browser does not support the web serial framework required for this application *****. I'm not saying you should bend over backwards to make the app compatible with every browser -- that is a neverending battle -- I'm just letting you know about 1 that doesn't work. [/LIST] That's about it for now. Hope you find the feedback useful.
  • I really appreciate the feedback. The button recommendation is easy. The only way to hold the connection is probably to open the terminal in a separate window – I have to see if I make that the default or an option.

    Browser support replies on support for the Web Serial API. If the browser does not support this API I will not be able to support it. (Web Serial API ( Basically, Chromium-based browsers support this API today and others such as Safari and Firefox are expected to support it at a future date.

    I like the idea of giving the user the option of new lines on the bottom or top. This should be not too hard to implement. Basically, I map an array to the windows so instead of adding to the bottom of the array I just need to add to the top. I need to investigate the most efficient way to do this.

    One more question for folks trying out the 3d printer terminal. I am happy to put more time into this project but want to make sure it will get used. How should I promote the idea that this is available beyond my video? Is it appropriate to ask folks on this forum to post links to the tool/video on their favorite 3d printing community sites?

    Absolutely, it’s alright. Why should it be any different than any other app? Others promote the daylights out of their apps. Yours is entitled to promotion as much as them. C’mon guys. Many of you a much more active on Youtube & other sites: give this app a push. Somebody should alert CHEP & other Youtube luminaries like CNC Kitchen.

    I basically only use OctoPrint and the included terminal and a simple 30 year old calculator to punch in my calipers measurements. Since I have no PC (not even close) to connect, there is no way to check/test your code in any usable way. When I need to work on the printer I usually use my ipad to control the printer. Even the printers display and direct control is not much use. In most cases I glance onto the screen to see when the print it finished, when checking the remote print without using the camera.

    @Geit How do you slice your prints without a PC/MAC? Are you slicing on Octoprint? Unfortunately, the slicer that runs inside of Octoprint is quite old. If you want a web-based slicer the latest version of Astroprint uses a more current version of Cura.

    Unfortunately, my app cannot work on an iPad because no iPad browser I am familiar with has support for the Web Serial API. So far Apple has not supported that relatively new standard.

    Yeah, without support for serial communications it would be hard to talk to most 3D printers. Wouldn’t it be nice if more of them had Ethernet capability.

    I design and slice stuff in my office and upload them into the printers using the OctoPrints web interface. The room keeping the printers is a “computer free zone” (unless you count the slaves RaspberryPi and the printers mainboard as computer). Three printers with three RaspberryPi’s connected via WiFi to my network. Thats all. I even turn them on/off using OctoPrint.

    I know I could use one RaspberryPi for all printers, but this way there is no confusion and each printer can be handled individually. A very nice side effect is that all printer have all objects I ever printed on them. So all it takes to print some old replacement ABS part I did three years ago, is just typing in the name into the web interface of my ABS, select the right item and hit print. :smiley:

    That’s similar to what I’m doing now: I mostly design & slice on my couch in my living room, upload to OP. I go down to the basement to look after the printers as needed.

    I usually only visit my printers to reapply acetone and remove finished parts. For the rest I have the cameras in OctoPrint.

    Occasionally, I feed my printers some filament [SIZE=26px]?[/SIZE]

    @Ender5r I have implemented a couple of your suggestions. I picked the easy ones first. I now change the connect button color and message when connected and on an error. I also added an option to “reverse the log”. This did introduce a minor bug. If you already have lines in the log it adds all lines from this point forward to the top, leaving the existing lines in place. I really need to clear the log when you select reverse but this would require some additional code and to be honest, I was just too lazy to do that today.

    While I have used Javascript for many years, I am new to using it more as a true programming language and then add in vuejs, vuetify and AWS Amplify and I spend more time looking up syntax than writing code. At some time soon I need to think about refactoring some of this code. The structure of vuejs makes it very tempting to use lots of global variables assigned to the vue object, I definitely have overused this approach and need to clean up some scope of variables. When I do that I will fix the reverse log option.

    Let me know what you think.

    @Ender5r Well in the last post I indicated that I introduced a bug when I added the option to view the log in a reverse direction. Well after sleep on it I realized the fix was just a couple of lines of code so I fixed it. Reverse Log Direction now clears the log since a mix of lines in both directions would be confusing.

    LOL. I figure out a lot of problems in that period between awake & fully asleep. Glad to hear I’m not alone.


    I got an Ender 3 Pro a few weeks ago and am learning about it. Ran across your video on calibrating the E-Steps using a browser and wanted to do this on mine. My ender-3 has a Micro USB port so I purchased a USB A to micro USB cable. When I plugged the cable in between the computer (Win 10) and the 3D printer Windows says the USB serial device was found and driver installed, but when using your tool the serial port is not showing up. I looked further and in device manager under ‘Other Devices’ (not LPT and COMM??) it shows the serial USB device but with a yellow triangle. The properties say driver was not installed. I tried to update the driver through Device Manager but it could not find any. I did an uninstall of the device and re-logged in as the laptop admin and tried again with the same results. I’m a little leery about downloading a driver from just any web site.

    The cable was purchased from a Target store. It did not specifically say it was a USB serial cable so I’m not sure if there are specific USB/serial cables I need or they all just work.

    Anyone have any suggestions?


    It is certainly possible that the cable you got is not working properly. Another issue that comes up is USB cables that are really only charging cables; they do not have all the data wires needed for a complete USB data cable.

    That has crossed my mind as well.

    The cable I purchased was in the phone accessory isle at Target Electronics, not the ‘computer’ area. I’ve worked many years in IT connecting USB and RS-232 devices and they have pretty simple plug and play. Doing googling on USB to micro-USB converter cables I really don’t see anything specifically saying the cable is a serial capable version. I think I’ll stop by the local Best Buy and hit up a Geek Squad dude and see what they think.

    Thank you for the response.