Joto: Hacking and Mods

Google Search of the term Hacking Joto pointed to a section of this forum named Hacking & Mods. Sadly its either been removed or more appropriately hidden to keep malicious issues minimized.

I’m looking for information on transferring files and initiating jots of those files from the command line.

I’ve recently begun working with GNUPlot software which can take data files and transform them into SVG format graphics files.

The last pieces I need is to be able to send files and commands to my Joto from a linux command line. I’m familiar with wget and curl as http(s) tools for file and command access to an api.

I’ve seen the web page that is internally hosted on port 80 of your Joto, so I believe the functionality I need is close to the surface.

Just looking for some pointers or notes that I can start from.

Thanks for reading this far…

John Vaccaro

Upon further reflection I realize that I can’t upload a SVG image direct to Joto. The SVG has to be converted into g-code. And g-code is what instructs Joto. Right now that converter only resides in the Joto app. I’m wondering if that engine could be open sourced for those of us who want to pursue integrating Joto without using the app. Or at least provide documentation on Joto’s flavor of g-code?

Regards…

JohnV

1 Like

Hi John,

I’m also looking for information to control the Joto board directly, and draw my own stuff on it, preferably automated.

I found this https://github.com/NTag/joto-api which is quite interesting, although it goes through the joto server, not over local network.

I can also see that the board might respond to UDP packages, but I’m not sure how.

If you find anything else let me know…

Jelle

Hi @johniac @joto1

The easiest way to send gcode to Joto outside of our cloud server is to use the second usb serial port next to the usb-c power. You can send gcode to it via a generic gcode sender. Something like this might work from the cli: https://github.com/hzeller/gcode-cli (although we’ve not used it).

There is a possibility of interacting wirelessly over your local network - but this is untested so would need some time to test before sharing the details.

We’re working on the API this month, now that 365 Days of Art is live, so we’ll have a lot more updates on how to interact with Joto via that shortly.

We’re also about to put a gcode endpoint live, so you can make an HTTP call with an SVG to it, and it returns Joto friendly gcode back. But if you need to know how to create gCode for specific features of Joto you can read the post here: Creating & Sending G-Code

Let me know how you get on.

A couple of other tools to consider;
VSCodium (The open source version of Visual Studio) has a plugin for g-code called G-Code Syntax. The extension does syntax checking and color highlighting of a g-code file.

GNUPlot is an opensource data plotting engine that can create graphs from a file of data points. Among its output formats is SVG.

The G-Code Syntax plugin is oriented toward Lathe and Mill work. I’d like to see it be extended for use with 3D printers and of course Joto. However, such a project is above my pay grade I’m afraid.

JohnV

1 Like

Hello everybody!
I bought Joto hoping to gain control of it in real time over local network. While this option is not available, I am experimenting with Joto over the serial port. Everything works, but Joto doesn’t send any feedback and this is very inconvenient. I found Joto state in config (/rpc/Config.Get) but it doesn’t work for the serial port.
How can I programmatically know that Joto has exited and is in Idle state?

Hi @frostynevada318 - that’s usually done by knowing how many lines of gCode you send to it via serial and that they’ve all been sent successfully.

At the moment any status that you see in the app is done via the cloud and is on the networking side of things, not on the motion processor that serial is connected directly to.

The motion processor is running a slightly modified Repetier - so you can send anything that expects down the serial

Hello;
FYI: I poked at Joto’s web server using curl and wget and both got denied access. I was aiming to retrieve a copy of /rpc/Config.Get. I may be mistaken and have been using a hammer on a screw but I thought I’d add the data point.

If anyone as gotten either utility to work with Joto your input would be appreciated.

Hi @johniac - if you’re connected to Joto directly you can make a curl request to the RPC endpoint like this:
curl http://192.168.4.1/rpc/Config.Get
it will send you back Jotos current config file. I’m not sure it will help you with any gCode though as that’s all the networking side that is bypassed by the USB connection.

I had a quick go at trying to get Joto to download something locally via Wifi, but the firmware crashes out as it’s setup to send all the progress and status back via the cloud, which it doesn’t have a connection to do so.

We could look at doing a local flag that could be used to turn off all cloud comms, but we’re focussing on the cloud api first as we think it will be a lot more versatile. For local testing, gCode down the serial is definitely the way to go.

If you don’t want to worry with a gCode sender from the cli, you can use something like a 3D printer sender - we used https://www.pronterface.com/ a lot during the product prototyping phase.

Hi! I know the number of lines I send to Joto, but I don’t know about their execution. Joto doesn’t report that he has received a string, he just sends it to the buffer. After sending all the lines, I wait for Joto to execute all the commands from the buffer and don’t get any feedback.
If you used Repetier, then it should respond, for example, to M114 (Get_Current_Position), but he doesn’t answer

You should get back an ok + line return.

Couple of things to check…

  • Baud rate is 115200
  • you send a carriage/line return after every line of gcode

And you’re definitely using the usb micro port for commands and the usb-c for power?

Let me know how you get on

At the end of each command, I add a ‘\n’ (ASCII: 10) character. Without it, Joto doesn’t execute commands, so a carriage return is most likely correct.
Baud rate 115200. and of course I use micro usb port for commands and the usb-c for power.

I used to work with GRBL and always got a response (ok). So it seems strange to me that Joto doesn’t answer

It definitely should answer with an ‘ok’ otherwise our own firmware wouldn’t work. I’ve just checked on a test Joto here and it responds as expected. Couple of things to check…

  • Don’t establish a serial connection until after Joto has started up correctly and the light is on red. It must request 20V via the USB-C before it begins any motion firmware routines.

  • It might be something to do with flow control? I’ve attached screenshots of my terminal software that might help.

Here you can see the output, fan command is our pen M106 command being sent to it:

Here’s the Serial port settings

And the Transmit command with the line ending

Thank you! Enabling DTR and RTS helped me. Now I am getting responses from Joto via serial port and can configure any logic. But I am still looking forward to being able to control it via local network :v:

1 Like

Ah great - glad you’re up and running. Yes - the SAM8XE (Arduino Due) can lock up with flow control. There’s been a few discussions on Arduino forums.

Out of interest, does it need to be local network or can it be via our cloud server? If it’s just wireless then you can use this excellent library by Basile Bruneau - https://github.com/NTag/joto-api

Will be releasing something similar - but essentially you authenticate with your account and then can create Jots the way our mobile app does.

I want to use Joto for art installations. To do this, I need to control it in real time without an internet connection.

ah ok - let me have a think and see if there’s a quick way to do it. :slight_smile:

1 Like

I haven’t even received my Joto yet and I’m already starting to think about how to use it remotely. I was considering attaching a headless, WiFi Raspberry Pi to the back and connecting to the Joto via USB. Gcode could then be created on my desktop and transferred to the Raspberry Pi for sending via UGS. I’m open to any constructive thoughts/critiques for this approach.

Hi @dwburger - loving the enthusiasm before you’ve even got Joto! :slight_smile:

You definitely can do that, in face we’ve run Joto’s offline for exhibitions in exactly this way. We would be more than happy to share the Gcode sender we use. We’ll post a link on this forum.

Our upcoming app infrastructure though will shortly allow you to post jots via the cloud api and will handle all the Gcode conversion automatically, so should be a lot easier than setting up a Raspi if you have a network connection. Watch this space!

Thanks, Jim…sounds very exciting! I will look forward to the link to the Gcode sender.