Guide for using your FelixPrinter on a Linux Host

Discussions about firmware/slicing software, tweaks and settings
Post Reply
Posts: 6
Joined: Thu Apr 04, 2013 12:14 pm

Guide for using your FelixPrinter on a Linux Host

Post by wmeertens »

This guide is written for Lubuntu 13.04 and a Felix2.0 printer but I assume it will work with the other versions as well.

I tried to be so clear and short as possible. I think it's complete. If you have questions or additions please feel free to post them.
I think you can almost copy and paste everything, but please think careful about all the steps taken.

First I used Debian Wheezy, but I had some trouble to get sketchup working, which functions quite nice in Lubuntu. If anybody is interested, I can post some instructions for that as well.

What software will be used:
Note: first link is the place were you can select and download.
second link is the iso/package/tarball I used
This is just a list, in the installation part I'll use wget to get everything

- Lubuntu 13.04 32bit ... p-i386.iso

- RepetierHost 0.85c ... 90bGluaw==

- Arduino software ... inux32.tgz

- Firmware for your FelixPrinter ...

- PyPy Linux binary (2.0 beta2 32bit) ... ux.tar.bz2

- Additional packages installed with your packagemanager

Note: Everything is installed in a directory inside the home directory.
Feel free to install somewhere else.

1) Install Lubuntu
2) Once installed download the RepetierHost application, untar, change dir en run the shell script.
open a terminal

Code: Select all

wget -O repetierhost.tar.gz ''
tar xzvf repetierhost.tar.gz
cd RepetierHost
This will start the download and installation of several packages, you will need to enter or 'Y' a few times.

3) Installing PyPy
open a terminal

Code: Select all

tar xjvf pypy-2.0-beta2-linux.tar.bz2
make a symbolic link of the pypy binary in your /usr/bin dir.

Code: Select all

sudo ln -s $HOME/pypy-2.0-beta2/bin/pypy /usr/bin/pypy
!! Don't copy, otherwise pypy can't find the needed libraries !!

4) Install some additional packages
open a terminal

Code: Select all

sudo apt-get install python-tk
If you have a nVidia gfx card

Code: Select all

sudo apt-get install nvidia-current
!! I had troubles with the nouveau driver !!

5) setup your serialport
In Debian and Derivates you need to be part of the dialout group
add your user to this group

open a terminal

Code: Select all

sudo usermod -a -G dialout $USER
Logout and Login again. (Change will not be active if you don't)

!! If you want you can make an udev rule so the printer will get a fixed serial port !!
Google for info on how to do this.

6) Change the firmware and send it to your FelixPrinter
open a terminal

download the firmware for your printer

Code: Select all


Code: Select all

tar xzvf arduino-1.0.4-linux32.tgz
!! You might need the Java Runtime Environment !!

Code: Select all

sudo aptitude install openjdk-7-jre

Code: Select all

cd arduino-1.0.4
setup the correct board.
For the FelixPrinter2.0 this is the Atmega2560 (not the 1280 as described in the manual)
setup the correct serialport (probably /dev/ttyUSB0)

Open the marlin.ino file from the extracted firmware directory.
This will open a lot of tabs in your arduino IDE.
Select the one which is named configuration.h

Around line# 20 you'll see:

Code: Select all

#define BAUDRATE 250000
//#define BAUDRATE 115200
Change these two line to:

Code: Select all

//#define BAUDRATE 250000
#define BAUDRATE 115200
compile and upload to your FelixPrinter.

The Linux ftdi driver support baudrates upto 1Mbaud, though the MoNo serial i/o code will give problems with:
- NON ANSI baudrates i.e. 250000
- Everything above 230400 -> you can hack support, but I didn't try this.
- The FelixPrinter uses a 16Mhz oscilator -> this will give a very high error rationg at 230400 (I could communicate, but couldn't get past the x commands waiting)
- Perhaps a change of the oscilator to 14.7456MHz or 18.4320MHz or could fix this. (Guillaume is this possible or will it give problems) In this way all Standard ANSI baudrates are supported with a 0% error.
- Nevertheless 115k2 works fine (till now)

7) Get the SFACT slicer and sfact_profiles
open a terminal

Code: Select all

cd RepetierHost
tar xzvf sfact.tar.gz
(Guillaume could you host these files?)
Note: the files are from the windows installation of the Repetier setup hosted on

8) Start Repetier and configure evertything.

a) Printer
- Go to Config -> Printer Settings
- Select the correct port (probably /dev/ttyUSB0)
- Set the baudrate to 115200
- Leave the rest at default (1/none/autodetect/63)

select tab 'Printer'
- Travel Feed rate: 4800
- Z-Axis Feed Rate: 300
- Default extruder temp: 195
- Default heated bed: 55
- num of extruders: 1
- Check the 'Check extruder...' and 'remove m105...' check boxes
- park pos: x 130, y 0, z 0

- check the three "Disable ... after job/kill" check boxes

select 'Printer Shape tab'
- Printer type -> Classic Printer
- Home x,y & z -> Min
- x min = 0 , xmax = 255, bed left = 0
- y min = 0 , ymax = 205, bed front = 0
- print area width = 255
- print area depth = 205
- print area height = 195

Apply -> OK

b) setup the SFACT Slicer
- Go to the slicer tab on the right of the screen
- Make SFACT -> active
- Select 'Setup'
- Skeinforge app -> RepetierHost/sfact/SFact/skeinforge_application/
- Skeinforge craft -> RepetierHost/sfact/SFact/skeinforge_application/skeinforge_plugins/
- Working dir -> RepetierHost
- Profiles dir -> RepetierHost/sfact_profiles/profiles
- Python interpreter -> /usr/bin/python2.7
- PyPy -> /usr/bin/pypy


The dropdown box should now be populated with the profiles.
Go to configure and select profile type 'Extrusion'
The profile selction dropdown box should also contain all the profiles.


9) Everything is setup and you can start slicing and printing. Enjoy.

Edit: It's advisable to turn of your screensaver, when it starts your printer will halt for a second (don't know if this will cause any problem though)

Wouter Meertens

Posts: 334
Joined: Fri Mar 16, 2012 8:26 pm
Location: Stavanger, Norway

Post by Kjetilei »

@wmeertens: Thanks for a great guide! It shows real determination to get it going in a Linux environment :) Good luck with your printer/printing.

Posts: 6
Joined: Thu Apr 04, 2013 12:14 pm

Post by wmeertens »

@Kjetilei: Your welcome :) Determination is my middle name ;)
Actually I think I had everything up and running in under one hour.

Posts: 116
Joined: Wed Aug 15, 2012 1:13 am

Post by Lioric »

You can use 250000 baud in linux, and most probably Ubuntu already support this without any modification, you need to look into custom baud rates:

- Open the port with the custom divisor flag, tty->termios->cflag=B38400
- Set "serial_struct.flags |= ASYNC_SPD_CUST"
- Set you serial_struct custom divisor to the required (baud_base / 250000)
- call TIOCSSERIAL ioctl with the modified struct

For my project I have modified the ftdi kernel module directly, so Im not using this method

Posts: 6
Joined: Thu Apr 04, 2013 12:14 pm

Post by wmeertens »

@Lioric: To my understanding the problem with the baudrate isn't due to the FTDI kernel module, which is supposed to support baudrates upto 1Mbaud, but to the MoNo library which is used by RepetierHost. But I will check later this week, thanks for pointing at this solution.

What is your experience with 3D CAD programs on Linux systems? I tested some, but most of them didn't feel right. Maybe it's just because they all have a rather steep learning curve.

Posts: 116
Joined: Wed Aug 15, 2012 1:13 am

Post by Lioric »

The frontend system used by the host app has nothing to do with the port settings, after all, the serial port is handled via the filesystem namespace, and handled "externally" by its file descriptor, through the IO API

The issue is that 250000 is not a standard baud rate, so in Linux it goes directly from 230400 to 500000 (or something like that, I'm not in Lnux right now so I all this is from memory, it might be that there is another rate between those but it is not 250k).
The baud rate is not user space API dependant, but driver dependent (a suitable baud_base that produces a workable speed using the needed divisor)

So being MONO has nothing to do (although I really really don't like MONO or C#) with the serial port, as to it (and any user space app) it is just a regular streaming "file".

My experience with Linux CAD, is that you better have a dual boot machine with Windows ;)
Sadly the current state of CAD apps in Linux is that there is no real alternative (of course you have FreeCad and to some extent Blender) but after you use Alibre or Autodesk's apps, well yes, you can say it doesn't feel right

Posts: 7
Joined: Thu Apr 04, 2013 1:26 pm
Location: Kiev

Post by Fabbers »

Trying to get Felix controlled by a Raspberry Pi, have configured everything as per the instructions above, but unfortunately the rp can't see the printer. Will try a powered hub tomorrow and hope it is a power problem.

User avatar
Site Admin
Posts: 405
Joined: Sat Feb 25, 2012 10:40 pm
Location: Netherlands

Post by gfeliksdal »

Hi Wouter,
Thanks a lot for this amazing tutorial. I've hosted the requested files on

Posts: 7
Joined: Sun Jan 12, 2014 10:13 pm

Post by CSP »

For those who want to use Linux with Repetier 0.91 Firmwares (as for the Felix 3.0 Dual Extruder) it's no (longer?) possible to change the baudrate settings in the configuration.h

It's much "easier" now. You can select the baudrate by change the corresponding setting via the LCD module.

Configuration > General > Baudrate > 115200

To make the settings to take effect you just have to select

Configuration > Store to EEPROM

It's working for me with baudrates up to 115200.

Post Reply