After the many failures of uploading the newest version of firmware, I think it really helped me become more proficient with the updates. It makes much more sense to me now and I grasp the concepts much better.
I still don't quite get Github. Personally I feel it's not as straight forward if you don't know what to look for. A good example (a rhetorical question) why is the latest version 2.0.9.1, and this version can be downloaded, but 2.0.x is the latest and can also be downloaded. When I compare zip file sizes, they differ slightly indicating they are not the same. In any case, I'm sure with a bit more experience I'll understand Github.
After using this new version of Marlin (after updating from the original firmware) seems much nicer. It seems quicker, flows better, provides more information, and I feel much more in control knowing I can make changes to it.
Having said all this, I hit another roadblock, however, I feel I've done an extensive amount of research before resorting to posting (more) questions.
First of all, I know this microcontroller is 128k and enabling features eats up this (very quickly it seems). The latest version of Marlin and Marlin's configuration files (2.0.9.1) in its default state uses 85% of memory.
I noticed the end stops are disabled when just moving the axis. They are enabled for 'homing' but I'd like to enable them always. From what I understand, it's simple and I need to un-comment (in the configuration_adv.h file): //#define ENDSTOPS_ALWAYS_ON_DEFAULT
This seems so easy that I want to double check this is the only line to edit. The part I don't understand: I can override with M120 and M121. Not to waste time making assumptions, but I sense this means gcode. If so, using gcode to enable the end stops seems like a waste since the gcode would be executing a print at that point. I want to enable end stops so I can avoid slamming the bed or head into the switches as I'm manually moving the head/bed.
Due to size limitations, I think the only 'standard' option I can disable to save space may be the motion speed of 10mm, however, I don't see the section of code to change this.
The main issue that I've spent extensive time researching is the BLtouch sensor. I've already purchased the v3.1, printed a mount, and installed it (except I haven't done the wiring). I watched a YouTube video from Crosslink (who does some great tutorial videos), but it's an older video with an older version of Marlin.
The manual that came with the BLtouch sensor lists the code for Marlin, but it seems to include lines that are already un-commented. I also tried following the YouTube video by editing each line in the configuration.h file version he used, and compared it in Winmerge, but it still doesn't make sense.
The Marlin firmware website lists (what I assume to be) the section(s) that need to be un-commented (see end of this message), but it seems to conflict with the YouTube Crosslink video.
Can someone steer me in the direction I need to go so I can enable the BLtouch sensor, and have it perform a nine point calibration (I know the last step is to add G29 in the gcode so it performs a calibration at the start of each print)?
Lastly, reverting to my statement earlier about limited memory size and Marlin being 85% full. I believe enabling BLtouch exceeds the memory size (and one reason I'd like to eliminate the 10mm speed which I think is unnecessarily fast). I'm also enabling the end stops, so that will offset what I reduce by eliminating the 10mm speed. I guess my question is: does a list exist that will show me what are essential features necessary for the printer to run so I can tinker with removing the unessential and not running out of space when I add BLtouch?
A list exists (
https://crosslink.io/marlin-2-0-memory-usage-by-feature/), but it doesn't really state which is essential - and some of the descriptions don't make sense as to the exact feature they represent. It also states space can be saved eliminating a bootloader, but I thought the bootloader is necessary for any newer versions of Marlin.
Sorry to make this so long, but I wanted to show I've done research before asking my questions.
#if ENABLED(BLTOUCH)
//#define BLTOUCH_DELAY 500
//#define BLTOUCH_FORCE_SW_MODE
//#define BLTOUCH_SET_5V_MODE
//#define BLTOUCH_FORCE_MODE_SET
//#define BLTOUCH_HS_MODE
//#define BLTOUCH_LCD_VOLTAGE_MENU
#endif