Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Da Vinci Setup Guide: From Installation to Wireless Printing
I wanted to share some good information with you guys on how I went about setting up my print environment. First off, thanks to those who worked hard bringing us Repetier Firmware!!!

Now, I looked and looked but couldn't find a guide that covers all the steps here so I figured I would put one together. I hope this helps someone out!

***Da Vinci Setup Guide: From Installation to Wireless Printing***


The first thing you want to do is download the Arduino IDE 1.5.8 from You can either clone the github repo or just click the Download Zip button on the right. Now extract both zips (Repetier Firmware and Arduino IDE) to whatever working directory you want to use.

Now we need to update the arduino files with the files from the Repetier Firmware. First copy /src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp from your Repetier-Firmware-0.92 folder in your working directory to /hardware/arduino/sam/cores/arduino/USB/ in your arduino-1.5.8 folder in your working directory. Next copy /src/ArduinoDUE/AdditionalArduinoFiles/1.5.8/hardware/arduino/sam/variants/arduino_due_x/variant.cpp from your Repetier-Firmware-0.92 folder in your working directory to /hardware/arduino/sam/variants/arduino_due_x/ in your arduino-1.5.8 folder in your working directory.

Next, we need to make sure we specify the correct printer in the Repetier Firmware config file. Open up /src/ArduinoDUE/Repetier/Configuration.h from your Repetier-Firmware-0.92 folder in your working directory. Look for the comment that says "EDIT THESE SETTINGS MANUALLY" (around line 22) and adjust the settings accordingly. This just tells Repetier what printer you have.

Now we need to blow away the stock firmware on your printer. This allows us to be able to flash the Repetier Firmware. Turn the printer off and remove the back panel. You'll need to short jumper JP1. You should see it relatively close to the middle of the board. If you don't have a jumper to put on don't worry, we can use a paper clip. Get a small paper clip and bend it into a U shape. Put each end into the two holes to make the connection and short the jumper. While holding this in place, turn the printer on and wait a few seconds then turn it off again. The printer will have been erased and removed the current stock firmware, which will allow it to be detected as a normal Arduino DUE.

At this point, if you are using Windows you will need to install the drivers for the Arduino DUE board. (


Now we get to install the Repetier Firmware onto the Da Vinci printer! Connect the printer to your computer and power it on. Open up the Arduino IDE and open the /src/ArduinoDUE/Repetier/Repetier.ino file in your Repetier-Firmware-0.92 folder in your working directory. Under Tools, be sure to select Arduino DUE (Native USB Port) for the Board and select the correct Port (you likely just have the one device). Once you're ready, hit the Upload button to send the Repetier Firmware to your printer. Once it's done, you can close the Arduino IDE and disconnect the printer. On the printer's screen, go to Settings and then choose Store to EEPROM.

*Bed Leveling*

At this point you want to level your bed. While it was PROBABLY close right out of the box, installing Repetier Firmware will require a new calibration. The best way (in my opinion) is to go to Position on the printer's screen and then Home All. Now turn the printer off. Slide the extruder over the bed and have it sit above each of the three adjustment screws on the bottom of the bed. If the extruder hits the bed, just tighten the screws a little at a time and evenly for all three screws. Tightening it will lower the bed giving more space.

Once you have the extruder going JUST above the bed without hitting hit, get a piece of paper. Folder the paper in half. Now stick the paper between the extruder and bed. It should just barely fit and be kinda snug. If it doesn't fit, adjust the screw in that spot. Do this for all of the screws. Once that is complete, check the middle. If it's off, check all of the screw areas again.

Now that you did a cold calibration of the bed, slide the extruder out of the way and turn the printer back on. Go to settings and set the mode to advanced. Now go to maintenance and start the manual bed leveling. We are going to do a hot calibration now. So repeat the same steps you did above for the cold calibration. It should be fairly close already. Once you are happy with it, finish out the sequence and save it to EEPROM. If you want to check your settings, you can do an auto bed leveling from here.

*Prepping Software*

Now that the printer is setup and calibrated properly, you can install the software on your computer. It's at this point that you can take a few different directions. I'll show you the two that I took, starting with the direct connection method.

*Repetier Host as Software via Direct Connection*

Go to and download the latest version of Repetier Host for your OS. Install it per their instructions.

We will want to configure our printer. With the printer connected and powered on, open up Repetier Host. Click printer settings. You can give this a name like "DaVinci" at the top of this window if you like.

Under the Connection tab, set the connector to Serial Connection. Port will be obvious in the drop down as it's likely the only device in the list. Baud rate depends on what you set on your printer, but is likely either 115200 or 230400. Use the following params for the rest:

Transfer Protocal = Repetier Protocal
Reset on Connect = Due native USB port
Reset on Emergency = Send emergency command and reconnect
Receive cache Size = 202
Check the box for Ping-Pong Communication.

Under the remaining tabs, set the params how you like them. There are others who are sharing their settings if you would like to see their's. This applies to the CuraEngine Slicer as well.

Once you've set all the params as shown above, you can start printing!

*Using OctoPrint for Wireless Printing*

I prefer to use OctoPrint for my printing. This allows me to have the printer elsewhere and not tie up my laptop when I want to print. I can just send print jobs from any of my computers over WiFi and not worry about it.

I know there are a couple ways of doing this, but I'll share my way. Firstly, I'm not using the Raspberry Pi as you get MUCH better performance out of the BeagleBone Black for very little extra cost.

1. Things to buy

Things you will need:

BeagleBone Black ($45)
USB Hub - if you want to use a webcam ($5-$15)
Micro SD Card - at least 2 GB ($10)
AC Adaptor for BeagleBone Black - optional, but better performance than USB cable since CPU will be clocked higher ($10)
Webcam - optional, I used a Playstation 3 Eye Camera ($10)

2. Prep Work

First thing to do is download the latest Angstrom Linux image for the BeagleBone Black. Go to to update to the latest image you downloaded if you are on Windows. For Linux/Mac, it's as easy as:

sudo -s
(type in your password)
xz -dkc Angstrom-*FILENAME*.img.xz > /dev/sdX
where X is your device. Mine was /dev/sdc. You can check with dmesg for fdisk -l.

Once you have the SD Card ready, power off the BeagleBone Black and put the SD Card in.
Hold the boot button (S2) on the top right near the SD Card slot. While holding the button, give the board power. After powering up the board, the four LEDs will flash initially, but then they will all light up together for a few moments. After this you can release the boot button. At this stage the LEDs should flash and continue to flash for the next 15-45 minutes. Wait until the LEDs stop flashing and all 4 LEDs are fully lit. Disconnect the power and take out the SD Card.

At this point, plug in the printer to your BeagleBone Black (or USB Hub if you're going to use a webcam) as well as your ethernet connection. Power on the printer if it's not already on and power on the BeagleBone Black. Now you'll need to get the IP Address of the BeagleBone Black. There are a couple options, but here are the two easiest:

a. Plug the BeagleBone Black into your computer using a Mini USB cable. You will get a new connection and can ssh (using putty.exe if on Windows) to to connect to it. Running the ifconfig command will give you either an eth0 device with the IP Address on your network.
b. Scan for IP Addresses on your network. If you don't know how to do that, you can also open up your router admin page and look for connected devices.

Once you have the IP Address, you are done connecting directly to the BeagleBone Black (or already were done, if you did option b above).

SSH (using putty.exe if on Windows) to the IP Address you got for the BeagleBone Black. There is no root password at the moment, but you can set one with the passwd command.

3. Installing OctoPrint

First we need to add our user for the services. While still ssh'd to your BeagleBone Black, run these commands:

mkdir /home/octo
useradd octo
usermod -a -G tty octo
usermod -a -G dialout octo
passwd octo

Set the password for your user.

Now we need to install a few packages, so run these commands:

ntpdate -b -s -u
opkg update
opkg --force-reinstall install connman-angstrom-settings
opkg install python python-modules python-pyserial python-numpy python-setuptools python-misc python-pip git

Now switch to your octo user you created by running this command, ignoring any permission errors:

su - octo

Now we need to pull down OctoPrint code and install it by running these commands:

git config --global http.sslverify false
git clone
cd OctoPrint
pip install -r requirements-bbb.txt

OctoPrint is now installed, but we need to setup a service to run it. Create the file /lib/systemd/octoprint.service using either the nano or vim command to get to a text editor. It should have these contents:

Description=Run OctoPrint



Save those changes to the file. Next we need to let the system see this new service, so we make a link to it by running these commands:

cd /etc/systemd/system/
ln /lib/systemd/octoprint.service octoprint.service

Now we tell the system we want it to be an enabled service and to start it now by running these commands:

systemctl daemon-reload
systemctl start octoprint.service
systemctl enable octoprint.service

OctoPrint will now start on boot and is currently running! Now open up your browser on your computer and visit http://BEAGLEBONE_BLACK_IP_ADDRESS:5000 to get to the OctoPrint page. You will likely be asked to create a user and use access control, so do so now.

4. Configure OctoPrint

Now while still on the OctoPrint page, go to Settings. On the Serial Connection Tab, set the Serial Port to /dev/ttyACM0 (should be the only device listed). Set these other params:

Baud Rate = 230400 or 115200, depending on your printer setting
Check Auto-connect to printer on server start

Leave the rest defaulted.

On the Printer Parameters tab, set the bed size to 200 x 200.

On the Temperatures tab, set the temperatures how you like them.

On the Features tab, be sure to ONLY check the following boxes:

Enable Temperature Graph
Enable GCode Visualizer
Send a checksum with every command
Support target temperature format
Swallow the first "ok" after a resend response

Save your settings. The connection tab should be filled in, but if not just verify it's what you selected in Settings. Check both boxes to save your connection settings and auto connect.

You can now upload your GCode files here and print wirelessly! Please note, I do not recommend uploading STL files and using Cura as a slicer with OctoPrint. While it's possible, I MUCH prefer to make my edits on my computer and generate a GCode file. This way it's easy to make edits and you are not offloading the resources required to slice to a little box that prints for you! As such, I will not go over how to setup Cura on the BeagleBone Black (but it's not hard!)

I personally use KISSlicer 1.5 ( to do my slicing. Once I get the GCode the way I want it, I upload it and print.

5. Optional Webcam

If you want to use a webcam, we can go over installing it. I used a Playstation 3 Eye Camera which you can get used for $10 at GameStop. It's got decent enough quality, but it's good in low light and has a wide angle. I mounted mine in the opening on the side of the printer with some velcro straps.

First thing we need to do is get MJPG-Streamer. So back to your SSH session into your BeagleBone Black. Run these commands:

opkg install subversion libjpeg-dev imagemagick
su - octo
svn checkout svn:// mjpg-streamer-code
cd mjpg-streamer-code/mjpg-streamer
make clean all

Now let's make a file to start it. Use the nano or vim command to get to a text editor. Create the file /home/octo/ with the following contents:

/home/octo/mjpg-streamer-code/mjpg-streamer/mjpg_streamer -i "/home/octo/mjpg-streamer-code/mjpg-streamer/ -y -f 15 -r QVGA -n" -o "/home/octo/mjpg-streamer-code/mjpg-streamer/ -w /home/octo/mjpg-streamer-code/mjpg-streamer/www"

Save the file.

Just to note, the -y specifies YUYV format (since the PS3 Eye Camera only supports YUYV). The -f 15 specifies 15 frames per second, but you can adjust this if you like. The -r QVGA specifies the resolution, and the PS3 Eye Camera runs at QVGA (320x240). The -n says to disable isoctl controls since the PS3 Eye Camera does not have a motor in it to move around anyway.

Give it permissions to run with this command:

chmod 755 /home/octo/

Give our user permissions to the camera with this command:

usermod -a -G video octo

Now you have MJPG-Streamer ready to go! But just like OctoPrint, we need to make a service. Create the file /lib/systemd/webcam.service using either the nano or vim command to get to a text editor. It should have these contents:

Description=Run WebCam



Save those changes to the file. Next we need to let the system see this new service, so we make a link to it by running these commands:

cd /etc/systemd/system/
ln /lib/systemd/webcam.service webcam.service

Now we tell the system we want it to be an enabled service and to start it now by running these commands:

systemctl daemon-reload
systemctl start webcam.service
systemctl enable webcam.service

Now we will need to let OctoPrint know about the Webcam. Back to the OctoPrint page in your browser, go to Settings and then Webcam. Set the following params:

Stream URL = http://BEAGLEBONE_BLACK_IP_ADDRESS:8080/?action=stream
Snapshot URL = http://BEAGLEBONE_BLACK_IP_ADDRESS:8080/?action=snapshot
Path to FFMPEG = /usr/bin/ffmpeg
Timelapse Bitrate = 5000k

Back to the ssh session, we need to restart the OctoPrint service with this command:

systemctl restart octoprint.service

There you go! You're webcam should be working now! You can setup your timelapse under the timelapse tab, or you can view the stream under the control tab.

Congratulations! You now have a fully working OPEN Da Vinci 3D Printer that you can print to and watch wirelessly! Enjoy!
nice guide, thank you

After flashing the new firmware, the Readme says to "Load fail-safe" and this guide says to save the config to EEPROM which sounds like "Store to EEPROM." Could you clarify please?
Yes, it should be Store to EEPROM. I just updated the guide to be more clear. Thanks for pointing that out!
Quote:Once flash is done do not forget to use M502 then M500 from repetier or got select printer menu "Settings/Load Fail-Safe" and accept to save in eeprom to have correct eeprom settings.

So where does "Load fail-safe" come into play (as mentioned in the Readme)?
It was my impression that both options will save your settings to EEPROM and that's all that's needed in that step. I have always picked this option and have had zero issues.
Ok, that's what was confusing me. Thanks
I'm thinking about adding an FAQ section to this guide to cover some of the other questions I had to answer when setting up my printer. Do you guys think this would be helpful?
Yes, definitely. The information that's out there is so spread out, it takes a long time to find it all when you're new to this stuff.
Hi, thx for the info.. but im having problems with it, i follow all the steps but printer stays with the black bars. ( mine is form the old ones, no pins but jp1 jumpers )

i did the manual edit and all (yes im a noob and took some time doing it step by step) and still no flash

went and got the .91 bin and that one flashed. So how do i make a bin from the .92 files? :dry:
First and foremost, thank you for this guide. I flashed from 1.0J to Repetier .92 this weekend by following this guide and everything went smooth Smile

Quick question:

Now that I am on .92, how to I upgrade to the newest build? Do I just follow all the steps like I did to get to .92 (using a more current zip file) or is there a shortcut to get updated. In other words, do I still do all these steps:

1. copy USBcore.cpp from Repetier directory to Arduino directory
2. copy variant.cpp from Repetier directory to Arduino directory
3. edit configuration.h in Repetier directory (I assume I will always have to do this)
4. short jp1 on printer to wipe current firmware
5. load repetier.ino in Arduino IDE and "upload"
6. go to settings on printer and choose "store to EEPROM" ( I assume this will always have to be done as well).

Sorry for the newb question and thank you in advance for any feedback.
Using a more current zip file, step #5 should suffice.
#3 (to check your configuration.h match your printer)
#5 (build and upload)
#6 (may be not necessary if no eeprom change as you already are in 0.92)
hi all, just flashed the printer and it is saying that the computer doesn't recognize the usb. I am using windows 8.1 and everytime i go to install the drivers it comes up as a bossa programming port (it should be an (Arduino Due Programming Port). I'm freaking out and don't know what to do. Any help would be greatly appreciated. this is the guide I used, I followed the steps perfectly but it didn't work. fyi i have da vinci 1.0a
What drivers do try to reinstall ? normally if you flashed using arduino should be arduino drivers, the one provided by arduino ide
try to uninstal/reinstalll arduino ide and do not forget to update variants.cpp/usbcore.cpp after installation
I updated variants.cpp/USB core.cpp and then flashed, no problems so far, I was using windows 8.1, and the next step is to install the Arduino drivers, I go to the link, follow the instructions and under device manager it comes up as a bossa programming port, but Arduino says it should be a Arduino duo programming port, I go to update the drivers, and follow the steps on the Arduino website and nothing changes. Thanks for the quick reply
do yo see the com for printer in arduino IDE ?
Yes it showed up as com 12 bossa programming port
do you see it also in repetier host ?
You can manually update drivers by taking the ones in C:\Program Files (x86)\Arduino\drivers
go to devices manager and select the bossa one and choose update etc....
i can't see oit repetier host, and when i manually update the drivers from the ones in C:\Program Files (x86)\Arduino\drivers and i get the same result. Any wuggestions what to do now?

Forum Jump:

Users browsing this thread: 2 Guest(s)