Remote Slicer (Alpha)
by cun83, published
Remote Slicer lets you do the slicing on a fast computer, while still using a slow/power efficient computer to control the printer!
Remote Slicer is a Client-Server program that offloads the slicing of your models to a fast remote computer. This way, you can use a slow computer to control the printer, while still enjoying the fast slicing times from a state-of-the-art computer.
Additionally, you can keep using the printer computer as a frontend, the remote slicing process is transparent to the printing host. Even better, the configuration on the printer computer is used by the remote slicer, you can still use the GUI to configure you printer, and have different configurations for each printer.
Update - 2013-02-23 - Alpha4
-Connection Timeout raised to 60 minutes. Slicing times >1 minute are possible now XD
Update - 2013-02-20 - Alpha3
-Both client and service should run on Linux now... or pretty much anywhere where a recent Mono version is available... *nix, MacOS, you name it :-)
-Service needs to be run as admin on Windows
Update - 2013-02-19 - Alpha2 (Client only update)
-Use multiple services to fall back to! (hint: use one local service for fallback to local slicing :-) )
-Config file changed. See comments in the .config file for how to configure multiple services
-Use Alpha1 service with the Alpha2 Client
Read the instructions for additional information.
Current features - Alpha3
-Linux, MacOS, Unix support via Mono
Current features - Alpha2
-Use Multiple services to fall back to!
Current features - Alpha1
-Client config is used by remote slicing services
-Fall back to local slicing if no service is available (without local service running)
-Configurability for the client & services
-Live feedback from the slicing process
-Support for more (all?) slicers
-Make the service a windowless service / background program
Offloading the slicing to a fast machine improved my slicing times by a factor of ~6!
The slicing time of a moderatly complex model went down from ~230s on my atom netbook to 37s on a Core 2 Quad machine.
Please note: This is work in progress, a barebone but functional proof-of-concept implementation. As it is working fine already, I figured I'll give you a chance to enjoy remote slicing early on. Follow this thing (or me) to be notified of future versions.
-Always use the latest version of both the client and the service. The versions are not necessarily in sync, just use the latest of each and it'll work :-)
-Integration into Pronterface is easy, and other host software that lets you can change the slicing software should work as well.
-If you have any suggestions or features you would like to see then I would love to hear about that.
-Currently only Slic3r is supported as a slicer
-Works on Windows, Linux, and probably MacOS, Unix... anywhere where you can install a recent .NET or Mono version (http://www.mono-project.com/)
-Currently tested on Windows only (nitial testing suggests it will work fine on Linux via Mono, but I haven't been able to fully test that yet works with mono... kinda. Message size is limited to 64kb, so this needs a workaround. expect a working linux version soon :-) )
-Service needs to be run as administrator on Windows (or permissions for URL-space can be given to a user/group. Run "netsh http add urlacl" in an admin cmd and see the help for the command. Url is "http://+:3333/SlicingService". Example for user cun83: "netsh http add urlacl url=http://+:3333/SlicingService user=cun83")
Instructions and Informations
Setup - Server
-Put a working installation of Slic3r on the server machine
-Extract the Remote Slicer Service zip on the server machine
-Edit the "RemoteSlicer_Service.exe.config" file, and insert the path to your Slic3r installation in the "Slic3rPath" configuration setting (just replace the existing path there). This needs to be the path to where the executable is! (slic3r.exe on Windows, slicer on Linux)
-Linux only (and maybe other non Windows OSs) : you need to add a symlink named "slic3r.exe" that is pointing to the slicer executable (slicer in Linux). This name is currently hard coded in the service... Oops.
-Run the "RemoteSlicer_Service.exe" service program. Just leave it running, no user interaction is required.
Setup - Client
-Extract the Remote Slicer Client zip file somwhere on the client (I like to put it in it's own subfolder in the pronterface folder)
-Edit the "SlicingServiceAddress" setting in the "RemoteSlicer_Client.exe.config" file to point to your server (only replace "localhost" with the name or IP of your server. Leave the rest as is).
-Read comments in "RemoteSlicer_Client.exe.config" how to set up one (or multiple) remote slicing services to use (hint: use an additional local service for fallback to local slicing :-) )
-Setup your host program to use RemoteSlicer as a slicing program. It uses the same arguments as Slic3r:
%INPUTFILE% --load %CONFIGFILE% --output %OUTPUTFILE%
(see screenshot for configuration of pronterface option. Note: this assumes that you put Remote Slicer in a subfolder of pronterface (i.e. next to the Slic3r folder), called "RemoteSlicer". You can use absolute paths for the exe and the config.ini file if you have different folder structures).
-Both the client and the server need the Microsoft .NET Framework 4.0 Client Profile installed (OR a recent Mono version (http://www.mono-project.com) if you're running an OS other than Windows). See http://www.thingiverse.com/thing:51262#comment-810548825 for download link (Windows only).
-Port 3333 needs to open for incoming connection on the server, and the client needs to be able to use Port 3333 for outgoing connections. You may need to configure your firewalls to allow for this. [Edit:] Windows only: Turns out you need to add a rule to the firewall in advanced config (Allow Port 3333 TCP). Simply addding the service exe to the allowed programs does not suffice!
-Do NOT publish the service on a public IP. It's neither intended nor safe to do that.