element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Motors and Drives
  • Technologies
  • More
Motors and Drives
Blog CNC Fun: Powering up a Roland EGX-300 Desktop Engraver
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Motors and Drives to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: shabaz
  • Date Created: 2 Aug 2025 5:23 PM Date Created
  • Views 773 views
  • Likes 11 likes
  • Comments 15 comments
  • roland
  • engraver
  • EGX-300
  • cnc
Related
Recommended

CNC Fun: Powering up a Roland EGX-300 Desktop Engraver

shabaz
shabaz
2 Aug 2025


Introduction

The Roland EGX-300 is an ancient (several decades old) CNC machine intended for applications such as engraving door signs. It cannot handle material larger than 305 x 230 mm. The machine has the footprint of a washing machine, and is about 350 mm high.

These machines can occasionally be acquired at low cost because businesses are throwing them out because the software requires old versions of Windows to operate.

I purchased one from a factory up North a few years ago, but never got around to switching it on : ) It’s summer hols now, and my two teenage nephews were bored, so we decided to see if we could get this machine up and running.

Hardware Setup

The EGX-300 has a parallel (Centronics) connector and a serial (RS-232) 25-way socket. It’s almost always easier to go with serial, so that’s what we did.

We purchased a UGREEN USB-to-Serial (9-pin DB9) adapter cable from Amazon, which was advertised to contain a PL2303 chip inside. That’s not supported by default in modern Windows 11, so we downloaded and installed the latest PL2303 driver from the Prolific website.

After that, when we plugged in the adapter cable, we could see a COM port appear in Windows Device Manager. Great!

To convert from 9-pin to 25-pin, we used a StarTech Cross Wired Null Modem F/M Cable. It needs to be a Null Modem cable to work.

image

Next, we powered up the machine. It has an LCD screen, and it’s possible to use the control panel below it to enter a menu, select the input mode to be Serial (not Parallel!), and then set up the communications parameters. We used 9600 baud (the only options are 4800 or 9600), 8 data bits, no parity, 1 stop bit, and RTS/CTS flow control (the only other option is XON/XOFF).

For more details regarding the configuration options, consult the EGX-300 PDF user manual. 

Making it Move!

There’s a PDF Programmer’s Manual that describes the instructions that can be sent to the EGX-300.

Initially, we sent a command using a serial terminal, but that’s not very practical. Instead, we used AI to help write a simple Python program called egx300_send.py to do it for us.

The PU command means “pen up”, and it can be followed by X and Y co-ordinates. The (0,0) position is indicated in the diagram above. I have not read in detail yet, but it’s possible to use different coordinate origins if required. I think the values are scaled such that 100 corresponds to 1 mm, but I have not confirmed this yet.

If you want to move the tool to the origin, you would send the following command:

PU0,0;

The semi-colon on the end is the terminator (it can be replaced by carriage return/line feed, but for now I prefer just sending the semi-colon).

Using the Python program, you could make the tool move in a rectangular path by issuing four commands together:

python .\egx300_send.py "PU4000,1000;PU4000,3000;PU1000,3000;PU1000,1000;"

So far, we have not dared to do a PD (pen down) instruction, since we need to study the documentation so we don’t wreck the tool.

The 10-second video here shows the rectangle path taken when the Python example shown above was executed:

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

Summary

We took a scrap CNC machine and decided to connect it to a PC, using a serial (RS-232) connection. Some simple Python code was written to move the tool.

It’s still early days, there’s a lot more to study in order to understand how to use the machine at this low level, and then perhaps consider either using existing code, or custom code, in order to make the machine do some useful work.

It’s a fun project for kids to mess around with, and they can’t accidentally do much self-harm since the machine will not operate without the protective cover in place.

Thanks for reading!

  • Sign in to reply

Top Comments

  • shabaz
    shabaz 1 month ago in reply to DAB +1
    Hi DAB, You got me curious, and I checked for an 'operational time' value in the in-built menu. I can only find one for spindle operation hours, and it's currently at 52. I don't know if that's a lot…
  • Jan Cumps
    Jan Cumps 1 month ago +1
    There is still a Dr. Engrave installer on the Roland website: https://www.rolanddga.com/support/products/software/dr-engrave
  • beacon_dave
    beacon_dave 1 month ago in reply to shabaz +1
    "...I can only find one for spindle operation hours, and it's currently at 52. I don't know if that's a lot or not!..." Looks like the spindle has a life of around 2000hours, with a brushes change…
  • shabaz
    shabaz 1 month ago

    Quite interesting, I opened a random SVG file in FreeCAD, and then in its Path Workbench, create a New Job, then it is possible to click on edges, then click on Engrave. Then, I selected Post Process, and it generated the following G-Code.

    image

    Looking at the G-Code, the main part is half-way down, in the section "(Engrave)". It contains the co-ordinates for the paths for the tool. The Z height values are defaults, but it looks like they are configurable as seen on the left side.

    I'm surprised how straightforward all this is.

    The lengths are taken from the SVG file, but if it doesn't contain them, then a conversion is used, where 96 represents 25.4mm. I've confirmed that by looking in the SVG file.

    There's old Python code here: https://gitlab.com/heavydeck-projects/egx-cnc  in a folder called egxmake, which can translate that G-Code to CAMM-GL II. It's very limited and buggy, I made a few changes and got it to just-about generate the following:

    ;IN;CS6;CA8;IP0,0,30500,20500;LT;PA;

    PU;

    PU;PU;PU2725,-2725;
    PU;PD;PD2725,-2725;
    PD;PD79,-2725;
    PD;PD79,-79;
    PD;PD2725,-79;
    PU;PU0,0;PU;

    That Python code needs more work, but it's very promising. With this approach, there's no need to have any drivers or old software, all of it's open source. Needs a ton more work to recognize more sophisticated G-Code which might have arcs etc.

    Anyway, all this was just an experiment, I don't know if it's worth pursuing, if the simpler alternative is to just run old Windows. But I suspect the Roland software is more graphics-oriented, whereas the Python approach would allow very precise control, e.g. for PCB engraving (which I'm not currently interested in however). 

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • dang74
    dang74 1 month ago in reply to shabaz

    Thanks Shabaz.  I always learn something from your posts... and responses.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz 1 month ago in reply to dang74

    Hi! Prices vary greatly but sometimes are really low cost. There's a small metal engraving machine on ebay currently, for £155.

    image

    Some sellers are also supplying a PC pre-loaded with the software, so it's ready-to-go, such as this one; a lot moe expensive, but might be worth it if a few engraving bits are supplied (some are quite expensive to purchase):

    image

    That PNC2300 is interesting, it seems to be almost identical to the EGX-300, so I got curious and googled a bit, and discovered this video:

    You don't have permission to edit metadata of this video.
    Edit media
    x
    image
    Upload Preview
    image

    Interesting approach, they gutted the electronics and swapped out for a "Mach3" board, which allows G-Code from LinuxCNC, rather than having to translate into the format that Roland machines use. I found the video interesting, not because I would want to gut the machine I have, but because it shows how any machine with stepper motors can be controlled with LinuxCNC. They used this card:

    image

    It's very cheap since it is basically just breaking out the parallel port and only has a few logic gates etc., and then you'd need stepper driver modules. Many LinuxCNC users prefer the parallel port over USB etc., and the PC software is responsible for sending the stepper pulses, so LinuxCNC ideally needs to be the only app on the PC, or given priority, or even built with some real time support possibly. Anyway, for those who don't mind using USB with LinuxCNC, there is this board (a lot more expensive however):

    image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • dang74
    dang74 1 month ago

    Nice.  It hadn't occurred to me that you could something like this on the cheap.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz 1 month ago in reply to Jan Cumps

    Unfortunately it requires a printer driver (i.e. won't use the COM port directly), and Roland's drivers are limited to 32-bit windows for the EGX-300 (and refuse to install, including with compatibility mode, or enabling 32-bit applications in the application pool in IIS Manager). A VM might be the way forward (or as you say, buy an old Windows PC, maybe a tablet or something, since I won't be running any other applications on it).

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube