How much interest for Linux and ChromeOS support?

EaselDriver – Linux

Edit: added link to linux builds. more info in a post below

Hello, I’m not really sure where this belongs. I got my X-Carve on Thursday and was determined to get Easel working from Linux & my chromebook. I was able to bundle the Easel local driver into a chrome app this weekend after hours/days of work. And I was able to do the machine setup with it successfully!

It should work on any OS that runs Chrome (using it on my Pixel). You install it like any other browser extension in Chrome, click on it and it runs the driver in a background window and connects to Grbl the same as the Mac and Windows versions.

Anyway, is this something the community would find useful? There are a few threads here and there for Linux and for ChromeOS I saw, but most look to be pretty old.

If there is interest, I will clean it up and put it on github and/or maybe the chrome app store for feedback, sooner rather than later.



@NathanielCaza sign me up! I am anxious to hear more about this. You are right,there are many others that are looking for something like this so this will be a welcomed app for the community. Great stuff !!

This sounds great


The reason for lack of Linux support is the fact that if we were to roll out a poll on every owner and operator of an xcarve shapeoko2 or carvey you will find it is like 2% of them even know what Linux is - the fringe of computer users past Microsoft or Mac is amazingly low. Just like other alternatives, if you find a way to do something cool by all means lay it out for the guys that may have a Chromebook or Linux setup…

1 Like

Awesome, glad to see there are some that would appreciate it :slight_smile:

You guys replied quick (didn’t even finish in the yard)! As such, I decided to spend the rest of the day trying to organize it a bit so it’s presentable, yet still get something out there tonight. (i.e. to avoid this:

Without further ado, here is the link to the github repo:

I tried to document everything needed in case anyone wants to get into the code. But I’m a little too tired to walk through it all and iron it out tonight, feedback welcome.

Also, if you guys just want to give it a quick try, there’s a github release with a .zip file you can just load into chrome. Instructions are in the README for that too, right at the top. Once installed, you just launch the app, and go to the Easel site. I may be able to make it easier in the future.

Tomorrow I’ll try carving something, for now I’ve just tried the machine setup and homing. Feel free to open issues on github if you find something and you’re so inclined.

Feedback and questions are welcome; it was quite the adventure.



Yes! This is awesome, thanks. I’ve been wanting to do this for quite awhile.

Hey guys,

I just successfully ran my first carve, and completely from my chromebook!

I also tested everything except the carve on a Linux (Fedora) laptop in Chrome. Make sure your /dev/ttyACM0 (or similar) is writable, the chromebooks are already configured to work as is.

I had to fix a few things in my code before it worked however, so there’s a v0.2 release on the github page that’s the same zip file I copied and used on my chromebook. If you had tried 0.1 and had issues getting it to connect, it’s probably fixed in 0.2.



Excellent! Looks like we have the same Chromebook. Looking forward to using it this way.

Nice, I just got the X-Carve and primarily work on a Chromebook, so this will be something to try for sure!

I would love to have it on Linux. The only reason I run Windows is for CNC work.

1 Like

Yes to Linux/Chromebook. I am preparing to move to Linux since Windows 7 will be going out of support in the next year. Planning on moving my 3D printing there as well and my future laser engraving.

1 Like

Me too. And that’s only what I’m not able to do on my Mac.

I’d love to be able to use it in Linux but could it also work with the Raspberry Pi? I use one for my Shapeoko as I don’t want to run a full fat PC just to send some ASCII characters to the cutter :smiley:

If you have chrome running on the Pi it should work the same, I’m also working on a proper Linux version as well. It should be possible to have that (in progress version) running on the Pi, and then forward the commands over the network from another computer as well. But like I said, that part is in-progress.

YES!!! Linux PLEASE!!!:smiley:

I use a chromebox to run my xcarve… I have installed windows on the chromebox though, and easel can’t handle most of what i want to design these days, so only being able to have easel wouldn’t work for me… Unless there is a chromeos cad program i am unfamilar with?

Good news everyone!

I managed to package up a proper Linux build! (including support for Raspberry Pi @KelvinShirley) There’s a build for x86_64 and arm7l (Pi 2 and 3). It’s actually just the mac version verbatim, with the native parts recompiled for linux, and packaged up into an AppImage.

EaselDriver for Linux:

If anyone has a Pi 1 (or Pi Zero – same CPU) that they want to use for CNC stuff, let me know. Neither build will work on it, but I have both devices and can try to package it up. I did try actually, but had trouble getting raspbian to boot so I just left it out for the time being.

I also made a chrome app for forwarding ports:
At home I’ve been running easel-driver on the Pi, and forwarding from the chromebook to the Pi with good results.

I’ll try to get the chrome app into the web store this week once I get an icon made and whatnot.

As for the more portable implementation (read: rewrite) of the driver: progress has been slow due to some health issues that came up, and finding time was difficult. I have been thinking about it though, and the main benefit is losing the dependency on node, specifically the native-extension stuff (go being far easier to cross-compile), platform support, static binaries, and being able to package the full end-to-end driver into a chrome app.

However since it is ONLY for Easel (and it seems most people don’t use it exclusively) I have wondered if it’s truly worth the effort and maintenance cost of a full rewrite vs just running the driver on a Raspberry Pi (or other linux box) and just forwarding from the chromebook to use Easel for those with chromebooks.

Any thoughts?

The chrome API wrapper and the code-so-far on the driver are available on github, for those interested:

The chrome library already seems pretty solid (it powers the port-forward app) but there’s a lot of logic to go through on the driver side. The driver stuff is also a mess since it’s still just throwing stuff at a wall until I get it to POC-phase.

In any case, the best results at this time are going to be with the linux driver (linked above). It has been working pretty well for me so far (including the port-forwarding app – if you use a Pi, make sure to give it enough power!). And since there’s no shimming or code-changes necessary (just recompiling) I have a lot more confidence in it than the other approaches.

If you have any issues feel free to reach out and let me know!


First let me say thanks for this. It is very appreciated. I run a raspberry pi 3 hooked to the x carve and love the flexibility it gives me. I use Linux at home and was glad to give the GF her windows system back, I have UGS working great and I can also load the jason server for chillipeppr GRBL and they work. however I can not get this to stay connected. I get a connect then disconnect and retry error, is this a hub power issue? I read that you say to make sure your pi is powered up enough but since I did not have any problems with the ports on either of the other two programs I was unsure if I needed an external powered port or something. again thanks as this will be a life saver for so many that use alternate OS.

here is what i get when I start easel to carve

2016-10-01T14:24:21.912Z iris.js [id=0] Starting Easel Local 0.2.6
2016-10-01T14:24:21.938Z iris.js [id=0] Listening on port 1338 for connections from
2016-10-01T14:24:21.965Z Machine [id=4] Resetting
2016-10-01T14:24:24.699Z Websocket Controller [id=1] Setting config: GRBL 0.9 Default Configs
2016-10-01T14:24:24.701Z Machine [id=4] Resetting
2016-10-01T14:24:24.742Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:24:24.758Z Serial port controller [id=3] Port opened
2016-10-01T14:24:28.678Z Websocket Controller [id=1] Setting config: GRBL 0.8 Default Configs
2016-10-01T14:24:28.680Z Machine [id=4] Resetting
2016-10-01T14:24:28.684Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:24:28.691Z Serial port controller [id=3] Port opened
2016-10-01T14:24:32.767Z Websocket Controller [id=1] Setting config: GRBL 0.9 Default Configs
2016-10-01T14:24:32.768Z Machine [id=4] Resetting
2016-10-01T14:24:32.806Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:24:32.809Z Serial port controller [id=3] Port opened
2016-10-01T14:24:36.768Z Websocket Controller [id=1] Setting config: GRBL 0.8 Default Configs
2016-10-01T14:24:36.769Z Machine [id=4] Resetting
2016-10-01T14:24:36.772Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:24:36.775Z Serial port controller [id=3] Port opened
2016-10-01T14:24:40.817Z Websocket Controller [id=1] Setting config: GRBL 0.9 Default Configs
2016-10-01T14:24:40.818Z Machine [id=4] Resetting
2016-10-01T14:24:40.836Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:24:40.838Z Serial port controller [id=3] Port opened
2016-10-01T14:24:44.817Z Websocket Controller [id=1] Setting config: GRBL 0.8 Default Configs
2016-10-01T14:24:44.818Z Machine [id=4] Resetting
2016-10-01T14:24:44.823Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:24:44.826Z Serial port controller [id=3] Port opened
2016-10-01T14:24:48.894Z Websocket Controller [id=1] Setting config: GRBL 0.9 Default Configs
2016-10-01T14:24:48.894Z Machine [id=4] Resetting
2016-10-01T14:24:48.904Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:24:48.907Z Serial port controller [id=3] Port opened
2016-10-01T14:24:52.896Z Websocket Controller [id=1] Setting config: GRBL 0.8 Default Configs
2016-10-01T14:24:52.896Z Machine [id=4] Resetting
2016-10-01T14:24:52.904Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:24:52.909Z Serial port controller [id=3] Port opened
2016-10-01T14:24:57.016Z Websocket Controller [id=1] Setting config: GRBL 0.9 Default Configs
2016-10-01T14:24:57.017Z Machine [id=4] Resetting
2016-10-01T14:24:57.044Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:24:57.048Z Serial port controller [id=3] Port opened
2016-10-01T14:25:01.019Z Websocket Controller [id=1] Setting config: GRBL 0.8 Default Configs
2016-10-01T14:25:01.020Z Machine [id=4] Resetting
2016-10-01T14:25:01.025Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:25:01.027Z Serial port controller [id=3] Port opened
^A2016-10-01T14:25:05.107Z Websocket Controller [id=1] Setting config: GRBL 0.9 Default Configs
2016-10-01T14:25:05.108Z Machine [id=4] Resetting
2016-10-01T14:25:05.140Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:25:05.142Z Serial port controller [id=3] Port opened
2016-10-01T14:25:09.107Z Websocket Controller [id=1] Setting config: GRBL 0.8 Default Configs
2016-10-01T14:25:09.108Z Machine [id=4] Resetting
2016-10-01T14:25:09.111Z Websocket Controller [id=1] Opening port: /dev/ttyACM0
2016-10-01T14:25:09.113Z Serial port controller [id=3] Port opened