How much interest for Linux and ChromeOS support?

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: Releases · mastercactapus/easel-driver-linux · GitHub

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: GitHub - mastercactapus/chrome-port-forward
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!

3 Likes

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 easel.inventables.com:80 easel.inventables.com:443 easelstaging.inventables.com:80 easelstaging.inventables.com:443
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

@KennethConnell thanks for the kind words!

As far as what you’re seeing, it may be power. What I found was that I couldn’t get it to work (disconnect etc…) reliably with the power supply I had. I assumed the wifi was dropping out but I found that when I used one of those battery packs for cell phones (the ones that charge your phone) it worked. I ordered a 2.5A charger and it worked as well when I tried it last night. I’m also using a Pi 3.

Perhaps the EaselDriver is just less efficient and uses more power (wifi data and/or CPU cycles) than the JSON sender…

What distro are you using by the way? Also what is the current rating on the power supply you’re using for the Pi?
You can also try version EaselDriver 0.2.7; I just built it last night and tried a quick carve before uploading it.

Oh, and I just had another thought… and this could be it… Maybe it’s a permissions issue? (e.g. when it tries to write, it gets an error.) Based on your log’s it’s looking for fallback-versions of GRBL. Try running:
sudo chmod a+rwx /dev/ttyACM0
before starting EaselDriver and see if that does it. I’m not sure why the EaselDriver would specifically not work though vs others in that case, unless you ran the JSON server with sudo/root and not EaselDriver.

Also, make sure you don’t have the JSON sender running at the same time as EaselDriver, they don’t play nice together. :slight_smile:

OK, I got some progress today. got a new 2.5 amp power supply and plugged it in and same old thing. thought damn that didn’t work. so then I got to thinking the only other thing that was not stock was the firmware, I go the J-Tech laser and installed firmware 0.9g that picengrave recommends for PWM laser engraving, so I read that they have the new 1.0c updated so that you can use both spindle or laser so I downloaded that and install (flashed) the firmware. and presto connected and went straight to the set-up screen like it was supposed to. So in conclusion if you are running the picengrave 0.9g firmware it will not work with the Linux Easel driver. you will need to flash the newer 0.9j or the newest 1.0c. Thanks for all the help and I hope that this information helps someone else that finds themselves in the same situation.

I was also pleasantly surprised to find that xcarve-proxy start command from my Linux system also worked great. it was like bonus bonus. so I can run this from the raspberry pi or from the Linux system. Great work NathanielCaza many many thanks to you.

Has anyone used this on an X-Controller? I got it to work great on the Uno_GRBL board great but then got a new X-Controller in the mail and hooked it up and no luck. I did a symbolic link to /dev/ttyACM0 same as the old uno and still no luck. Can connect to the new X-Controller in UGS or Bcnc on port /dev/ttyACM0 or /dev/ttyUSB0 no problems. I am thinking it must be some part of the code that won’t recognize the vendor ID on the new X-Controller. Just wanted to know if anyone has used it with the X-Controller with success.

Wanted to try to update this with the new 3.1 drivers and got everything installed and compiled but then when I try to run it the AppImage failed and states could not cd to /usr ?? I am sure I am doing something wrong but I am not a programmer so I am asking has anyone compiled this for raspberry pi and if so can you post a link to download it. Thanks in advance.

Ok. I got this to compile and I also got it to connect to Easel with version 0.3.1 to the X-Controller. I have the pre-compiled AppImage if anyone wants it. I do not have a get-hub account so I did not upload it there. I still have not got it to connect to easel.inventable.com/setup but it will connect with easel.inventable.com and connect and carve. I want to continue working so that it can set-up properly as that is when you can use the touch plate and other settings.

Good news, I got this to set-up. What I did for a work around is open easel and have it connect, then while leaving that opened open a new tab and went to easel set-up because it was already opened on port /dev/ttyACM0 it connected and presto went though and completed the set-up sequence. Now I have probe functions and everything as it should be. Again a great big thanks to nathanielcaza for all his hard work on getting this going for all of us, without his ability to start this Linux driver, I would have never been smart enough to get it to work. great job and extremely happy.

1 Like

I’m glad you got it working!

I hadn’t realized that there is a download page with other/newer versions available (I only saw 0.2.7 from the setup page). The awesome news of that is I think I can automate detecting/building/publishing as soon as new versions are posted. I’ll see if I can get that going today :slight_smile:

Also, @KennethConnell, thank you for posting your progress as you were working through it, the context is helpful! Was there anything special you needed to do to get it to work, or was it just the process of getting it to build you were up against?

I am not 100% sure but when my Raspberry Pi 3 had an update, after that it would compile and work just fine. I believe it was the update that made the difference as after the update to the Raspberry Pi your version also began to work with the X-Controller. So I believe that something in the update corrected the way the USB port was reported or something like that as the only problem was serial port errors. I am just glad that these work with both the Adrunio GRBL combo and the new X-Controller.

Any updates to this? I am working on setting up a dedicated box in the shop - I have it running Linux Mint. I plan on using bCNC, but would like the option of Easel for some of my projects, particularly the ones where I am cutting out parts. I have yet to find a package that is as easy to adjust the material thickness and have the code change right away.

what I do is download this file (Link) from NathanielCaza, unzip to a location you choose, download the “MAC” version of Easel driver that you want to make for your system from Inventables (link) and place into the folder that you unzipped the other files to. you will need to also download the AppImageAssistant program(for your architecture) and place that into the folder. you need to read the readme file and make sure you have all the common tools for compiling programs installed to include the correct versions of node and nvm as needed. I then open the make file located in the folder that I extracted all that into and edit it to match the files that I downloaded (change easel driver from 0.2.7 to 0.3.2 etc.) then just run make in directory.