# 3D Printing > 3D Printers (Hardware) >  RepRap vs. Marlin Firmware

## AutoWiz

I have never seen RepRap firmware. All of my experiences have been with the Marlin. But now There is a way to apply the RepRap firmware to the SKR and other mainboards. Anybody here with experience with both that can tell me which is better and easier to use and gets better results and is faster and all that good stuff? Check out this video, guys: https://www.youtube.com/watch?v=Mw-Gg3y__Go

----------


## spegelius

Interesting, I have one MKS Sbase so I might test this, not sure if the Sbase is the required 1.3 version though. I do like Reprap FW, I have couple of Duet boards and they work very well once you get them set up. Same goes mostly with the Marlin based boards, excluding RAMPS, I really don't see very striking difference in everyday printing, all machines do their job once you get them set up. Some of the machines I use are still 8-bit and I really haven't seen that much difference in overall printing, sure some of the small segments print faster on 32-bit and 32-bit boots up bit faster, but nothing earth shattering.
On Reprap FW the configuration is easier once you get to know how it's done, everything is gcode and configurable in the web UI, no need to recompile the fw to change things. Also Reprap fw is very flexible in the configuration, so in this is a big plus when working with multiple extruders and more exotic setups. On Marlin I had to modify the Marlin code to get a custom relay setup working, on Reprap it was few lines of gcode in config.

When coming from Marlin, the initial configuration is involved though, so depending on the printer might take some tinkering. The online configurator helps a lot and gives you a good basic config to work on. I got my first RAMPS -> Duet conversion done in few hours, but it needed some tweaking of course. Also setting up the bed sensor needed some soldering due to some voltages being different on Duet and RAMPS.
After the setup it gets a lot easier since all settings can be controlled in UI

----------


## AutoWiz

So do you think one is capable of generating better print quality? Or do you think they are just 2 different ways of doing the same thing and they can be dialed in comparably and the trick is really just knowing your way around what you are using?

----------


## spegelius

> So do you think one is capable of generating better print quality? Or do you think they are just 2 different ways of doing the same thing and they can be dialed in comparably and the trick is really just knowing your way around what you are using?


Well I haven't compared Reprap FW and Marlin on same hw so cannot say for sure, but yes, I think they both provide about same quality at same settings. The differences in print quality probably come when going beyond the 'normal' printer settings, like tuning the linear advance, s-curve acceleration, junction deviation etc. special options. Not sure Reprap has all those, it does have pressure advance and dynamic acceleration to reduce ringin. Also I'm not sure how big of a effect those special features have on quality, I did enable MArlin S-curve and Junction deviation on my Dollo printers, but I don't think those printers are the best platforms for tweaking the minute quality details anyways... my other printers are either running Prusa version of Marlin so no S-curve or Junction deviation or they are running Duet HW.

----------


## spegelius

Seem my Sbase is version 1.3 so Reprap FW should work on the board. I'm tempted to try it out even though I'm quite happy with the current Marlin configuration. Still, assuming everything works properly, moving to Reprap fw would remove the need to recompile the fw every time I need to change the printer configuration. I'll lose wifi (I'm using Octoprint) so I'll need to plug in ethernet cable or buy ESP8266 and do some modifications on the board.

----------


## curious aardvark

the important question - well from  my point if view anyway :-)

Is reprap firmware more robust in it's compilation and uploading ?
Most of the time when I piss about with IDE and a firmware it either won't compile and won't tell me why or compiles and nothing works. 

I admit i try to mess with firmware as infrequently as possible and have yet to see any reason to change any firmware on my working machines. 

But I will need to setup my skr 1.4turbo board and screen on my cheapo prusa clone. 
And maybe also do something with the sapphire pro - when i remember to get my mate to bring his soldering iron with him. 
Plus currently got work on - so workbench is either occupied with base units or laptops.

But if it's easier either to setup OR to maintain (like the sound of just changing individual settings without mucking about with re-compiling.)

So is it better for those of us who are firmware averse ?

----------


## spegelius

If you hate compiling the firmware, Reprap firmware is just for you: it comes precompiled, just grab the binary file, put it on SD card (rename to firmware.bin) and boot the board. Or with Duet, upload it in the web UI. Not sure if the web ui update works on other boards.

Only time you need to update the firmware is when new version is released. And it's still the same thing, grab the binary and off you go.

That's the beauty of it, everything is configured in files on the sdcard and if using the web UI, you can use that to do the changes.

I did set up the compilation environment when I first started using Reprap fw because I though that to get my custom extruder relay setup to work I would need the change how some I/O-pins were controlled. Turned out that even those can be configured with configuration files as you please so that exercise was kinda wasted (maybe learned something, maybe not).

----------


## spegelius

Went for it last evening and so far it's a partial success: the board boots, I can connect to it with OctoPrint and it homes all axes properly. The motors even sound bit quieter? Not sure if this is just my imagination...
But there's still problems:
- OctoPrint serial connection seems flaky at time, keeps disconnecting. Not sure why.
- DWC (Duet Web control) doesn't work. Connected the board to ethernet and it does get IP address with DHCP, ping works (with some gaps from time to time so maybe some connection problem?), but no response when trying to connect with http, ftp or telnet. This is a big minus, if I don't get DWC working might as well go back to Marlin + OctoPrint because now the configuration changes mean that I have to remove the SD card from the board and modify the config files on my PC.

I'll try to print something today to see if it works reliably. Also there are a couple of options to get DWC working:
- I have ESP8266 that came with the MKS touchscreen I bought with the SBase. Needs some soldering but should be relatively straightforward so I would have wifi
- check the SBase board. Last night I googled some and found out that the SBase boards from china might have some components missing or installed wrong (supprise!) which makes the ethernet behave badly.
- use the SBC mode which means using raspberry pi to act as a external Wifi module/controller to the SBase as with Duet3. I don like this option too much because it means I still need the raspi and there's no instructions for SBC setup for SBase, although the SKR instructions should provide the required information. Just need to find the correct pins on SBase...

----------


## AutoWiz

You need to be my friend Spegelius. Come visit me in sunshiny South Florida. And help me get my multi material printers up and running. You really seem to know what you are doing. Or at least seem a lot more comfortable with it than me.

----------


## spegelius

Heh, I didn't feel very comfortable yesterday trying to get this working. Don't worry, well get you multi material printing. Once Prusa ships my MMU2S I'll have first hand experience with it, right now it's somewhat of a guesswork how everything works in it.

I managed to get RRF working. Once I established a serial connection to the board using screen in linux (screen /dev/ttyACM0 115200) I saw that the board was resetting itself every time I tried to load the web UI. I tried a bit older release and it worked a tad bit better, even managed to get some text loaded on the web UI, but it kept resetting still.
Finally I noticed on the config.g that I had enabled the 12864 display I was using with Marlin and tried disabling it as it was showing garbage anyways and you have to define your own menu apparently (need to investigate that more in depth later). The display part was suggested by the online configurator (which is a must if you want to configure your printer): https://jaysuk.github.io/LPCConfigurator/Start. After disabling the display, it just started working. Web UI works and printer seems stable. I tried printing benchy, but the quality was awful due to the print cooling fan not working properly, but a easier stackable box print turned out nicely.

Needed to do M303 heater tuning for bed and nozzle, bed heating was giving me errors about the temp not rising fast enough. After the tuning heating seems to work fine.

So far looking promising although took a bit more tinkering to get at this point. The print quality seems at least comparable to Marlin, but need to do proper print comparison. Luckily swapping between Marlin and RRF is easy, just replace firmware.bin on sdcard and off you go. Actually with Duet web UI working when RRF is flashed I can upload the Marlin fw through it if I don't want remove the sdcard from the printer. Getting back to RRF requires removal of course as the DWC isn supported by Marlin.

Things to address:
- print cooling fan. By default RRF sets the PWM to 500hz and apparently that's not a good frequency for at least this particular fan, so that needs to be tuned. The fan works @100% but with lower speeds (75%) it's stopped
- Pressure Advance (RRF's version of Linear Advance) tuning, currently using 0.28 as with Marlin but I suspect those values aren't 100% interchangeable. But at least it seems to be close enough for now
- check how the display should work. Not a big loss if I can get it working, with DWC I can use phone or tablet to control the printer.
- see how manual mesh bed leveling is done with RRF. With Marlin it's easy when you have a display, hoping that with RRF the web UI provides help with that. Otherwise it's going to be tedious feeding the gcode commands in console.

----------


## AutoWiz

That is incredible. I never would have made it that far. But now i might try it. You are awesome, man. I let myself get discouraged by failures and so I never got a raspberry pi connected to any of my printers with octoprint up and running. And i spent $150 on S3D a year or more back now and never got it to work. I have only used repetier host with slic3r and then prusa slicer since it came out because i understood it to be the continuation of slic3r. Since early 2016. I need to spend more time in the areas i am weak. So last night i got my very first print out of S3D. on my geetech i3 printer and just a benchy. But i got the damn slicer to work. Finally. So now i am going to get more used to using S3D. And i have a pi zero, a pi 3, and a pi 4. I will take another stab at getting octopi up and going. I am lost at what gcode commands are needed to get the mmu2s to load its initial filament. or to change filaments? I like using as little start gcode as possible. I think my start Gcode for my Geeetech i3 with the TMC2209 drivers and the SKR 1.4 turbo and the proximity switch for Z is just 2 lines. G28 and something else. I dont want all these prime lines and a purge tower. I just want to make it so the nozzle goes off the bed and purges what it needs to get to the next filament and get back to printing. This would be easier for me if i had experience with an MMU2S in its correct environment, i guess.

----------


## spegelius

I work in IT (software development/DevOps) so I spend quite a lot of time with problems somewhat similar to these issues so my problem resolving abilities (and tolerance of stuff shitting itself) is quite high at this point  :Smile: . But yeah, there are moments now and then when something just doesn't work and it does get discouraging at some point.

I have S3D, but don use it much nowadays. My main slicer is KISSlicer, but occasionally I use PrusaSlicer, mostly for prints that I know KISS has problems with. Also supports are better on PrusaSlicer and of course S3D's custom supports is the best solution. Although I've gotten into habit of modeling my own supports when needed and also generally modeling in a way that the need for supports is minimal. I've also tried soluble supports with one multi-material machine and it does work quite nicely in general.
For multi-material printing I use all those slicers. To add the tool change gcode, I wrote a post-processing tool to add the extra commands around the tool change commands because at the time when I got into multi-material printing, none of the slicers supported a single-nozzle/multi-extruder setups. The post-processing tool supports PrusaSlicer, S3D, KISSlicer and Cura at the moment. There's also MMU2S support in it, although I haven't tested it myself, the profile is from a user. The tool: https://github.com/spegelius/filaswitch

About MMU2S: I assume that to change filament, all you need is to issue the tool command: T0, T1 etc.? I sliced a multi-color print on PrusaSlicer for MMU2S a while ago just to see how the gcode looks and I didn't see any extra commands so I'm assuming that the Marlin handles the MMU2S-stuff when it sees a tool change command. But as I haven't actually seen or used a MMU2S-unit this is just speculation. That's how I would do it anyways... Getting bit impatient waiting for my unit to arrive, luckily there are other stuff like this to keep me occupied  :Smile: 
Edit: tool change command won't move the nozzle to purge bucket/purge tower, that usually comes from slicer. Although maybe there's support for that in Marlin? In RRF that could be done with a macro that is executed with tool change command, but RRF doesn't support MMU2S AFAIK.

RRF progress: I tested the fan frequency and with 500Hz, only 100% speed spins properly. After testing few frequencies, it seems that below 50Hz is good, so settled for 25Hz. With that the fans starts to spin at 45%, although it really doesn't move any air at that point. BTW, I did all that on my phone using the web UI to edit config files, control the fan etc. Can't get that with Marlin, even though through Octoprint quite a lot is possible.
 I printed a benchy, but it seems I need to get a better part cooling fan and shroud because there were obvious issues with cooling. I'll probably redesign something to better work with the Volcano. Still the print finished and apart from cooling and stringing issues it looks fine.
I calibrated Pressure advance and compared to Marlin Linear advance there values aren't comparable. The PLA I used isn't the same as when I calibrated Marlin, but the difference is quite big. With Marlin, the LA value was 0.28 and with RRF a comparable value is around 0.7. I also calibrated retractions so I'll print another benchy to see if the stringing is better. Also maybe try another filament, current one is cheap PLA from Poland.
RRF in general: the limitation of LPC1768 based boards is that it has less memory than Duet boards which means there can be only only HTTP session at a time. So connecting with my phone to DWC while I was also connected to it on my PC resulted in connection errors and the board even did a reset few times. The connection limit can be probably worked around by setting up a HTTP reverse proxy on some PC/raspi so only thing directly connected to the DWC is the proxy -> only one session. The random board resets just show that the FW is still experimental, as it says on the github page.

----------


## AutoWiz

There are better chips now for the same or comparable money. BigTreeTech has the SKR PRO and the BTT002 mainboards that use a STM32F407 chip. It is cortex-M4 cpu @ 168mhz over the 100mhz of the lpc1768 or the 120mhz of the lpc1769. And both of those are only cortex-M3 anyways. I have one of each of those mainboards on the way. I already have one SKR pro and that is what is going to drive the Diamond Hotend 3 into 1 mixing printer. They just released a new revision of it. The 1.2. I do not know what the difference is. they look the same but mine says 1.1. Either way it is under $50 for 168mhz cortex-M4 cpu: https://www.biqu.equipment/products/...cf1aa7f4&_ss=r . The BTT002 mainboard is designed to be a direct replacement for the Prusa MK3S and brags on supporting multifarious screens and all sorts of other junk and i thought with that i might be able to have both the MMU2S and a touchscreen at the same time. It is here: https://www.biqu.equipment/products/...dcb79d56&_ss=r

----------


## AutoWiz

If you wanted to do something really crazy, BTT has this awesome looking board with an expansion board that holds a total of 11 stepper drivers. This is also driven with the 168mhz cortex-M4 cpu. But i am telling you this could drive 3 Chameleons feeding into a Diamond Hotend. I am just saying 11 or 12 color mixing if we can find a few pins to dedicate to one more stepper driver. I would and very well might take on such a project after i understand how to use the MMU2S and the diamond hotend seperately. Here is that 11 axis board: https://www.biqu.equipment/collectio...31261892280418 . These are great and wild days for tech and we are only limited by our imagination and skills.

----------


## AutoWiz

Hey buddy when you do get your MMU2S, this video is a good walkthru of the important adjustments to check to get things up and running smoothly. software aside of course. https://www.youtube.com/watch?v=XH-F8h7Y1tM&t=

----------


## spegelius

Thanks, those tips should come in handly. The MMU2S seems quite technical with custom controller and all. Not necessarily a bad thing, it'll just take some time to get used to it. My current multicolor machines are lot simpler, more in line with the first MMU. I'll do a forum post about them and the MMU2 journey later. BTW, it seems the MMU2S is again out of stock in Prusa shop, seems there's shortage of parts again. Hoping my kit shipping isn't affected too much.

I ordered SKR Pro and TMC2209 drivers, figured it's time to upgrade. Maybe I'll swap it on the custom Prusa machine. Not sure I'll ever need 11 stepper drivers, but who knows where this multi-material thing is going  :Smile: . I have a cyclops-clone from a X5S-2E machine, it's not very good but does color mixing so MMU2S + cyclops would be interesting. Just thinking about the amount SW tuning is needed...  :EEK!: . I do have 6-color machine with 6 extruders, but I'm only using one stepper driver to control them all. I use a custom relay setup to switch the active extruder when switching filaments.

RRF woes: setting the fan speeds lower than 500Hz has an interesting side-effect: setting fan speed to 100% doesn't work if it hasn't been set to something else before. I.e. right after starting the printer, issuing M106 S255 does nothing. But if the frequency is set to 500Hz, it starts to spin as its supposed.
On reprap forums one of the dev thinks there's a bug in the FW and hopefully there's a fix coming. Not a big problem because I need to swap the fan in any case as its axial and not powerfull enough.

Also having some quality issues with low layer heights (0.15). I use adaptive layer heights in KISS and that seems to cause inconsistent quality with RRF. It might be due to Pressure Advance, but haven't had time to test it properly. Also might be due to bad cooling so better fan duct is in order pronto. Might switch back to Marlin to get a reference Benchy done, luckily switchin back and forth is quite simple.

----------


## spegelius

So there was a new version of the RRF firmware (3.1.1-14) and that seems to fix the issue with the fan not starting properly. I also went back to Marlin for a while to get a comparinso benchy done:
IMG_20200719_141234.jpgIMG_20200719_141305.jpg

Quite ugly, not sure what's going on. Obviously cooling is an issue, but not sure if that causes the layer artifacts. Need to investigate more, but the main thing is that it happens on both Marlin and RRF so I can continue using RRF.
Easier prints that don't have layer problems:
IMG_20200719_141151.jpg
I'll continue debugging the quality issues in Dollo3D thread.

I tried the mesh bed leveling in RRF and it works quite well. I don't have a probe so the process is manual; you start the leveling process by issuing G29 after homing all axes. The web UI then shows a dialog where you can manually jog the Z height in 0.05mm incerements until it's good. After going through all the measurement points the results are saved to /sys/heightmap.csv. To use the saved file, issue G29 S1 in start gcode or before starting a print.
Compared to Marlin the process is quite similar, on Marlin I used the 12864 display and leveling menu to do it. Maybe bit more faster way, but usually there's no need to do the leveling process very often so not a big deal.
The nice thing about RRF is that the result file is a basic csv file on the sdcard which you can edit directly in the web UI or on your PC. On Marlin, you need to use gcode console to do the editing and the data is stored in EEPROM and can't be restored if you need to reset the EEPROM.

So far it seems that I'll be continuing to use RRF, since it seems to work quite well. Stability hasn't been an issue in use as long as I don't try to connect to web UI from multiple browers.
Pros:
- configuration stored in files on sdcard, easy to modify, easy to backup, easy to restore
- no need to compile FW
- general flexibility of the FW, about everything can be configured with the gcode
- web UI built in, no need for Octoprint
- ethernet/wifi support
- better driver timings it seems, printed movements seem 'cleaner', no resonating that happens on Marlin.

Cons:
- no backlash compensation support. Nice to have, especially with Dollo printer
- apparently no support for display on Sbase due to low memory. Not a big problem, web UI through phone/tablet works fine and does more
- experimental status of the FW. Seems stable but still

----------


## AutoWiz

How old is the filament you are using? Maybe it is just bad or old filament? Maybe try printing it with the nozzle 5c cooler? Either way it is very encouraging you saying there is a newer version released. Nothing better than FW that gets updated. Can you elaborate on 'backlash compensation"? I don't know what that is. And I have to watch some Youtube videos today on RRF's web UI and also KISS slicer.

----------


## AutoWiz

> McAfee rich features include protection against ransomware, safe file shredder, firewall, DNS protection, password manager, system optimization, phishing protection, antispam, browser protection, etc. Here, *mcafee 2016 antivirus plus unlimited devices**,* contains all these features and provides very effective security against the new threats.


We'll let you know when an instance of marlin or RRF gets corrupted by malware, buddy. and thank you for your meaningful input.

----------


## spegelius

Uhh, the idea of installing a crappy antivirus software to a 3D printer... nope.

Yeah nice to see that the development is going on and the devs are listening to bug reports.

The filament should be fine, it's not that old and prints fine on my other printers. I modified the fan shroud a bit, but no with much success, I'll post more details on the Dollo thread.

----------


## spegelius

As I was tearing my MKS Sbase installation down, I thought that maybe I'll test the SBC mode while I'm at it. This means adding a raspberry pi to the setup with a custom SPI cable. And after some fiddling the setup seems to work. The biggest improvement is the networking; when using the Sbase's ethernet, it's slow (upload about 70kb/s) and it allows only one connection at a time. That's because of limits of the CPU on the board. So in SBC mode I get:
- Wifi
- multiple connections
- speed (5.5Mb/s)
Now I'll just have to make an enclosure for the raspi, currently just hanging by the wires...  :EEK!: .
Btw I'm powering the raspi from 12V, using a small DC-DC step-down converter fixed to output 5V. So no need to use a usb charger
IMG_20200831_195242.jpg

----------


## AutoWiz

> Good day. Quite interesting thread, I found many useful info here. By the way I also want to ask, do you use some additional antivirus software for your PC? What operating system do you have? I read Webroot antivirus rating from https://antivirus-review.com/webroot-review and I think I should install this app. What can you say?


Well I can say that if you read any of this thread except the very first post on just this page you might have understood that we were picking on a spammer for injecting some severely off topic stuff into this thread. But now you have become that spammer. Well didn't you at least read the title of the thread? How about commenting on that? You know the title of the thread, or just flip back to page 1 and 2 and read what we are actually discussing and join the conversation with some helpful or at least on topic dialogue.

----------


## AutoWiz

Spegelius where are you?! I found some new hardware on this topic and needed your input before taking the plunge on my coreXY build. This part looks like it is just the BTT wifi module but it connects to the exp1 & exp2 connectors: BIGTREETECH BTT RRF Wifi V1.0 Module Expansion board 3D Printer Parts – Biqu Equipment . I really want to know how this would differ from just using the wifi module connected directly to the board. This one: ESP-01S WIFI Module ESP8266 For SKR PRO TFT35 – Biqu Equipment . 
And so I am wondering and was hoping we could have a small discussion on whether this component might solve any of the problems that existed from running reprap firmware on the skr boards. I want to connect cameras n stuff and I am either gonna try this or finally figure out octoprint and cura.

----------


## curious aardvark

assuming no wifi - how do you change the config files with reprap ?

there are a few settings I have yet to work out how to change with a g-code insert into my startup gcode, that would be useful. 

And as it's so easy to change on the sapphire pro and robin nano board - I might have a go at trying something different.

----------


## spegelius

> Spegelius where are you?! I found some new hardware on this topic and needed your input before taking the plunge on my coreXY build. This part looks like it is just the BTT wifi module but it connects to the exp1 & exp2 connectors: BIGTREETECH BTT RRF Wifi V1.0 Module Expansion board 3D Printer Parts – Biqu Equipment . I really want to know how this would differ from just using the wifi module connected directly to the board. This one: ESP-01S WIFI Module ESP8266 For SKR PRO TFT35 – Biqu Equipment . 
> And so I am wondering and was hoping we could have a small discussion on whether this component might solve any of the problems that existed from running reprap firmware on the skr boards. I want to connect cameras n stuff and I am either gonna try this or finally figure out octoprint and cura.


Hmm I think the latter of those two modules won't work with RRF. I have that ESP8266 TFT35 module (or similar) and the RRF port developer said it won't work with RRF. The Wifi BTT 1.0 Expansion board seems to be the correct one.
For cameras you'll need to go with Octoprint (or something else that provides a web stream of the camera) because RRF AFAIK doesn't support cameras. DWC allows you to set a webcam url so you can at least have the camera image shown on the web UI, but that's about it. For other hardware, this page should help: https://duet3d.dozuki.com/

@curious aardvark: the SD card is removable and it's basic FAT formatted disk so just pop it in a PC and edit away. Also I think plugging the board to PC with USB cable probably mounts the SD card also.

----------


## AutoWiz

TY buddy. I want to go after a camera. And so I guess then I will chase down the octoprint. I really like the octolapse videos and would love to be able to make one. You ever setup octoprint on any of your machines?

----------


## spegelius

I have 4 printers runnning with Octoprint, I haven't used SD pcards for printing in ages. 2 of the printers have Rpi camera modules so I can monitor prints remotely. I haven't tried Octolapse, but I think it should be quite straightforward to use.

----------

