I3 plus with E3d v6 hotend and Bondtech BMG Extruder (no BLTouch)

Hello,

I have completed my upgrade on my i3 plus with the E3D v6 hotend and the Bondtech extruder. I designed a simple standard mount and have been able to successfully print several items with out issues. I have the ADVi3 firmware applied also. I am not an expert at customizing firmware but I am researching and learning as I go. I followed your steps for doing a custom firmware build using VS Code. The challenge I am having is that when I make the changes in configuration.h file to apply the setting needed for my setup, I save the file and select “envi3plus” for the platform then select build. Every completes successfully. I then select “upload” and it flashes my printer. What I find is that the flash did not apply the changes from the configuration.h.

To further my test without making any further changes to the configuration.h file I selected “envi3plus-bltouch” and selected “build” everything completed successfully so I uploaded to my machine and after the flash it did apply the changes that updated in the configuration.h file.

I am trying to figure out what I am doing wrong when trying to build the “envi3plus” to get the changes applied. I do plan on buying a bltouch but until then I would like to get the setting working with my current configuration.

Any ideas what I may be missing in the steps or what I am doing wrong?

You have to give more information (what you are doing exactly) and screenshots.

ok sure, I followed the directions within your guide " Advanced Building of ADVi3++ firmware from Sources" I forked the github and made a local clone and opened it within VS Code. I opened the configuration.h file under “Marlin” and made the following changes:

  • #define TEMP_SENSOR_0 5 - I believe the default was 1. 5 matches the setting for the thermister I am using

  • #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 415.0 } - I changed the default of E93 to E415 to match the stepper setting for the extruder I am using.

I saved the changes to configuration.h

Step 1

After I completed the steps in the pic I proceeded to upload the firmware to my printer as shown in the following pic

Step 2

after the upload was successful I checked the stepper setting and it was still showing as the default of 93 and not the 415.

To further add details - as an additional test to see if the build is using the changes I made in the note above within the configuration.h file - I chose a new task, this time the task was “envi3plus-bltouch” as shown in the following pic:

Step 1

It successfully completed the build I then proceeded to upload this new firmware to the printer as shown within the following pic:

Step 2

the upload was successful and when I checked the stepper settings on the printer they showed 415 as define/saved within the configuration.h file .

I am trying to figure out why the changes are applied when I use the “envi3plus-bltouch” build but they aren’t applied when I use the “envi3plus” build.

Can you post here what you have in Terminal (in VS Code) when building env:i3plus ?

Here are the Terminal details when building env:i3plus

> Executing task: C:\Users\Burnt Toast\.platformio\penv\Scripts\platformio.exe run --environment i3plus <

Processing i3plus (platform: atmelavr; board: megaatmega2560; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/megaatmega2560.html
PLATFORM: Atmel AVR (3.2.0) > Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)     
HARDWARE: ATMEGA2560 16MHz, 8KB RAM, 248KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
 - framework-arduino-avr 5.1.0
 - toolchain-atmelavr 1.70300.191015 (7.3.0)
Converting Marlin.ino
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 5 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Wire> 1.0
|-- <SPI> 1.0
|-- <SoftwareSerial> 1.0
Building in release mode
Compiling .pioenvs\i3plus\src\Marlin.ino.cpp.o
Linking .pioenvs\i3plus\firmware.elf
Checking size .pioenvs\i3plus\firmware.elf
Building .pioenvs\i3plus\firmware.hex
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=======   ]  65.9% (used 5402 bytes from 8192 bytes)
Flash: [=====     ]  49.7% (used 126274 bytes from 253952 bytes)
====================================================================================== [SUCCESS] Took 8.74 seconds ======================================================================================
Environment    Status    Duration
-------------  --------  ------------
i3plus         SUCCESS   00:00:08.742
====================================================================================== 1 succeeded in 00:00:08.742 ======================================================================================
Terminal will be reused by tasks, press any key to close it.

And when uploading (still with env:i3plus)?

Here are the details when uploading

> Executing task: C:\Users\Burnt Toast\.platformio\penv\Scripts\platformio.exe run --target upload --environment i3plus <

Processing i3plus (platform: atmelavr; board: megaatmega2560; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/megaatmega2560.html
PLATFORM: Atmel AVR (3.2.0) > Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)
HARDWARE: ATMEGA2560 16MHz, 8KB RAM, 248KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
 - framework-arduino-avr 5.1.0
 - tool-avrdude 1.60300.200527 (6.3.0)
 - toolchain-atmelavr 1.70300.191015 (7.3.0)
Converting Marlin.ino
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 5 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Wire> 1.0
|-- <SPI> 1.0
|-- <SoftwareSerial> 1.0
Building in release mode
Compiling .pioenvs\i3plus\src\G26_Mesh_Validation_Tool.cpp.o
Compiling .pioenvs\i3plus\src\I2CPositionEncoder.cpp.o
Compiling .pioenvs\i3plus\src\M100_Free_Mem_Chk.cpp.o
Compiling .pioenvs\i3plus\src\Marlin.ino.cpp.o
Compiling .pioenvs\i3plus\src\MarlinSerial.cpp.o
Compiling .pioenvs\i3plus\src\Marlin_main.cpp.o
Compiling .pioenvs\i3plus\src\Max7219_Debug_LEDs.cpp.o
Compiling .pioenvs\i3plus\src\Sd2Card.cpp.o
Compiling .pioenvs\i3plus\src\SdBaseFile.cpp.o
Compiling .pioenvs\i3plus\src\SdFatUtil.cpp.o
Compiling .pioenvs\i3plus\src\SdFile.cpp.o
Compiling .pioenvs\i3plus\src\SdVolume.cpp.o
Compiling .pioenvs\i3plus\src\advi3pp.cpp.o
Compiling .pioenvs\i3plus\src\advi3pp_dgus.cpp.o
Compiling .pioenvs\i3plus\src\advi3pp_facade.cpp.o
Compiling .pioenvs\i3plus\src\advi3pp_handlers.cpp.o
Compiling .pioenvs\i3plus\src\advi3pp_log.cpp.o
Compiling .pioenvs\i3plus\src\blinkm.cpp.o
Compiling .pioenvs\i3plus\src\cardreader.cpp.o
Compiling .pioenvs\i3plus\src\configuration_store.cpp.o
Compiling .pioenvs\i3plus\src\dac_mcp4728.cpp.o
Marlin\advi3pp_handlers.cpp: In member function 'bool advi3pp::SdCard::do_dispatch(advi3pp::KeyValue)':
Marlin\advi3pp_handlers.cpp:1310:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
     if(Parent::do_dispatch(key_value))
     ^~
Marlin\advi3pp_handlers.cpp:1313:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
  switch(key_value)
  ^~~~~~
Marlin\advi3pp_handlers.cpp: In member function 'void advi3pp::PrintSettings::fan_minus_command()':
Marlin\advi3pp_handlers.cpp:2575:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
     if(speed <= 0)
     ^~
Marlin\advi3pp_handlers.cpp:2578:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
  speed = speed <= 5 ? 0 : speed - 5;
  ^~~~~
Compiling .pioenvs\i3plus\src\digipot_mcp4018.cpp.o
Compiling .pioenvs\i3plus\src\digipot_mcp4451.cpp.o
Compiling .pioenvs\i3plus\src\emergency_parser.cpp.o
Compiling .pioenvs\i3plus\src\endstops.cpp.o
Compiling .pioenvs\i3plus\src\fwretract.cpp.o
Compiling .pioenvs\i3plus\src\hex_print_routines.cpp.o
Compiling .pioenvs\i3plus\src\least_squares_fit.cpp.o
Compiling .pioenvs\i3plus\src\leds.cpp.o
Compiling .pioenvs\i3plus\src\malyanlcd.cpp.o
Compiling .pioenvs\i3plus\src\mesh_bed_leveling.cpp.o
Compiling .pioenvs\i3plus\src\neopixel.cpp.o
Compiling .pioenvs\i3plus\src\nozzle.cpp.o
Compiling .pioenvs\i3plus\src\parser.cpp.o
Compiling .pioenvs\i3plus\src\pca9632.cpp.o
Compiling .pioenvs\i3plus\src\planner.cpp.o
Compiling .pioenvs\i3plus\src\planner_bezier.cpp.o
Compiling .pioenvs\i3plus\src\power.cpp.o
Compiling .pioenvs\i3plus\src\power_loss_recovery.cpp.o
Compiling .pioenvs\i3plus\src\printcounter.cpp.o
Compiling .pioenvs\i3plus\src\runout.cpp.o
Compiling .pioenvs\i3plus\src\serial.cpp.o
Compiling .pioenvs\i3plus\src\servo.cpp.o
Compiling .pioenvs\i3plus\src\stepper.cpp.o
Compiling .pioenvs\i3plus\src\stepper_dac.cpp.o
Compiling .pioenvs\i3plus\src\stepper_indirection.cpp.o
Compiling .pioenvs\i3plus\src\stopwatch.cpp.o
Compiling .pioenvs\i3plus\src\temperature.cpp.o
Compiling .pioenvs\i3plus\src\tmc_util.cpp.o
Compiling .pioenvs\i3plus\src\twibus.cpp.o
Compiling .pioenvs\i3plus\src\ubl.cpp.o
Compiling .pioenvs\i3plus\src\ubl_G29.cpp.o
Compiling .pioenvs\i3plus\src\ubl_motion.cpp.o
Compiling .pioenvs\i3plus\src\ultralcd.cpp.o
Compiling .pioenvs\i3plus\src\utility.cpp.o
Compiling .pioenvs\i3plus\src\vector_3.cpp.o
Compiling .pioenvs\i3plus\src\watchdog.cpp.o
Linking .pioenvs\i3plus\firmware.elf
Building .pioenvs\i3plus\firmware.hex
Checking size .pioenvs\i3plus\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=======   ]  65.9% (used 5402 bytes from 8192 bytes)
Flash: [=====     ]  49.7% (used 126274 bytes from 253952 bytes)
Configuring upload protocol...
AVAILABLE: wiring
CURRENT: upload_protocol = wiring
Looking for upload port...
Auto-detected: COM3
Uploading .pioenvs\i3plus\firmware.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: reading input file ".pioenvs\i3plus\firmware.hex"
avrdude: writing flash (126274 bytes):

Writing | ################################################## | 100% 18.78s

avrdude: 126274 bytes of flash written
avrdude: verifying flash memory against .pioenvs\i3plus\firmware.hex:
avrdude: load data flash data from input file .pioenvs\i3plus\firmware.hex:
avrdude: input file .pioenvs\i3plus\firmware.hex contains 126274 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 14.49s

avrdude: verifying ...
avrdude: 126274 bytes of flash verified

avrdude: safemode: Fuses OK (E:FD, H:D8, L:FF)

avrdude done.  Thank you.

===================================================================================== [SUCCESS] Took 44.27 seconds =====================================================================================
Environment    Status    Duration
-------------  --------  ------------
i3plus         SUCCESS   00:00:44.275
===================================================================================== 1 succeeded in 00:00:44.275 ===================================================================================== 

Terminal will be reused by tasks, press any key to close it.

I was surprised by the warnings when compiling but it is in fact because I have some tabulations in the code instead of spaces. It is correct.

I see nothing in the logs that explain why you have the behavior you describe. I will make some tests.

ok thanks for your time and support, I will continue to test also and let you know if I uncover anything else. I suspect its a user error of some sort.

I should also note that I am using Github desktop for connecting to repository and when I launch Github desktop I go under repository and select “open in Visual studio code”.

I know this isn’t defined in your steps but it should be the same this as it loads my github clone as it should.

This should also work. For thanks for the information. I will try to reproduce this exactly.

I am thinking that I may have had some sort of sync delay from when I saved my changes in the configuration.h file within VS Code and with the github repository. I notices that when I made my changes to configuration.h then proceeded with the build of envi3plus that my github desktop didn’t register the change right away. By the time I retested the build with the envi3plus-bltouch the changes then were sync’d with github. As shown below github desktop helps track and show the changes:

github

I am retesting the build but this time I’ll make the changes and wait to confirm github recorded the changes then I’ll perform the build with envi3plus. I’ll let you know if this resolves the issue.

I completed my test to valid my thoughts of the delay syncing from when I saved the configuration.h and when github reflected the changes.

  • I ran the CleanEEPROM.ino.with_bootloader.mega.hex file to ensure there was no configuration stored on the main board.
  • I made a change to the configuration.h file (I adjusted the #define BAUDRATE) saved the file.
  • I confirmed that my github repository reflected the change I made.
  • I ran the build for envi3plus.
  • Once build completed successfully I uploaded the updated firmware to my printer.
  • Everything uploaded successful. and all the changes within the configuration.h was applied.

This was all user error as I suspected and noted in my original post. I am glad I figured out what I was doing wrong and I hope I didn’t waste too much of your time helping me figure this out.