iModela USB protocol information?

Post questions, share ideas and techniques relating to the iModela
Post Reply
pmonta
Member
Posts: 2
Joined: Mon Jan 28, 2013 8:30 am

iModela USB protocol information?

Post by pmonta » Mon Jan 28, 2013 8:53 am

Hi,

I'd like to ask if Roland could release the details of the USB command set to the iModela. The reason would be to support additional operating systems, such as Linux, and also machine-control software like EMC2. Many interesting features could then be supported, such as integration with external 4th axes, backlash compensation and other calibration corrections, and so on.

So far I've used my iModela with this workflow: design with FreeCAD or other 3D modeler, export to STL, pyCAM, export to g-code, and then hop over to the Windows virtual machine to play out the g-code using Roland's machine-controller software. Results are quite good, though I've not yet done careful measurements of dimensional accuracy and backlash.

This workflow is a little awkward. I'd prefer to get rid of the Windows dependency; also pyCAM outputs a number of codes that cause the Roland software to abort, so they must be manually edited out, at the risk of introducing errors.

I've had a look at the USB traffic during cutting operations (using Linux's usbmon facility looking at the traffic between the Windows virtual machine and the USB port), and it seems quite straightforward. The Roland software polls the device a few times a second, and the 32-byte reply consists of spindle RPM, x, y, and z in units of 10 microns, and what looks like a collection of status flags. Commands to the axes and spindle look similarly simple. If all the details were available, it would not take long to write a simple controller in userspace for any platform, whether Linux, Mac OS X, a microcontroller board, or something else.

Rather than spending time finishing the reverse-engineering, I'd ask if Roland could simply release a small document describing the commands and status information. Failing that, would there be any objection to my publishing what I can discover about the protocol?

I would hope that Roland can understand the wish to use the machine in the most flexible way possible, with arbitrary software tools. The higher-end Roland machines, such as MDX-15 and MDX-20, adhere to this philosophy by providing a platform-neutral g-code interface usable by any software and any host. I have no objection to eliminating the expense of the processor and memory needed for a full g-code interpreter on the device itself; but part of that deal should be informing users of the low-level protocol of the device they paid $900 for.

Thanks.

Cheers,
Peter

pmonta
Member
Posts: 2
Joined: Mon Jan 28, 2013 8:30 am

Re: iModela USB protocol information?

Post by pmonta » Mon Feb 04, 2013 9:25 am

Just to circle back on this, it appears that one can indeed send g-code to the iModela directly using Linux (and presumably Mac OS X as well).

Example command:

cat test.ngc >/dev/usb/lp0

where test.ngc is the g-code file and /dev/usb/lp0 is the device node created when the iModela is attached and powered on. My previous guess that there's some custom format over USB is incorrect. Normal g-code traverses USB as bulk transfers, just like a printer, so ordinary I/O works fine. I've run several g-code files in this way, and they're executed normally by the mill.

The polling that the Windows controller application does is apparently not necessary for baseline operation, though of course it's needed for things like jogging, touching off, or other work-setting tasks. This can all be done with G10 commands, though, so it's certainly possible to make a small GUI under Linux to get the same functionality. An adapter to EMC2 should also be possible, where EMC2 simply passes through the g-code.

I would still like a spec for the USB control-transfer command and status, but given the total lack of response from Roland, this doesn't seem likely.

Cheers,
Peter

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest