MaslowCNC/GroundControl

GroundControl error on RaspberryPi

sullit opened this issue · 9 comments

This error occurs when running GroundControl with the Arduino connected

Here's the shell output

pi@raspberrypi:~ $ ./gc
[INFO   ] [Logger      ] Record log in /home/pi/.kivy/logs/kivy_18-08-08_6.txt
[INFO   ] [Kivy        ] v1.11.0.dev0, git-5ec9508, 20180807
[INFO   ] [Python      ] v2.7.13 (default, Nov 24 2017, 17:33:09) 
[GCC 6.3.0 20170516]
[INFO   ] [Factory     ] 195 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: egl_rpi
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <gl>
[INFO   ] [GL          ] OpenGL version <OpenGL ES 2.0>
[INFO   ] [GL          ] OpenGL vendor <Broadcom>
[INFO   ] [GL          ] OpenGL renderer <VideoCore IV HW>
[INFO   ] [GL          ] OpenGL parsed version: 2, 0
[INFO   ] [GL          ] Shading version <OpenGL ES GLSL ES 1.00>
[INFO   ] [GL          ] Texture max size <2048>
[INFO   ] [GL          ] Texture max units <8>
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Text        ] Provider: sdl2
[WARNING] [Window      ] maximize() is not implemented in the current window provider.
Unable to connect to X server
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event1
[INFO   ] [MTD         ] Read event from </dev/input/event1>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event2
[INFO   ] [MTD         ] Read event from </dev/input/event2>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event0
[INFO   ] [MTD         ] Read event from </dev/input/event0>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event1
[INFO   ] [HIDInput    ] Read event from </dev/input/event1>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event2
[INFO   ] [HIDInput    ] Read event from </dev/input/event2>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event0
[INFO   ] [HIDInput    ] Read event from </dev/input/event0>
[INFO   ] [Base        ] Start application main loop
[INFO   ] [MTD         ] </dev/input/event1> range position X is 0 - 0
[INFO   ] [MTD         ] </dev/input/event0> range position X is 0 - 0
[INFO   ] [MTD         ] </dev/input/event1> range position Y is 0 - 0
[INFO   ] [MTD         ] </dev/input/event0> range position Y is 0 - 0
[INFO   ] [MTD         ] </dev/input/event1> range touch major is 0 - 0
[INFO   ] [MTD         ] </dev/input/event0> range touch major is 0 - 0
[INFO   ] [HIDMotionEvent] using <  mini keyboard>
[INFO   ] [MTD         ] </dev/input/event2> range position X is 0 - 800
[INFO   ] [MTD         ] </dev/input/event1> range touch minor is 0 - 0
[INFO   ] [MTD         ] </dev/input/event0> range touch minor is 0 - 0
[INFO   ] [HIDMotionEvent] using <FT5406 memory based driver>
[INFO   ] [MTD         ] </dev/input/event2> range position Y is 0 - 480
[INFO   ] [HIDMotionEvent] using <  mini keyboard>
[INFO   ] [MTD         ] </dev/input/event1> range pressure is 0 - 255
[INFO   ] [MTD         ] </dev/input/event0> range pressure is 0 - 255
[INFO   ] [HIDMotionEvent] <FT5406 memory based driver> range ABS X position is 0 - 800
[INFO   ] [MTD         ] </dev/input/event2> range touch major is 0 - 0
[INFO   ] [GL          ] NPOT texture support is available
[INFO   ] [MTD         ] </dev/input/event1> axes invertion: X is 0, Y is 0
[INFO   ] [MTD         ] </dev/input/event0> axes invertion: X is 0, Y is 0
[INFO   ] [HIDMotionEvent] <FT5406 memory based driver> range ABS Y position is 0 - 480
[INFO   ] [MTD         ] </dev/input/event2> range touch minor is 0 - 0
[INFO   ] [MTD         ] </dev/input/event1> rotation set to 0
[INFO   ] [MTD         ] </dev/input/event0> rotation set to 0
[INFO   ] [MTD         ] </dev/input/event2> range pressure is 0 - 255
[INFO   ] [HIDMotionEvent] <FT5406 memory based driver> range position X is 0 - 800
[INFO   ] [MTD         ] </dev/input/event2> axes invertion: X is 0, Y is 0
[INFO   ] [HIDMotionEvent] <FT5406 memory based driver> range position Y is 0 - 480
[INFO   ] [MTD         ] </dev/input/event2> rotation set to 0
[INFO   ] [GL          ] Unpack subimage support is available

Connected on port /dev/ttyACM0

Machine Position Report Command Misread Happened Once
Machine Position Report Command Misread Happened Once
Sending: $$ 
[INFO   ] [Base        ] Leaving application in progress...
 Traceback (most recent call last):
   File "main.py", line 502, in <module>
     GroundControlApp().run()
   File "/usr/local/lib/python2.7/dist-packages/kivy/app.py", line 826, in run
     runTouchApp()
   File "/usr/local/lib/python2.7/dist-packages/kivy/base.py", line 502, in runTouchApp
     EventLoop.window.mainloop()
   File "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 92, in mainloop
     self._mainloop()
   File "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 87, in _mainloop
     EventLoop.idle()
   File "/usr/local/lib/python2.7/dist-packages/kivy/base.py", line 337, in idle
     Clock.tick()
   File "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", line 581, in tick
     self._process_events()
   File "kivy/_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events
   File "kivy/_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events
   File "kivy/_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events
   File "kivy/_clock.pyx", line 167, in kivy._clock.ClockEvent.tick
   File "main.py", line 341, in runPeriodically
     self.receivedSetting(message)
   File "main.py", line 301, in receivedSetting
     maslowSettings.syncFirmwareKey(int(parameter), value, self.data)
   File "/home/pi/GroundControl/Settings/maslowSettings.py", line 628, in syncFirmwareKey
     storedValue = data.config.get(section, option['key'])
   File "/usr/local/lib/python2.7/dist-packages/kivy/config.py", line 474, in get
     value = PythonConfigParser.get(self, section, option, **kwargs)
   File "/usr/lib/python2.7/ConfigParser.py", line 618, in get
     raise NoOptionError(option, section)
 ConfigParser.NoOptionError: No option 'propweightz' in section: 'Computed Settings'

Any idea's as to what's breaking it? Is there a way to remove the calibration cache and have it start with no previous calibration data?

Hardware is a raspberrypi 3B + touchscreen

ConfigParser.NoOptionError: No option 'propweightz' in section: 'Computed Settings'

That line sounds like the structure of the groundcontrol.ini file doesn't match what this version of GC expects; is this an old ini file with a much newer version of GC?
Here's something to try - rename your groundcontrol.ini file (save it for some of the numbers it contains). Then run GC. That will cause GC to create a new one with default values. If that works, you can transfer the values from the old file into the new one, either in a text editor of in GC's Settings and Advanced panels.

Good suggestions @blurfl . I tried to replicate this issue by deleting my .ini file and the issue didn't show up that way so I think @blurfl is right and renaming the .ini file should fix the issue

oh hi Bar, neat project :)

So that kind of worked, the python interpreter was still faulting with the same option error though so I appended an arbitrary 'propweightz = 20' into [Computed Settings] and it's at least now not breakpointing the python interpreter in the console output 🤷‍♂️

Thanks for the suggestions, is there any reference on the groundcontrol.ini file individual settings as they seem to be only generated by the calibrate function in the kivy app?

Thanks!

There isn't a documentation page for it but the code is fairly self documenting.

settings = {
    "Maslow Settings":
        [
            {
                "type": "string",
                "title": "Serial Connection",
                "desc": "Select the COM port to connect to machine",
                "key": "COMport",
                "default": ''
            },
            {
                "type": "string",
                "title": "Distance Between Motors",
                "desc": "The horizontal distance between the center of the motor shafts in MM.",
                "key": "motorSpacingX",
                "default": 2978.4,
                "firmwareKey": 2
            },
            {
                "type": "string",
                "title": "Work Area Width in MM",
                "desc": "The width of the machine working area (normally 8 feet).",
                "key": "bedWidth",
                "default": 2438.4,
                "firmwareKey": 0
            },
            {
                "type": "string",
                "title": "Work Area Height in MM",
                "desc": "The Height of the machine working area (normally 4 feet).",
                "key": "bedHeight",
                "default": 1219.2,
                "firmwareKey": 1
            },
            {
                "type": "string",
                "title": "Motor Offset Height in MM",
                "desc": "The vertical distance from the edge of the work area to the level of the motors.",
                "key": "motorOffsetY",
                "default": 463,
                "firmwareKey": 3
            },
            {
                "type": "string",
                "title": "Distance Between Sled Mounting Points",
                "desc": "The horizontal distance between the points where the chains mount to the sled.",
                "key": "sledWidth",
                "default": 310,
                "firmwareKey": 4
            },
            {
                "type": "string",
                "title": "Vertical Distance Sled Mounts to Cutter",
                "desc": "The vertical distance between where the chains mount on the sled to the cutting tool.",
                "key": "sledHeight",
                "default": 139,
                "firmwareKey": 5
            },
            {
                "type": "string",
                "title": "Center Of Gravity",
                "desc": "How far below the cutting bit is the center of gravity. This can be found by resting the sled on a round object and observing where it balances.",
                "key": "sledCG",
                "default": 79,
                "firmwareKey": 6
            },
            {
                "type": "bool",
                "title": "z-axis installed",
                "desc": "Does the machine have an automatic z-axis?",
                "key": "zAxis",
                "default": 0,
                "firmwareKey": 16
            },
            {
                "type": "string",
                "title": "Z-Axis Pitch",
                "desc": "The number of mm moved per rotation of the z-axis",
                "key": "zDistPerRot",
                "default": 3.17,
                "firmwareKey": 19
            },
            {
                "type": "options",
                "title": "Color Scheme",
                "desc": "Switch between the light and dark color schemes. Restarting GC is needed for this change to take effect",
                "options": ["Light", "Dark", "DarkGreyBlue"],
                "key": "colorScheme",
                "default": "Light"
            },
            {
                "type": "string",
                "title": "Open File",
                "desc": "The path to the open file\\ndefault setting: your home directory",
                "key": "openFile",
                "default": ""
            },
            {
                "type": "string",
                "title": "Macro 1",
                "desc": "User defined gcode bound to the Macro 1 button",
                "key": "macro1",
                "default": ""
            },
            {
                "type": "string",
                "title": "Macro 1 Title",
                "desc": "User defined title for the Macro 1 button",
                "key": "macro1_title",
                "default": "Macro 1"
            },
            {
                "type": "string",
                "title": "Macro 2",
                "desc": "User defined gcode bound to the Macro 2 button",
                "key": "macro2",
                "default": ""
            },
            {
                "type": "string",
                "title": "Macro 2 Title",
                "desc": "User defined title for the Macro 2 button",
                "key": "macro2_title",
                "default": "Macro 2"
            },
            {
                "type": "string",
                "title": "Z-Axis Safe Travel Height in MM",
                "desc": "The vertical distance above the work area to raise the z-axis for safe travel. Used by 'Home', 'Return to Center' and 'z-Axis' settings.",
                "key": "zAxisSafeHeight",
                "default": 5,
            },
            {
                "type": "bool",
                "title": "Buffer Gcode",
                "desc": "Buffer gcode on arduino to increase execution speed. Requres restart to take effect. Experimental.",
                "key": "bufferOn",
                "default": 0
            }
        ],
    "Advanced Settings":
        [
            {
                "type": "string",
                "title": "Encoder Steps per Revolution",
                "desc": "The number of encoder steps per revolution of the left or right motor",
                "key": "encoderSteps",
                "default": 8113.73,
                "firmwareKey": 12
            },
            {
                "type": "string",
                "title": "Gear Teeth",
                "desc": "The number of teeth on the gear of the left or right motor",
                "key": "gearTeeth",
                "default": 10
            },
            {
                "type": "string",
                "title": "Chain Pitch",
                "desc": "The distance between chain roller centers",
                "key": "chainPitch",
                "default": 6.35
            },
            {
                "type": "string",
                "title": "Chain Tolerance, Left Chain",
                "desc": "The tolerance adjustment for the left chain length, in percent",
                "key": "leftChainTolerance",
                "default": 0
            },
            {
                "type": "string",
                "title": "Chain Tolerance, Right Chain",
                "desc": "The tolerance adjustment for the right chain length, in percent",
                "key": "rightChainTolerance",
                "default": 0
            },
            {
                "type": "options",
                "title": "Top/Bottom Chain Feed",
                "desc": "On which side of the motor sprockets do the chains leave from to connect to the sled",
                "options": ["Top", "Bottom"],
                "default": "Top",
                "key": "chainOverSprocket"
            },
            {
                "type": "string",
                "title": "Extend Chain Distance",
                "desc": "The length in mm that will be extended during chain calibration",
                "key": "chainExtendLength",
                "default": 1650,
                "firmwareKey": 11
            },
            {
                "type": "string",
                "title": "Chain Length",
                "desc": "The length in mm of your chains, used to define the kinematics search space",
                "key": "chainLength",
                "default": 3360,
                "firmwareKey": 10
            },
            {
                "type": "string",
                "title": "Z-Axis Encoder Steps per Revolution",
                "desc": "The number of encoder steps per revolution of the z-axis",
                "key": "zEncoderSteps",
                "default": 7560.0,
                "firmwareKey": 20
            },
            {
                "type": "options",
                "title": "Spindle Automation",
                "desc": "How should the spindle start and stop automatically based on gcode? Leave off for none, or set external servo control, or external relay control, active high or low.",
                "key": "spindleAutomate",
		"options": ["None", "Servo", "Relay_High", "Relay_Low"],
                "default": "None",
                "firmwareKey": 17
            },
            {
                "type": "string",
                "title": "Max Feedrate",
                "desc": "The maximum feedrate in mm/min that machine is capable of sustaining.  Setting this value too high will cause movements to start before the prior movement finishes.",
                "key": "maxFeedrate",
                "default": 800,
                "firmwareKey": 15
            },
            {
                "type": "string",
                "title": "Home Position X Coordinate",
                "desc": "The X coordinate of the home position",
                "key": "homeX",
                "default": 0.0
            },
            {
                "type": "string",
                "title": "Home Position Y Coordinate",
                "desc": "The X coordinate of the home position",
                "key": "homeY",
                "default": 0.0
            },
            {
                "type": "bool",
                "title": "Truncate Floating Point Numbers",
                "desc": "Truncate floating point numbers at the specified number of decimal places",
                "key": "truncate",
                "default": 0
            },
            {
                "type": "string",
                "title": "Floating Point Precision",
                "desc": "If truncate floating point numbers is enabled, the number of digits after the decimal place to preserve",
                "key": "digits",
                "default": 4
            },
            {
                "type": "options",
                "title": "Kinematics Type",
                "desc": "Switch between trapezoidal and triangular kinematics",
                "options": ["Quadrilateral", "Triangular"],
                "key": "kinematicsType",
                "default": 'Quadrilateral'
            },
            {
                "type": "string",
                "title": "Rotation Radius for Triangular Kinematics",
                "desc": "The distance between where the chains attach and the center of the router bit in mm",
                "key": "rotationRadius",
                "default": 100,
                "firmwareKey": 8
            },
            {
                "type": "string",
                "title": "Chain Sag Correction Value for Triangular Kinematics",
                "desc": "The scaled value computed by the calibration process to calculate chain sag based on sled weight, chain weight, and workspace angle\\ndefault setting: %s",
                "key": "chainSagCorrection",
                "default": 0,
                "firmwareKey": 37
            },
            {
                "type": "bool",
                "title": "Enable Custom Positional PID Values",
                "desc": "Enable using custom values for the positional PID controller. Turning this off will return to the default values",
                "key": "enablePosPIDValues",
                "default": 0
            },
            {
                "type": "string",
                "title": "Kp Position",
                "desc": "The proportional constant for the position PID controller",
                "key": "KpPos",
                "default": 1300
            },
            {
                "type": "string",
                "title": "Ki Position",
                "desc": "The integral constant for the position PID controller",
                "key": "KiPos",
                "default": 0
            },
            {
                "type": "string",
                "title": "Kd Position",
                "desc": "The derivative constant for the position PID controller",
                "key": "KdPos",
                "default": 34
            },
            {
                "type": "string",
                "title": "Kp Position Z-Axis",
                "desc": "The proportional constant for the position Z-Axis PID controller",
                "key": "KpPosZ",
                "default": 1300
            },
            {
                "type": "string",
                "title": "Ki Position Z-Axis",
                "desc": "The integral constant for the position Z-Axis PID controller",
                "key": "KiPosZ",
                "default": 0
            },
            {
                "type": "string",
                "title": "Kd Position Z-Axis",
                "desc": "The derivative constant for the position Z-Axis PID controller",
                "key": "KdPosZ",
                "default": 34
            },
            {
                "type": "string",
                "title": "Proportional Weighting",
                "desc": "The ratio of Proportional on Error (1) to Proportional on Measure (0)",
                "key": "propWeight",
                "default": 1
            },
            {
                "type": "bool",
                "title": "Enable Custom Velocity PID Values",
                "desc": "Enable using custom values for the Velocity PID controller. Turning this off will return to the default values",
                "key": "enableVPIDValues",
                "default": 0
            },
            {
                "type": "string",
                "title": "Kp Velocity",
                "desc": "The proportional constant for the velocity PID controller",
                "key": "KpV",
                "default": 5
            },
            {
                "type": "string",
                "title": "Ki Velocity",
                "desc": "The integral constant for the velocity PID controller",
                "key": "KiV",
                "default": 0
            },
            {
                "type": "string",
                "title": "Kd Velocity",
                "desc": "The derivative constant for the velocity PID controller",
                "key": "KdV",
                "default": .28
            },
            {
                "type": "string",
                "title": "Kp Velocity Z-Axis",
                "desc": "The proportional constant for the Z-axis velocity PID controller",
                "key": "KpVZ",
                "default": 5
            },
            {
                "type": "string",
                "title": "Ki Velocity Z-Axis",
                "desc": "The integral constant for the Z-axis velocity PID controller",
                "key": "KiVZ",
                "default": 0
            },
            {
                "type": "string",
                "title": "Kd Velocity Z-Axis",
                "desc": "The derivative constant for the Z-axis velocity PID controller",
                "key": "KdVZ",
                "default": .28
            },
            {
                "type": "options",
                "title": "PWM frequency for motor control",
                "desc": "The PWM frequence used for motor speed control",
                "options": ["490Hz", "4,100Hz", "31,000Hz"],
                "default": "490Hz",
                "key": "fPWM",
            },
            {
                "type": "string",
                "title": "Position Error Limit",
                "desc": "If the position of the sled varies from the expected position by more than this amount, cutting wil be stopped. Program must be restarted to take effect.",
                "key": "positionErrorLimit",
                "default": 2.0,
                "firmwareKey": 42
            }
        ],
    "Ground Control Settings":
        [
            {
                "type": "bool",
                "title": "Center Canvas on Window Resize",
                "desc": "When resizing the window, automatically reset the Gcode canvas to be centered and zoomed out. Program must be restarted to take effect.",
                "key": "centerCanvasOnResize",
                "default": 0
            },
            {
                "type": "string",
                "title": "Zoom In",
                "desc": "Pressing this key will zoom in. Note combinations of keys like \'shift\' + \'=\' may not work as expected. Program must be restarted to take effect.",
                "key": "zoomIn",
                "default": "pageup"
            },
            {
                "type": "string",
                "title": "Zoom Out",
                "desc": "Pressing this key will zoom in. Note combinations of keys like \'shift\' + \'=\' may not work as expected. Program must be restarted to take effect.",
                "key": "zoomOut",
                "default": "pagedown"
            },
            {
                "type": "string",
                "title": "Valid File Extensions",
                "desc": "Valid file extensions for Ground Control to open. Comma separated list.",
                "key": "validExtensions",
                "default": ".nc, .ngc, .text, .gcode"
            },
            {
                "type": "string",
                "title": "Reset View Scale",
                "desc": "Zoom scale for 'Reset View' command.",
                "key": "viewScale",
                "default": ".45"
            }
        ],
    "Computed Settings": #These are setting calculated from the user inputs on other settings, they are not direclty seen by the user
        [
            {
                "type": "string",
                "key": "kinematicsTypeComputed",
                "firmwareKey": 7
            },
            {
                "type": "string",
                "key": "distPerRot",
                "firmwareKey": 13
            },
            {
                "type": "string",
                "key": "KpPosMain",
                "firmwareKey": 21
            },
            {
                "type": "string",
                "key": "KiPosMain",
                "firmwareKey": 22
            },
            {
                "type": "string",
                "key": "KdPosMain",
                "firmwareKey": 23
            },
            {
                "type": "string",
                "key": "propWeightMain",
                "firmwareKey": 24
            },
            {
                "type": "string",
                "key": "KpPosZ",
                "firmwareKey": 29
            },
            {
                "type": "string",
                "key": "KiPosZ",
                "firmwareKey": 30
            },
            {
                "type": "string",
                "key": "KdPosZ",
                "firmwareKey": 31
            },
            {
                "type": "string",
                "key": "propWeightZ",
                "firmwareKey": 32
            },
            {
                "type": "string",
                "key": "KpVMain",
                "firmwareKey": 25
            },
            {
                "type": "string",
                "key": "KiVMain",
                "firmwareKey": 26
            },
            {
                "type": "string",
                "key": "KdVMain",
                "firmwareKey": 27
            },
            {
                "type": "string",
                "key": "KpVZ",
                "firmwareKey": 33
            },
            {
                "type": "string",
                "key": "KiVZ",
                "firmwareKey": 34
            },
            {
                "type": "string",
                "key": "KdVZ",
                "firmwareKey": 35
            },
            {
                "type": "string",
                "key": "chainOverSprocketComputed",
                "firmwareKey": 38
            },
            {
                "type": "string",
                "key": "fPWMComputed",
                "firmwareKey": 39
            },
            {
                "type": "string",
                "key": "distPerRotLeftChainTolerance",
                "firmwareKey": 40
            },
            {
                "type": "string",
                "key": "distPerRotRightChainTolerance",
                "firmwareKey": 41
            }
        ]
}

@BarbourSmith , PR #747 addresses this issue, right?

I think #747 caused the issue when upgrading, but I couldn't replicate it

I'm able to reproduce this problem by flashing 'Blink.ino' and then the current firmware and removing groundcontrol.ini before starting GC.
This looks like the same issue as Issue #750 . When the new groundcontrol.ini file is created, the section for propweightz in [Computed Settings] is not created.

Thank you for the directions on how to reproduce this issue @blurfl, I was able to reproduce it in the same way. I have opened #753 to fix this issue

Cool i see you've traced it back to a missing function variable in main.py.

What's the git syntax to sync this PR or do you have to merge it with -master so we can update?

edit: oh nope, don't have to wait (how good is git?) so for the impatient it's git pull origin look-into-issue-750 from your local git controlled working directory

pi@raspberrypi:~/GroundControl $ git pull origin look-into-issue-750
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 8 (delta 4), reused 8 (delta 4), pack-reused 0
Unpacking objects: 100% (8/8), done.
From https://www.github.com/MaslowCNC/GroundControl
 * branch            look-into-issue-750 -> FETCH_HEAD
 * [new branch]      look-into-issue-750 -> origin/look-into-issue-750
Updating 8d2c9f1..f4f9692
Fast-forward
 DataStructures/data.py     | 2 +-
 Settings/maslowSettings.py | 9 ++++++++-
 main.py                    | 2 +-
 3 files changed, 10 insertions(+), 3 deletions(-)

note: doing this will probably cause a version mismatch notification in the app, as both of Bar's working copies seem to be at v1.20

Warning, your firmware is out of date and may not work correctly with this version of Ground Control
Ground Control Version 1.20
Firmware Version 1.19

which should be ok to dismiss until 1.20 firmware has a release tag.

afaik there are no Python or Kivy specific flags to quieten this output with. so to diy you can quick-and-dirty your existing 1.19 to 1.20 in Maslow.h and reflash, or just wait for any significant upstream changes and a v1.20 tag in the firmware repo.