Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Custom firmware development

I got the Repetier FW running on the printer. The LCD, buttons, SD card, buzzer, fan, USB serial, and XYZ motors/end stops are working. The thermal readings are way off, so that's the next thing to address. I will release the code once I get something printed.

Great news, Kind of figures this is the one day I MUST have the printer running all day.

Good job man.
BGM - Thanks again for all your work. It is clear you are putting a lot of time into this.

I hope you will post a donate/paypal link so we can buy you some dinner for all your efforts. Of Course, the dinner will be better when the firmware is released. :-)

Finally printed the test cube. Looks good. Unfortunately Repetier usability heavily depends on the EEPROM, which is not present in Da Vinci printers. I guess I'll have to write an EEPROM emulation layer using a file on SD CARD. Flash is not gonna work, because it gets erased every time you upload new firmware.

Excellent work! appreciate the effort. Really looking forward to it.
What about the cart eeprom?

I know that meens having a cart in, but for a better reason this time? does it have a large enough capacity?
Too small. We need about 4k. Good idea though Smile
That's just awesome Bgm.

First the iPhone jailbreak if my memory serves me right, and now the Da Vinci Jailbreak.
I'll propose your for the Nobel Price of breaking free proprietary hardware Wink

Would something like this work?
It's got 4k, and there is a 1 wire version too.
maybe connected to the secondary cartridge contacts?
Awesome! And lots sooner than I ever imagined. I figured a year before this could happen.
You certainly need at least a dinner, or a whole bunch of free filament.
I think the card is the place to put the virtual EEPROM. I think that's what it's doing now, and it could even be "edited" out of the printer if necessary.

"Keep calm, and keep on hackin' "
tryervol, yes - that could be made to work. But I believe BGM is striving very hard to make this essentiall a software install only.

BGM - Could the user just re-enter their settings if there is a need to upgrade firmware? OTOH, I see nothing wrong with using the SD card for this purpose.

I think RepRapPro uses the SD card for their RepRapFirmware to hold the config as well.
I've committed my changes to , 'davinci' branch.
SD card based EEPROM emulation seems to be working fine.
A precompiled version is available at
I hope you understand that it's a pre-ALPHA quality software. Use at your own risk. I am not responsible for anything.
If you don't have experience with the Repetier Host don't use this firmware yet.
You can break your printer if you don't know how to calibrate the host software.
Many of the configuration parameters are left at their default settings (accleration, etc.)
I don't have time to figure out the proper ones. Hope someone will take it from here.
The code will require some cleanup before it could be merged back into the official branch.
I might come back to it later, but for now I feel like the mission is accomplished.

Otherwise enjoy,
FYI- This firmware can be installed from earlier versions of XYZware. Disable your internet connection, open XYZware. Click about - update firmware. XYZ will balk about no internet, then a dialog box will open. Just select this firmware and 'voila.

Note:I have not tried to revert, so I do not know if XYZ will "upgrade" back to their firmware. Frankly, after using this for 5 minutes I am not sure why you would want to go back. Worst case is you reset the chip and use Sam-BA to install their firmware.

Caution: Installing this firmware *WILL* reset the hour counter and erase the serial number. This may void your warranty. You can restore the serial number (see the Dav commands thread, thanks BGM) but I am not sure on the hours.

BGM- Where is that donate button?? :cheer:

I also have it installed already. I did use the arduino software and compiled and uploaded from source. I am looking for the info to implement bed leveling and calibration as we speak.

For instance this is the z probe code.

bgm pinout shows an out and an in with no pull-up. I can only assume the out ip supplies a 5v signal. How can I activate that?

The next thing to consider is that home is actual quite a bit in the negative from the actual table,

So the question there is do actually set-up the firmware so that the bed itself is 0.0.0 ant the homes are at negative?

That will determine how we want to proceed with probing, as it will be little use to find the pads then change how we do thing, but I suppose a simple addition or subtraction can make that an easy fix. I also did not see anything in the repetier documentation for probing failsafe distance, IE, it does not make contact and keeps moving due to plastic or glue, The da vinci firmware goes so far the stops eroring out.

So as far as I understand the pins will need to defined for the probe and maybee a gcode script for the routine or something.

ok I'll look into it more later tonight.

// #################### Z-Probing #####################

#define Z_PROBE_PIN -1
#define Z_PROBE_PULLUP 0
#define Z_PROBE_ON_HIGH 0
#define Z_PROBE_X_OFFSET 0
#define Z_PROBE_Y_OFFSET 0
#define Z_PROBE_SPEED 2
#define Z_PROBE_XY_SPEED 150
#define Z_PROBE_HEIGHT 40
#define Z_PROBE_X1 20
#define Z_PROBE_Y1 20
#define Z_PROBE_X2 160
#define Z_PROBE_Y2 20
#define Z_PROBE_X3 100
#define Z_PROBE_Y3 160
Please donate your time to making it a better 3d printer for everyone. The Da Vinci is my first 3d printer, so there are a lot of things about 3d printing I still don't know, like finding the proper speeds, accelerations, temps, creating Cura and Slicer profiles, etc.
I want this to be an open project well supported by the community, supported by people who are way more experienced than I am, which is pretty much anybody on this forum Smile.

Josh - I trust you saw this:

The auto leveling can be hard on the Z. I choose to home everything and then set the bed below the extruder with the set screws. Then I spaced the extruder from the glass near the three test points with a piece of paper. Then I started printing. Very successful. I kept my slicer settings that were being used with the XYZ firmware. Very pleased for only a short time of playing around.

Minor issues I have noted so far:

1) There needs to be a delay after power on before the LCD is initialized. Sometimes it happens so fast the LCD contrast is too high and the LCD displays as 2 lines
2) Some characters are cut off on lcd menus

BGM - It would have taken another month or more as little free time as I have to get to this point. On behalf of everyone, THANK YOU!

Try increasing UI_DELAYPERCHAR from 40 to 320 in uiconfig.h. That was the original value there, but the menu animation was too slow with that delay.
I later turned the animation off completely, but didn't increase the delay back, because it was working just fine with my LCD.
Let me know if it works.

First, make sure you never use 5v anywhere on that board. Everything is 3.3v and is not 5v tolerant. Start with a simple arduino sketch just to make sure the pins are working. You can use a wire to connect the extruder head to the metal pads.Use pinMode() to set up the pins first, then digitalWrite(outpin,HIGH) to set the output pin to 3.3v. The digitalRead() from the input pin should return HIGH then.
I just glanced over the automatic Z probing in Repetier and got the impression that it would require either a Z-max sensor or some code changes that will simulate a Z-max detection at some distance (say 10-20mm) from 0. Obviously it wouldn't detect maximum Z distance, but the leveling part could be done. Again, that's just my impression, I could be wrong on this one.
For now I just set Z-home to -3.5 in EEPROM (I just probed the bed manually using a piece of paper test).

Forum Jump:

Users browsing this thread: 1 Guest(s)