EEPROM data size error for 418D firmware on dual end stop kit

Tried to flash the newest Allted/Marlin firmware for my MPCNC after setting up the dual end stops and I’ve repeatedly gotten “EEPROM data size error”. I tried M502, 500 as suggested in the GitHub issues page for Marlin: https://github.com/MarlinFirmware/Marlin/issues/11699

If I configure OctoPrint to ignore the error, everything seems to work fine. However, I’ve downgraded to the previous firmware (412D) which has no errors.

I also tried reinstalling the newest firmware but the issue persists.

Changing monitoring state from “Offline” to “Detecting serial port” Serial port list: [’/dev/ttyACM0’] Connecting to: /dev/ttyACM0 Changing monitoring state from “Detecting serial port” to “Opening serial port” Connected to: Serial<id=0xffff804a92d0, open=True>(port=’/dev/ttyACM0’, baudrate=250000, bytesize=8, parity=‘N’, stopbits=1, timeout=10.0, xonxoff=False, rtscts=False, dsrdtr=False), starting monitor Changing monitoring state from “Opening serial port” to “Connecting” Send: N0 M110 N0125 Send: N0 M110 N0125 Recv: start Send: N0 M110 N0125 Recv: echo:Marlin 418D bugfix-2.0.x Recv: Recv: echo: Last Updated: 2020-01-22 | Author: (V1 Engineering, Ryan, 418D) Recv: echo:Compiled: Feb 18 2020 Recv: echo: Free Memory: 3395 PlannerBufferBytes: 1488 Recv: echo:SD card ok Recv: Error:EEPROM datasize error. Recv: echo:Index: 623 Size: 619 Recv: echo:Hardcoded Default Settings Loaded Recv: Error:EEPROM datasize error. Recv: echo:Index: 623 Size: 619 Recv: echo:Hardcoded Default Settings Loaded Recv: echo:SD card ok Recv: Error:EEPROM datasize error. Recv: echo:Index: 623 Size: 619 Recv: echo:Hardcoded Default Settings Loaded Recv: Error:EEPROM datasize error. Recv: echo:Index: 623 Size: 619 Recv: echo:Hardcoded Default Settings Loaded Recv: ok Changing monitoring state from “Connecting” to “Operational” Send: N0 M110 N0125 Recv: echo:Unknown command: “” Recv: ok Send: N1 M115*39 Recv: FIRMWARE_NAME:Marlin 418D bugfix-2.0.x (GitHub) SOURCE_CODE_URL:https://github.com/MarlinFirmware/Marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:V1 CNC EXTRUDER_COUNT:0 UUID:cede2a2f-41a2-4748-9b12-c55c62f367ff Recv: Cap:SERIAL_XON_XOFF:0 Recv: Cap:BINARY_FILE_TRANSFER:0 Recv: Cap:EEPROM:1 Recv: Cap:VOLUMETRIC:0 Recv: Cap:AUTOREPORT_TEMP:0 Recv: Cap:PROGRESS:0 Recv: Cap:PRINT_JOB:1 Recv: Cap:AUTOLEVEL:0 Recv: Cap:Z_PROBE:0 Recv: Cap:LEVELING_DATA:0 Recv: Cap:BUILD_PERCENT:0 Recv: Cap:SOFTWARE_POWER:0 Recv: Cap:TOGGLE_LIGHTS:0 Recv: Cap:CASE_LIGHT_BRIGHTNESS:0 Recv: Cap:EMERGENCY_PARSER:0 Recv: Cap:PROMPT_SUPPORT:0 Recv: Cap:AUTOREPORT_SD_STATUS:0 Recv: Cap:THERMAL_PROTECTION:1 Recv: Cap:MOTION_MODES:1 Recv: Cap:CHAMBER_TEMPERATURE:0 Recv: ok

I had a bugfix for something related: https://github.com/MarlinFirmware/Marlin/pull/16464/commits/f2b54c10e35d05b82008e729700944e7c7b29921

But looking at Allted/Marlin it appears the change is not in there: https://github.com/Allted/Marlin/blob/dcc929e42f6270a34c9a62bbaa8cfa6d0cbef77f/Marlin/src/module/configuration_store.cpp#L2010-L2020

In the history it looks like this is in there but maybe mangled since then. The maintainers don’t ever use EXTRUDERS == 0 so it’s easy to get broken. I’ll take a look and see if I can pin it down specifically.

2 Likes

Okay it looks like this got fumbled during the merge. I’m a little surprised it hasn’t been seen sooner.

According to this PR there was a subsequent commit f2b54c1 (not the first commit) that added the #IF EXTRUDERS stuff, but when it got merged, it got pulled back out (probably from a stale file diff or something).

Again I’m puzzled why this wouldn’t have been seen before. You can try manually patch the code using the differences shown here: f2b54c1. But I can’t be sure this is enough. I’ll take a look later and submit a PR against upstream Marlin if I can prove that’s the error.

2 Likes

Oh wow, thanks for the very fast reply!

I’ll take a crack at doing the patch manually and let you know how it goes.

Much appreciated!

Give me 15 minutes. That one section is not enough. I’m putting together a commit and a PR right now.

Ok @arcanemachine here is the commit which I’ll be submitting as a PR: https://github.com/MarlinFirmware/Marlin/compare/bugfix-2.0.x...vector76:patch-6
This is a problem in 418 and is identical in 418D. I have been running 418 and I didn’t even notice I had this same issue already occurring!

And here is the pull request: https://github.com/MarlinFirmware/Marlin/pull/16898

3 Likes

OK, so I got it working after I manually changed the lines according to your PR (I didn’t bother using git, which probably would have been easier in retrospect).

After uploading the firmware, I did get a CRC error. This time running M502 then M500 did the trick. No errors now.

Thanks again for your incredible speed!

PS. I noticed that there is a section in the forum for Software/Firmware… guess I should have posted there.

@vicious1, this means that the 418 versions effectively have no eeprom. Or atleast, you can’t change the eeprom.

Grrrrrr, I even saw this error…many times and brushed it off to actually enabling eeprom again. Dangit.

All good, when this gets pulled I will update them all again. It has to be tested again though as they messed with the dual stuff right after 418 so I have been hesitant to update, testing takes a long time. Speaking of. I think I am going to stop testing ramps, if all the rest work I will assume ramps is okay.

@jamiek you are awesome!

The end of an era.

1 Like

If you wanted a near-term fix you could apply a small patch to 418 and 418D to make 419 and 419D, and that should relieve any time pressure. Eventually when/if the PR makes its way into bugfix-2.0.x you can merge and no hurry on testing to release the next one.

I wouldn’t worry about ramps. It should work fine, and in the unlikely event that it breaks, somewhere between bugfix-2.0.x and the Rambo version the answer won’t be far off.

With your track record this will get pulled in shortly. You seem to get things in super fast, fingers crossed.

BOOOOOM, NICE!

Merged…now I have to get to work on updating and testing.

Hi Ryan.
Was noticing an EEPROM mismatch error each boot (rambo 1.4, lowrider 2).
sent an M500 command and now on boot get:

Error:EEPROM datasize error.
echo:Index: 603 Size: 599
echo:Hardcoded Default Settings Loaded

Things still seem to run fine but…is this going to pop up as an issue at some point? Do I need to fix it?

More info:
on startup:
CNCjs 1.9.22 [Marlin]
Connected to /dev/ttyACM0 with a baud rate of 250000
start
echo:Marlin 418 bugfix-2.0.x
echo: Last Updated: 2020-01-22 | Author: (V1 Engineering, Ryan, 418)
echo:Compiled: Jun 25 2020
echo: Free Memory: 3435 PlannerBufferBytes: 1488
echo:SD card ok
Error:EEPROM datasize error.
echo:Index: 603 Size: 599
echo:Hardcoded Default Settings Loaded
Error:EEPROM datasize error.
echo:Index: 603 Size: 599
echo:Hardcoded Default Settings Loaded
echo:SD card ok
Error:EEPROM datasize error.
echo:Index: 603 Size: 599
echo:Hardcoded Default Settings Loaded
Error:EEPROM datasize error.
echo:Index: 603 Size: 599
echo:Hardcoded Default Settings Loaded
FIRMWARE_NAME:Marlin 418 bugfix-2.0.x (GitHub) SOURCE_CODE_URL:GitHub - MarlinFirmware/Marlin: Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine. PROTOCOL_VERSION:1.0 MACHINE_TYPE:V1 CNC EXTRUDER_COUNT:0 UUID:cede2a2f-41a2-4748-9b12-c55c62f367ff
Cap:SERIAL_XON_XOFF:0
Cap:BINARY_FILE_TRANSFER:0
Cap:EEPROM:1
Cap:VOLUMETRIC:0
Cap:AUTOREPORT_TEMP:0
Cap:PROGRESS:0
Cap:PRINT_JOB:1
Cap:AUTOLEVEL:0
Cap:Z_PROBE:0
Cap:LEVELING_DATA:0
Cap:BUILD_PERCENT:0
Cap:SOFTWARE_POWER:0
Cap:TOGGLE_LIGHTS:0
Cap:CASE_LIGHT_BRIGHTNESS:0
Cap:EMERGENCY_PARSER:0
Cap:PROMPT_SUPPORT:0
Cap:AUTOREPORT_SD_STATUS:0
Cap:THERMAL_PROTECTION:1
Cap:MOTION_MODES:1
Cap:CHAMBER_TEMPERATURE:0

M504
Error:EEPROM datasize error.
echo:Index: 603 Size: 599
ok
M115
FIRMWARE_NAME:Marlin 418 bugfix-2.0.x (GitHub) SOURCE_CODE_URL:GitHub - MarlinFirmware/Marlin: Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine. PROTOCOL_VERSION:1.0 MACHINE_TYPE:V1 CNC EXTRUDER_COUNT:0 UUID:cede2a2f-41a2-4748-9b12-c55c62f367ff
Cap:SERIAL_XON_XOFF:0
Cap:BINARY_FILE_TRANSFER:0
Cap:EEPROM:1
Cap:VOLUMETRIC:0
Cap:AUTOREPORT_TEMP:0
Cap:PROGRESS:0
Cap:PRINT_JOB:1
Cap:AUTOLEVEL:0
Cap:Z_PROBE:0
Cap:LEVELING_DATA:0
Cap:BUILD_PERCENT:0
Cap:SOFTWARE_POWER:0
Cap:TOGGLE_LIGHTS:0
Cap:CASE_LIGHT_BRIGHTNESS:0
Cap:EMERGENCY_PARSER:0
Cap:PROMPT_SUPPORT:0
Cap:AUTOREPORT_SD_STATUS:0
Cap:THERMAL_PROTECTION:1
Cap:MOTION_MODES:1
Cap:CHAMBER_TEMPERATURE:0
ok
M503
echo: G21 ; Units in mm (mm)
echo: M149 C ; Units in Celsius
echo:Steps per unit:
echo: M92 X100.00 Y100.00 Z400.00 E100.00
echo:Maximum feedrates (units/s):
echo: M203 X50.00 Y50.00 Z15.00 E25.00
echo:Maximum Acceleration (units/s2):
echo: M201 X180.00 Y180.00 Z80.00 E180.00
echo:Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo: M204 P180.00 R3000.00 T180.00
echo:Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> J<junc_dev>
echo: M205 B20000.00 S0.00 T0.00 J0.04
echo:Home offset:
echo: M206 X0.00 Y0.00 Z0.00
ok

No that is resetting the eeprom of all user changes after a flash to a newer version. It is a good thing.

Ok Thanks.

So what it’s doing is clearing it out and resetting to default each boot?
Any reason why it would repeat the message 4 times? Is it just really persistent?
I’m making the connection using cncjs from the v1pi image.

418D is an old version that has a bug with the EEPROM size error that will never clear and effectively prevents you from saving any settings with M500.

Upgrade to a newer version unless you can do without M500. (If you don’t need to save any settings then you can ignore the error.)

1 Like

Wow good catch!

Yeah! Thanks to both of you.
I’ll look into the upgrade.

Installed Release v505.
Seemed to work.

Thanks again