I have a v1, not a v2, so it’s possible that they’re different. The firmware is available for both, but I have no idea where to start looking. I’ve ruled out the progress bar representing estimated time (not that it’s accurate) and progress by layers, but just in an informal way.
My current (untested theory) is that the progress is by line or byte count. Probably byte count, because that’s the easiest value to get at the beginning of the print.
How can we test this? We could edit the GCode by hand, and add a bunch of comments. If say a file starts out at 10k lines and 100kB of data, adding 10k empty comments (which is 20kB [2 bytes for # and newline {I’m on a Mac}]) to the beginning of the file will differentiate between lines, layers, and bytes. If the progress immediately jumps to 50% complete, it’s counting lines. If the progress immediately jumps to 20% complete, it’s using bytes. If it progresses normally, it’s using layers or time. Let me give it a try…
# Before edit
clewis ~/Downloads/3D Objects/Small_Calibration_Pyramid [] $ wc -l CalibrationPyramid.gcode
6873 CalibrationPyramid.gcode
clewis ~/Downloads/3D Objects/Small_Calibration_Pyramid [] $ ls -la CalibrationPyramid.gcode
-rw-r--r-- 1 clewis 1000 177811 Aug 25 16:20 CalibrationPyramid.gcode
# After adding 10k comments before layer 0
clewis ~/Downloads/3D Objects/Small_Calibration_Pyramid [] $ wc -l CalibrationPyramid.gcode
16874 CalibrationPyramid.gcode
clewis ~/Downloads/3D Objects/Small_Calibration_Pyramid [] $ ls -la CalibrationPyramid.gcode
-rw-r--r-- 1 clewis 1000 197812 Aug 25 16:17 CalibrationPyramid.gcode
After the nozzle and bed were heated, the progress bar jumped from 0% to 10% complete before printing anything. Given that the file is ~197kB, and I added 20kB, that indicates that the progress bar is based on bytes.
I repeated the test by starting with a fresh gcode, and inserting 10k lines totalling 100kB before layer 0. File size 177811 → 277813, same number of lines as the previous test. Now progress jumps from 0% to 36% before printing starts. And 100/277 is 0.361.
Cool! Now I can follow along in the GCode better by using the progress bar.