Page 1 of 1

UMO/UMO+/Prusa firmware merge

Posted: December 22nd, 2016, 5:59 am
by antiklesys
Hi everyone,

I started working on a firmware merge between the Prusa I3 Mk2 firmware and the firmware published by Amedee.
It's quite the task as these two branches took separate paths and the electronics being used on the prusa is veeeery different from the one on the UMO.

Edit1: here's the github link to my work in progress: https://github.com/Antiklesys/Marlin-Experimental

So far I have identified the following type of files in the two firmwares:
-identical files (those are the best! No change needed)
-files existing in both versions but with different pieces of code
-files existing only in one of the two firmwares

List of files that "so far are identical" or have been merged:

BlinkM.cpp
BlinkM.h
motion_control.h
qr_solve.cpp
qr_solve.h
Sd2PinMap.h
SdFatStructs.h
SdFatUtil.h
SdFile.cpp
SdFile.h
SdVolume.cpp
SdVolume.h
Servo.cpp
Servo.h
speed_lookuptable.h
thermistortables.h
ultralcd_st7920_u8glib_rrd.h
vector_3.h
watchdog.cpp
watchdog.h

Edit2: Added more files to the merged list

Sd2Card.h
Sd2Card.cpp
SdBaseFile.cpp
SdBaseFile.h
SdInfo.h
MarlinSerial.cpp
MarlinSerial.h
motion_control.cpp
fastio.h
vector_3.cpp (thanks to Martin!)
cardreader.h
SdFatUtil.cpp
mesh_bed_calibration.h
mesh_bed_calibration.cpp
ConfigurationStore.h
SdFatConfig.h
stepper.h
temperature.h

The purpose of this merge would be to allow the usage of a PINDA probe on a UMO/UMO+ for automatic bed leveling by leveraging the capabilities of Marlin itself.
My challenge as of now is in the understanding of some pieces of code in the two firmwares to clarify what should be kept.

I would really appreciate the community help in this :)

Re: UMO/UMO+/Prusa firmware merge

Posted: December 22nd, 2016, 10:25 am
by LePaul
Will that probe work on glass though? I mean, will you have to change the bed to PEI with those 9 check spots?

Re: UMO/UMO+/Prusa firmware merge

Posted: December 22nd, 2016, 11:28 am
by antiklesys
Hey,

I'm already using a PEI sheet as printing surface.
This PEI sheet is directly attacched with a 3M adhesive on top of the aluminum bed.
Below the bed there is the glass (to prevent/counter bed bending).
As far as I have tested this probe is able to detect the metal successfully when placed at a few millimeters above the PEI.

Now if you instead would like to know whether this would also applicable for anyone else which is instead using a glass bed, the answer is: I don't know. I haven't tested that :)

Re: UMO/UMO+/Prusa firmware merge

Posted: December 23rd, 2016, 3:32 am
by drayson
Short one: which Marlin version have you used from Prusa side?
Has it something to do with the official Marlin which is currently in RC8?

Re: UMO/UMO+/Prusa firmware merge

Posted: December 23rd, 2016, 7:37 am
by antiklesys

Re: UMO/UMO+/Prusa firmware merge

Posted: December 28th, 2016, 3:58 am
by antiklesys
Still looking forward more people interested in joining the fun! :P

Re: UMO/UMO+/Prusa firmware merge

Posted: December 28th, 2016, 10:26 am
by martin-bienz
antiklesys wrote:Still looking forward more people interested in joining the fun! :P
that sound's like fun as I actually have an i3 mk2 and an UMO... but I would actually require some time (I would buy some if I could). :-D

As for the code section you are looking at in vector_3.cpp. You need to take the one from prusa / marlin. The vector calculation in the Amedee version is wrong (this was fixed in marlin original some time ago). I think it produced mirrored results, hope I got it right. You can look at the history of the file in the original marlin source, that's how I got it.

Re: UMO/UMO+/Prusa firmware merge

Posted: December 28th, 2016, 10:39 am
by antiklesys
Hey Martin, glad to have you on board!
I lack time too and this won't be a fast project to be completed, but if you have a couple of spare hours it'd be great to catch up on Skype and work together on the missing bits if you're up for it :)
I've sent you a PM :)

Edit: I now edited the code at the top too, as this piece was cleared:)

Re: UMO/UMO+/Prusa firmware merge

Posted: December 28th, 2016, 11:15 am
by martin-bienz
antiklesys wrote:Hey Martin, glad to have you on board!
I lack time too and this won't be a fast project to be completed, but if you have a couple of spare hours it'd be great to catch up on Skype and work together on the missing bits if you're up for it :)
I've sent you a PM :)

Edit: I now edited the code at the top too, as this piece was cleared:)
Yeah sure. I will probably look at some of the pieces tonight. Let's keep in touch.

EDIT: Now that I think about it. It might be really better to just "fix" the mesh bed leveling in the Amedee Marlin version and enable it (if this is "easy" possible). Other that that, I guess we are happy with the UMO Marlin version from him. What do you think? Maybe this was asked / discussed before?

Re: UMO/UMO+/Prusa firmware merge

Posted: December 28th, 2016, 2:47 pm
by antiklesys
Hi Martin,

I think if we do a "fix" it'll still keep the two branches separate.
If we do a Merge, it would allow to bring the UMO firmware to a point in which we can easily incorporate new improvements/additions to the firmware in a more seamless way.

Your thoughts?

Re: UMO/UMO+/Prusa firmware merge

Posted: December 28th, 2016, 4:46 pm
by LePaul
Impressive, gents!

Re: UMO/UMO+/Prusa firmware merge

Posted: December 29th, 2016, 3:40 am
by martin-bienz
antiklesys wrote:Your thoughts?
My thoughts:
  • Features, what are the features you would like to see that are not in UMO / Amedee's firmaware that are not in Marlin / Prusa's version, not only mesh bed leveling?
  • Maintenance, keep in mind that if you create a seperate branch, you will be required to maintain it as well
  • building. Amedee created a very nice framework with an online builder. I guess for most of us, it would be ok to compile it ourselfs but still the online builder with the most important settings as a config is very nice and easy to use.
For me, it's still ok to help with a seperate branch, if required. Might take a while :-D .

Re: UMO/UMO+/Prusa firmware merge

Posted: December 29th, 2016, 4:06 am
by antiklesys
Thanks Martin! :)

The main feature as of now is indeed just the bed leveling part, but from what i'm seeing in Marlin, there's a lot of pieces of code/parts that have been left abandoned (and were removed by the Prusa guys too).
My intention would be to make the firmware lighter too and easy to configure.
We have the builder indeed and I don't have issues having this work added into some sort of firmware builder aswell (with the help of Amedee or through other means).
For what concerns maintaining it, I don't think there should be major issues with that.
I'm currently maintaining my own branch of Marlin and tweaking it as I go.
Having to maintain two won't be a major difference, considering that after the merge it should be way simpler to integrate other pieces of code / additions from the Prusa firmware.

As of now, I see this already as a major goal. The firmware was somewhat "abandoned" by the UM team and Amedee is indeed doing a great work keeping this up, however we're still working on something that may be "old" and could benefit from a facelifting :)

Really looking forward collaborating with you on this Martin! :)

Re: UMO/UMO+/Prusa firmware merge

Posted: December 29th, 2016, 5:27 am
by martin-bienz
drayson wrote:Short one: which Marlin version have you used from Prusa side?
Has it something to do with the official Marlin which is currently in RC8?
good question btw. I have no clue on which marlin the prusa version is based upon... but for sure newer than UMO :) Might be worth considering RC8 in this instance...but that is a "bigger" project I guess.

Re: UMO/UMO+/Prusa firmware merge

Posted: December 29th, 2016, 6:24 am
by antiklesys
martin-bienz wrote:
drayson wrote:Short one: which Marlin version have you used from Prusa side?
Has it something to do with the official Marlin which is currently in RC8?
good question btw. I have no clue on which marlin the prusa version is based upon... but for sure newer than UMO :) Might be worth considering RC8 in this instance...but that is a "bigger" project I guess.
I did some checks and the Prusa firmware is indeed newer than the UMO and has similarities with Marlin RC8, that said it was branched widely from it and there are currently more difference between the Prusa VS Marlin RC8 than there are with the UMO firmware.