M115 misses firmware version, OctoPrint not able to fully populate dict structure

What is the problem?
According to https://docs.octoprint.org/en/master/plugins/hooks.html#firmware_info_hook, Octoprint reads the firmware's version from the output of M115 which is expected to be formatted as

FIRMWARE_NAME:Some Firmware Name FIRMWARE_VERSION:1.2.3 PROTOCOL_VERSION:1.0

However, current Marlin version(s) report to M115 like this:

FIRMWARE_NAME:Marlin bugfix-2.0.x (GitHub) SOURCE_CODE_URL:https://github.com/MarlinFirmware/Marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:3D Printer EXTRUDER_COUNT:1 UUID:11111111-2222-3333-4444-555555555555

What did you already try to solve it?
Looked at Marlin GitHub for related changes, no success.
Logs (octoprint.log, serial.log or output on terminal tab at a minimum, browser error console if UI issue ... no logs, no support!)
Log from Terminal Tab:

[...]
Send: M115
Recv: FIRMWARE_NAME:Marlin bugfix-2.0.x (GitHub) SOURCE_CODE_URL:https://github.com/MarlinFirmware/Marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:3D Printer EXTRUDER_COUNT:1 UUID:11111111-2222-3333-4444-555555555555
Recv: Cap:SERIAL_XON_XOFF:0
Recv: Cap:BINARY_FILE_TRANSFER:0
Recv: Cap:EEPROM:1
Recv: Cap:VOLUMETRIC:1
Recv: Cap:AUTOREPORT_TEMP:1
Recv: Cap:PROGRESS:0
Recv: Cap:PRINT_JOB:1
Recv: Cap:AUTOLEVEL:0
Recv: Cap:Z_PROBE:1
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:0
Recv: Cap:CHAMBER_TEMPERATURE:0
Recv: ok
Send: M155 S2
Recv: ok
[...]

Please let me know if further logs are required/helpful.

Additional information about your setup (OctoPrint version, OctoPi version, printer, firmware, browser, operating system, ... as much data as possible)
OctoPrint v1.4.0rc3, Wanhao Duplicator i3, Marlin bugfix-2.0.x as of 3.1.2020, Chrome, Windows 10

I know that this is more a Marlin topic than an OctoPrint issue...but as I came across this while trying to make the OctoPrint Marlin EEPROM plugin work with bugfix-2.0.x, and because I wildly guess that your connections to the Marlin devs are much closer than mine, I post this here...I'll however also post this in the Marlin forum.

As I understand your problem, the format of the firmware string is different than what is normaly expected. What is the error that results from this differing format?

Hi - yes, this is correct.

I was using the OctoPrint Marlin EEPROM plugin for quite some time, but this plugin stopped working some 'releases' of Marlin bugfix-2.0.x ago (not all parameters are displayed in the plugin's configuration pages, for me especially the M851 Z Offset). Digging into the code of the EEPROM plugin, I found that parsing the response of M115 causes this issue. The plugin expects to find a 'FIRMWARE VERSION' information in OctoPrint's dict, but that's no longer there.

As the plugin is no longer actively maintained, I started fiddling around in the code, realizing that reading the firmware version using the firmware_info_hook does no longer work because the firmware_data information does no longer include a version number.

I don't know whether this needs to be changed on Marlin's end (opened a bug report there as well), or if this is just because bugfix.2.0.x is not a release, but a beta (without version info).

However, I'd like to continue to use the EEPROM plugin, but I'm stuck with issues parsing the output of the current version(s) of Marlin.

Of course I can perfectly continue to make the required adjustments directly through G Code...but I'd like to get this plugin working again.

Thanks for responding!

I know I'm a little late to the party but I was having the same issue where the firmware said marlin bug fix but not my version with M115.
I'm working away from home and accidentally shut my rpi down because reboot wasn't working so I haven't double checked and can't until my partner unplugs and replugs it in, but it should work.
To change it edit your marlin >>MARLIN/src/gcode/host/M115.cpp

line 61 shows what M115 displays

Add a line, after "FIRMWARE_NAME", mine is line 64

"FIRMWARE_VERSION" SHORT_BUILD_VERSION " "

your document should now look like this from line 61-75:

void GcodeSuite::M115() {

  SERIAL_ECHOLNPGM(

    "FIRMWARE_NAME:Marlin " DETAILED_BUILD_VERSION " (" __DATE__ " " __TIME__ ") "

    "FIRMWARE_VERSION" SHORT_BUILD_VERSION " "

    "SOURCE_CODE_URL:" SOURCE_CODE_URL " "

    "PROTOCOL_VERSION:" PROTOCOL_VERSION " "

    "MACHINE_TYPE:" MACHINE_NAME " "

    "EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " "

    #if LINEAR_AXES != XYZ

      "AXIS_COUNT:" STRINGIFY(LINEAR_AXES) " "

    #endif

    #ifdef MACHINE_UUID

      "UUID:" MACHINE_UUID

    #endif

  );

With regards to the EEPROM editor plugin being discussed, since I've taken over development (Sept 2020, so after this thread) there's no need for the version number anymore, with this specific plugin. The plugin is much smarter now :slightly_smiling_face: