Cannot compile Marlin firmware

The Arduino Mega 2560 in my ROBO 3DR1 Plus 3D printer has failed. I purchased a new board and tried to upload the Marlin Firmware for the printer. I am not able to complete the compile and upload due to errors. I have not altered the original code so I do not know what is wrong. I am absolutely NOT a programmer, so the error does not tell me anything useful. Thank you for any assistance that can be provided. Bob

The error is as follows:

Arduino: 1.8.19 (Mac OS X), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/SdBaseFile.cpp:24:0:
SdBaseFile.h:38:8: error: using typedef-name 'fpos_t' after 'struct'
struct fpos_t {
^~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/Marlin.h:10:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/SdBaseFile.cpp:21:
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/include/stdio.h:950:33: note: 'fpos_t' has a previous declaration here
extension typedef long long fpos_t;
^~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/SdFile.h:27:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/SdFile.cpp:23:
SdBaseFile.h:38:8: error: using typedef-name 'fpos_t' after 'struct'
struct fpos_t {
^~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/Marlin.h:10:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/SdFile.cpp:20:
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/include/stdio.h:950:33: note: 'fpos_t' has a previous declaration here
extension typedef long long fpos_t;
^~~~~~
/Users/BobD/Desktop/ROBO3DR1PLUSV2/SdBaseFile.cpp: In member function 'void SdBaseFile::getpos(fpos_t*)':
SdBaseFile.cpp:298:8: error: request for member 'position' in '* pos', which is of non-class type 'fpos_t {aka long long int}'
pos->position = curPosition_;
^~~~~~~~
SdBaseFile.cpp:299:8: error: request for member 'cluster' in '* pos', which is of non-class type 'fpos_t {aka long long int}'
pos->cluster = curCluster_;
^~~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/SdFile.h:27:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/cardreader.h:8,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/cardreader.cpp:2:
SdBaseFile.h:38:8: error: using typedef-name 'fpos_t' after 'struct'
struct fpos_t {
^~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/Marlin.h:10:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/cardreader.cpp:1:
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/include/stdio.h:950:33: note: 'fpos_t' has a previous declaration here
extension typedef long long fpos_t;
^~~~~~
/Users/BobD/Desktop/ROBO3DR1PLUSV2/SdBaseFile.cpp: In member function 'void SdBaseFile::setpos(fpos_t*)':
SdBaseFile.cpp:1496:23: error: request for member 'position' in '* pos', which is of non-class type 'fpos_t {aka long long int}'
curPosition_ = pos->position;
^~~~~~~~
SdBaseFile.cpp:1497:22: error: request for member 'cluster' in '* pos', which is of non-class type 'fpos_t {aka long long int}'
curCluster_ = pos->cluster;
^~~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/SdFile.h:27:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/cardreader.h:8,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/Marlin_main.cpp:44:
SdBaseFile.h:38:8: error: using typedef-name 'fpos_t' after 'struct'
struct fpos_t {
^~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/Marlin.h:10:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/Marlin_main.cpp:30:
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/include/stdio.h:950:33: note: 'fpos_t' has a previous declaration here
extension typedef long long fpos_t;
^~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/SdFile.h:27:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/cardreader.h:8,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/stepper.cpp:30:
SdBaseFile.h:38:8: error: using typedef-name 'fpos_t' after 'struct'
struct fpos_t {
^~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/Marlin.h:10:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/stepper.cpp:24:
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/include/stdio.h:950:33: note: 'fpos_t' has a previous declaration here
extension typedef long long fpos_t;
^~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/SdFile.h:27:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/cardreader.h:8,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/ultralcd.cpp:6:
SdBaseFile.h:38:8: error: using typedef-name 'fpos_t' after 'struct'
struct fpos_t {
^~~~~~
In file included from /Users/BobD/Desktop/ROBO3DR1PLUSV2/Marlin.h:10:0,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/temperature.h:24,
from /Users/BobD/Desktop/ROBO3DR1PLUSV2/ultralcd.cpp:1:
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/include/stdio.h:950:33: note: 'fpos_t' has a previous declaration here
extension typedef long long fpos_t;
^~~~~~
exit status 1
using typedef-name 'fpos_t' after 'struct'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Hi @worrad. It looks like this is a bug in the Marlin firmware which was fixed over 5 years ago:

You must be using an extremely outdated version of Marlin.

It looks like you maybe are using a version of Marlin provided by the manufacturer of your 3D printer? If so, check to see whether a new version is available on their website.

If none is available, you can try using the up to date mainline Marlin. You will need to configure it for your specfic 3D printer model. You should find plenty of information about that here:

Otherwise, you could try applying the fix shown here to your obsolete Marlin version:

https://github.com/MarlinFirmware/Marlin/pull/5114/files

It looks like the latest firmware for that printer is six years old:

Thank you for your prompt response. Yes, when the ROBO's mega seemed to die, I bought a new Mega 2560 and tried to upload the firmware provided by ROBO 3D. It has never been updated over the 5 years I have owned it. I was unaware of any bugs as it always worked. In fact I built a half cubic meter 3D printer and used the firmware from the Robo to run it. I had to change the bed dimensions and a few other things, but I think that was done to the ROM(?) So I was caught off guard when the old firmware failed to compile. I am now trying to go through the old firmware and put all the ROBO specific parameters in to Marlin 2. It is a very slow process. I might get to work in a few days, fingers crossed. I did not understand how to "Fix" the old firmware as you suggested. Not a real programmer. I will post again IF I get this to work. Bob

You are correct, they updated the firmware once, and the file I have was the last and latest. I am now trying to transfer the required parameters from the old firmware to Marlin 2.xx. Tedious line by line manual comparison and hopefully putting in and taking out all the right stuff. Marlin has changed so much I am not sure what to take out and what to leave in and still have the printer operate. I doubt there is a Marlin 2 configuration already out there for my old ROBO #D R1 Plus printer. Bob

UPDATE: I found a "Configuration.h" file for the Robo 3D R1 + and pasted it into the tab labeled Configuration.h. I thought this might have better success than trying to "guess" what I needed to change seeing that a lot of what used to be in the original firmware is no even in the new Marlin 2.0. So throwing caution to the wind, I tried to compile the firmware using the verify button. This was the result, it seemed to compile until the very end where the following errors were posted:
(the error said that it would have more info if I enabled verbose mode, enabled it and re-ran verify)

Arduino: 1.8.19 (Mac OS X), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

/Users/BobD/Desktop/Arduino.app/Contents/Java/arduino-builder -dump-prefs -logger=machine -hardware /Users/BobD/Desktop/Arduino.app/Contents/Java/hardware -hardware /Users/BobD/Library/Arduino15/packages -tools /Users/BobD/Desktop/Arduino.app/Contents/Java/tools-builder -tools /Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/BobD/Library/Arduino15/packages -built-in-libraries /Users/BobD/Desktop/Arduino.app/Contents/Java/libraries -libraries /Users/BobD/Documents/Arduino/libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=1A86_7523 -ide-version=10819 -build-path /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995 -warnings=none -build-cache /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_cache_867608 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.avr-gcc.path=/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -verbose /Users/BobD/Desktop/Marlin-2.0.x/ROBO_RPD_EXP_011222/ROBO_RPD_EXP_011222.ino
/Users/BobD/Desktop/Arduino.app/Contents/Java/arduino-builder -compile -logger=machine -hardware /Users/BobD/Desktop/Arduino.app/Contents/Java/hardware -hardware /Users/BobD/Library/Arduino15/packages -tools /Users/BobD/Desktop/Arduino.app/Contents/Java/tools-builder -tools /Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/BobD/Library/Arduino15/packages -built-in-libraries /Users/BobD/Desktop/Arduino.app/Contents/Java/libraries -libraries /Users/BobD/Documents/Arduino/libraries -fqbn=arduino:avr:mega:cpu=atmega2560 -vid-pid=1A86_7523 -ide-version=10819 -build-path /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995 -warnings=none -build-cache /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_cache_867608 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.avr-gcc.path=/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avrdude.path=/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/tools/avr -verbose /Users/BobD/Desktop/Marlin-2.0.x/ROBO_RPD_EXP_011222/ROBO_RPD_EXP_011222.ino
Using board 'mega' from platform in folder: /Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr
Using core 'arduino' from platform in folder: /Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr
Detecting libraries used...
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -I/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino -I/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/variants/mega /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995/sketch/ROBO_RPD_EXP_011222.ino.cpp -o /dev/null
Generating function prototypes...
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -I/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino -I/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/variants/mega /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995/sketch/ROBO_RPD_EXP_011222.ino.cpp -o /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995/preproc/ctags_target_for_gcc_minus_e.cpp
/Users/BobD/Desktop/Arduino.app/Contents/Java/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch...
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -I/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino -I/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/variants/mega /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995/sketch/ROBO_RPD_EXP_011222.ino.cpp -o /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995/sketch/ROBO_RPD_EXP_011222.ino.cpp.o
Compiling libraries...
Compiling core...
Using precompiled core: /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_cache_867608/core/core_arduino_avr_mega_cpu_atmega2560_ecb37515200c33fd6a565b8a68b0d634.a
Linking everything together...
/Users/BobD/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-gcc -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega2560 -o /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995/ROBO_RPD_EXP_011222.ino.elf /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995/sketch/ROBO_RPD_EXP_011222.ino.cpp.o /var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995/../arduino_cache_867608/core/core_arduino_avr_mega_cpu_atmega2560_ecb37515200c33fd6a565b8a68b0d634.a -L/var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T/arduino_build_625995 -lm
/var/folders/_t/rgz4k22d41l0h41xbmw8ksb40000gp/T//cct1wBWH.ltrans0.ltrans.o: In function main': /Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/main.cpp:43: undefined reference to setup'
/Users/BobD/Desktop/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/main.cpp:46: undefined reference to `loop'
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino Mega or Mega 2560.

Rather than translating the config from six years ago to what Marlin 2.0 needs, I would just use the example config they supply for your printer:

I think the name collision that caused the error was introduced by an update to the toolchain that occurred after that time. You probably could work around it by installing an old version of the "Arduino AVR Boards" platform. The versions in the Arduino IDE Boards Manager (Tools > Board > Boards Manager) do go back quite a ways. Before that, they were distributed with the Arduino IDE, meaning the easiest way to install it would be installing the associated old version of the Arduino IDE.

I think that is the right approach. At the very least, it provides you with a starting point. Perhaps you will still like to fine tune the configuration according to your own needs and preferences, but probably the changes needed on top of the standard configuration for your machine will not be extensive.

The new version of Marlin has an improved structure. They have placed all the lower level code under the src subfolder of the Marlin sketch, so that only the files of interest to the average user will be exposed in the Arduino IDE (Marlin, Configuration.h, Configuration_adv.h).

The missing function definitions mentioned in the error message are in the files under src. This makes me suspect that the entire src subfolder is missing.

This could happen in one of two ways:

You never downloaded the full Marlin sketch.

Sometimes people just grab the few obvious files from GitHub without realizing there are hundreds more.

If you downloaded Marlin from the "Download" page of the website, then you got the whole thing:

A bug in the Arduino IDE caused the loss of the src subfolder

Unfortunately, the classic Arduino IDE has a bug where "Save as..." only saves the files in the root of the sketch folder to the new sketch location. So the new sketch is missing this src subfolder.

You might have chosen to do a "Save as..." after making your customizations to Marlin, rather than saving in place over the stock download.

You can check for this problem by selecting Sketch > Show Sketch Folder from the Arduino IDE menus. This will open the sketch folder in your file browser. You should see a structure like this:

Marlin
|-- Configuration.h
|-- Configuration_adv.h
|-- Makefile
|-- Marlin.ino
|-- Version.h
|-- lib
|   `-- readme.txt
`-- src
    |-- HAL
    |-- MarlinCore.cpp
    |-- MarlinCore.h
    |-- core
    |-- feature
    |-- gcode
    |-- inc
    |-- lcd
    |-- libs
    |-- module
    |-- pins
    `-- sd

If the src subfolder is missing, just copy it over from the original download of Marlin to your sketch.

After that, try compiling Marlin again. These error messages should now be gone.

I did download the marlin 2.0 from the source that you posted. You were correct in the assumption that I used the "save as" menu to save the the configuration
I had created for the ROBO. It seemed to be a wise decision at the time so that I could keep the unaltered Marlin 2.0 intact if needed to attempt another version. I looked in the folders where the "save as" files were stored and again you were correct. There was no src folder in them. The only folder of that name was contained in the Marlin 2.0 folder. BUG I GUESS!! So today I began by opening the Marlin 2.0 ino, and then deleting all in the configuration.h tab. I then pasted the preconfigured configuration.h for the ROBO3D R1 + I down loaded from github. I figured I had nothing to lose at this point so I clicked Verify. It took a lot longer than I would have expected, but it did compile with no errors. So I then plugged in the Mega and uploaded the firmware. That also completed with no errors. All that is left is to install the new mega in the printer and see if it works. I know there will be lots of "tweaking" to get the printer back to where it was, but at least if the board and firmware are viable, my printer will be operational again.

I am truly grateful for your help. I have been trying to learn to program the Arduino, with very limited success. I am an old dog (74) trying to learn a new trick. I have another project on a Teensy 3.0/Arduino that I have been working on for over three years, but I just cannot get the code to do what is required. It may be not possible, but I am apparently too ignorant to give up, so I keep trying new things. Thank you for all of your time and brain-work. I am off to the shop to see if the new Mega will restore the printer. Bob

Thanks, your are correct, I did not know there was a configuration already done. I found it yesterday. It turned out that the compiling errors came from the fact that I used a "save as" command to save the firmware with a name that was appropriate for my printer. Apparently a bug in the Arduino IDE does not copy over or create or whatever a folder called "src". When I looked in the folders saved by the "save as" with the new name there was no "src" folder in any of them. Only the Marlin 2.0 had one. So I opened the Marlin 2.0 and replaced the code in the configuration.h tab with the Robo configuration code and "saved" it. It then verified with no errors, as did the upload to the new Mega. I seem to be back in business. All this info came from "in0", it was certainly not me that figured it out. Thank you for your help, Bob

Yes, I would have done the same. It is a very annoying bug. Fortunately, it has been fixed in the version of the Arduino IDE that is currently under development so at least there will be a future time when people don't suffer from it.

Yeah, for reference of interested readers, I'll share the formal bug report:

Marlin is a huge and complex program so it definitely takes longer than the average Arduino sketch. It is really cool that Arduino was used for the creation of such an amazing and impactful thing.

Yay! Even though it was kind of a pain, I think the ability to work with the Marlin code and update the firmware will be a very valuable skill for any 3D printer user.

You are welcome. I'm glad if I was able to be of assistance.

Haha, keep at it!

A little feedback: I tried the new Marlin 2.0, along with the configuration for the ROBO3DR1 Plus that I found on GITHUB. It did compile as I had told you and it uploaded to the mega. I then installed the Mega and tried the printer. Well the Z was upside down, and it of course would not home. When I tried the G29 GCode, the software claimed that the G29 was unknown. G29 was supposed to probe the print bed 9 times in 9 different places for bed leveling.

I then went back to the computer and tried to figure out what was wrong. Onr thing was the limit switch was reversed, so changing the false to a true fixed that. But still no bed leveling. I know that I could probably only do bed leveling once every so often because it is a flat glass pyrex plate, but it does not add much time to the print process so I just let it do it. I could not find anywhere in the code that mentioned my type of bed leveling. The ROBO drives down until the nozzle touches the bed and then drives until the one of the Z limit switches is made. None of the options for bed leveling seemed to match this operation.

SO..... I tried the other method the you suggested, which was to fix the problem with the old firmware. Wow, that was interesting. I at first could not figure out what the code was supposed to do. So I just copied it and chucked it in the tab for the SDFAT. This was wrong. Eventually I noticed that there was one command highlighted in red, and one in green, and then figured that the - and + were not part of the code. What it really meant was to delete the red code and enter the green code. DUH!!!

So the next trick was to find the code in the multitude of tabs. I finally figured out how to get to the tabs as they run off the screen, and you would need a 6 foot screen to see them all. After a few blunders entering the Green lines the code compiled with no errors. I uploaded the old repaired code and the printer came to life looking like it always did. I then tested it with a full build plate of STL files. It finished all as it should.

Before all this the old Mega seemed to go out for a nice lunch with enough wine to pass out, and leave the hot nozzle stuck in whatever it had printed so far. Matter Control was unaware anything was wrong and jammed G-Code in to the USB cable.

My conclusion was that the configuration file that is posted on GITHUB for the ROBO3DR1Plus has never been actually loaded into a Mega and actually ran, because as it is it is not even a complete beginning. I think it should at least allow the ROBO to print and then allow the user to tweak it until it prints the best as it can. If I ever can figure out the Marlin 2.0 and the config file, where it will run the ROBO, I will attempt to upload it somewhere in GITHUB. Unless I am the only one still using a 6 year old 3D printer, I am sure someone else is going to run into this problem with replacing the Mega and trying to load the firmware.

Yes I know, I wrote a small novel, sorry. It is the old retired engineer in me that makes me be verbose and explain everything in mind numbing detail. (So says my wife) I do have firmware that works, so if there is a place to put it where someone could make use of it, I will send a copy. Bob

Great work on figuring out how to apply that patch! This is known as a "diff". It is pretty confusing, but actually a super valuable tool for software development. Because it has a standardized machine readable format, it is even possible to automatically apply a patch. However, that is more trouble than it is worth to set up only for small patch like this.

This is one of the reasons for the new structure of the Marlin code, where only the few files most users need are exposed in the Arduino IDE.

I think this sort of situation of many tabs is also handled better in the version of the Arduino IDE currently under development.

Yay! I'm glad to hear this.

That would be great. The great thing about this sort of open source software project is that all of us have the opportunity to improve it. With hundreds of contributors, even small improvements can add up to something wonderful. Even though I have never used a 3D printer, or even seen one IRL for that matter, I was fortunate enough to have the opportunity to make some trivial contributions to the Marlin project and it was a good feeling.

No worries. I don't think you will find many of the "TL;DR LOL" crowd on this forum. I have the same tendency to verbosity to the point where my colleagues have nicknamed me "-v".

Thanks! I would suggest just going ahead and put it in a .zip file and attaching it to this forum thread. I believe the forum will allow you to do that (it is more restrictive of new users but you have already moved up to the next "trust level").

If I am doing this correctly, there should be a ZIP file of the ROBO3DR1+ firmware included. I added some notes to the first tab about the repair etc. Also a short note in the configuration.h tab. If the Zip does not appear, let me know and I will try it again. Bob
REPAIRED ROBO SW 011522.zip (258.9 KB)

1 Like