Struggling with Marlin E0 & E1 work

2,642 views
Skip to first unread message

Sairfan

unread,
Sep 2, 2021, 5:50:49 PM9/2/21
to OpenPnP
I was looking at openPnP help pages,  machine.xml example for Marlin is there but its out dated (does not support OpenPNP 2.0 or above) when i navigate to new document page nothing is discussed about Marlin config. 

As Marline is a different case because of differently handled A, B & C Axis like instead they are E0 & E1, I found different confusing commands to deal with it, as below,(that did not work for me)

T0 S1 
G0 E10 
OR
T0G0 E10

And also
T0
G0 E10
and some other.

I want to request some member if you can share a working machine.xml file where E0, E1 are configured and working for sure, I want to get help so that I'm sure mistake is somewhere else. (please share part of config where all kind of commands are set)

Robert Harrison

unread,
Sep 2, 2021, 7:01:07 PM9/2/21
to OpenPnP
What is the name of the controller you are using? Marlin is the firmware I think 🧐 

R

Sairfan

unread,
Sep 2, 2021, 10:37:57 PM9/2/21
to ope...@googlegroups.com
Ahh I'm sorry forgot to mention RAMPS 1.6 but I was thinking its all about talking to firmware from OpenPNP software. There is no hardware involved because i just want to know what commands to send to Marlin that it will understand to move E0 & E1 Axis. 

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/8b66aeb5-3d85-4650-aa32-3d1fce67e08en%40googlegroups.com.

ma...@makr.zone

unread,
Sep 3, 2021, 3:04:10 AM9/3/21
to ope...@googlegroups.com

Hi Sairfan,

you can't use Marlin in the Extruder mode. You must switch to true axis mode, i.e. use axes A B C instead of multiplexed "extruder" axes E0 E1 where you can only move one of them at a time and have to switch them between moves.

According to my information this should work with the newer Marlin versions. See this thread from about this comment, onwards:

https://github.com/openpnp/openpnp/issues/1240#issuecomment-893778594

It would be nice if one of the Marlin users, pehaps @KarampasEfthimios or @mariusmotea could provide samples or even document this on a OpenPnP Wiki page.

See also this, for background:

https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares

_Mark

ma...@makr.zone

unread,
Sep 3, 2021, 3:25:08 AM9/3/21
to ope...@googlegroups.com

More background:

The 6axis support by DerAndere1 was merged:

Multi-axis-Marlin firmware was merged into upstream MarlinFirmware/Marlin bugfix-2.0.x on 5th June 2021, so support for up to 6 non-extruder axes will be part of an upcoming release of official MarlinFirmware/Marlin. Code from this repository (DerAndere1/Marlin) may contain additional multi axis feautures, but official Marlin will be more up to date in general and contain less bugs. Use nightly builds of official MarlinFirmware/Marlin, Version "Marlin 2.0 with bug fixes (bugfix-2.0.x)", whenever possible.

https://github.com/DerAndere1/Marlin/wiki

_Mark

Sairfan

unread,
Sep 3, 2021, 11:34:43 AM9/3/21
to OpenPnP
I tried the link  https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares its configured for Teensy when i change it to Arduino Duo it does not work and throws a bunch of errors

ma...@makr.zone

unread,
Sep 3, 2021, 2:08:47 PM9/3/21
to ope...@googlegroups.com

Hi all Marlin users,

HELP WANTED:

I've made some minimal changes, but please somebody help with improving the Wiki there (it is open to be edited!):

https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares#marlin-20

Please update the text to give confirmed guidance which version of Marlin works for which controller / for how many axes. Ideally add detailed instructions for how to configure on a separate Marlin Configuration page.

_Mark

165718275

unread,
Sep 5, 2021, 9:28:45 PM9/5/21
to openpnp
首先发送T0或T1,以便固件可以识别
建议你,再仔细看下Wiki

---Original---
From: "Sairfan"<sair...@gmail.com>
Date: Fri, Sep 3, 2021 10:38 AM
To: "openpnp"<ope...@googlegroups.com>;
Subject: Re: [OpenPnP] Re: Struggling with Marlin E0 & E1 work

ma...@makr.zone

unread,
Sep 6, 2021, 2:22:31 AM9/6/21
to ope...@googlegroups.com

> First send T0 or T1 so that the firmware can recognize
> I suggest you, read the Wiki again carefully

Like I said: don't use E0 E1, use the A B C axes etc.

https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares#marlin-20

More generally:

https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares#key-features

_Mark

Sairfan

unread,
Sep 6, 2021, 8:12:31 PM9/6/21
to OpenPnP

I downloaded branch and tried to compile after setting 6-Axes but it throws errors, I tried to fix it by setting different define macros based on error log but could not, can someone share suitable configurations to setup Marlin with 6 Axes for OpenPNP 

Christian...@gmx.at

unread,
Sep 7, 2021, 11:41:02 AM9/7/21
to OpenPnP
Why not for 8 axes?

If someone is already doing the job of adapting Marlin for multiple axes,
then it would be good if at least 8 axes were implemented right away.

For machines with 4 nozzles at least 8 axes are required and as far as I have read here,
there are several owners of machines with 4 nozzles here in the forum.

Of course, a lot is said here that smoothie is the best solution.
That may be true, but Big Tree Tech boards are much cheaper and easier to get.
You can get a BTT Octopus board for about 45-50 €.
The hardware seems to be perfectly adequate. But the firmware still has to be adjusted.

I've tried quite a bit myself.
At the moment I'm in the process of merging the latest Marlin version
with a 3 years old Marlin version that has been rewritten to 9 linear axes.
Unfortunately, I fear that my very limited programming knowledge
will not be sufficient for a successful result.

best regards
Christian

Christian...@gmx.at

unread,
Sep 7, 2021, 11:44:56 AM9/7/21
to OpenPnP
Yes Mark, there is a 9 Axis support version from DerAndere1 but this older version of Marlin does not support several boards - for example the new BTT octopus.

pal...@gmail.com

unread,
Sep 7, 2021, 12:54:50 PM9/7/21
to OpenPnP
Hi Christian.

You can find the HAL of BTT Octopus on the BTT Repositori.


You can use my Malin with 9 axis repo or the merged of DerAndere1 and simply select the HAL of BTT Octopus.
I use the BTT GTR1.0 + M5 boards.

You can use my HAL config (pins_BTT_GTR_V1_0.h) , and replace the HAL Pins with the Octopus.

Best Regards.
Sergi.

Christian...@gmx.at

unread,
Sep 7, 2021, 4:06:21 PM9/7/21
to OpenPnP
Hey Sergi,

thank you for your answer.
I'va allready studied your config, but there is one big problem with it.
There is no Octopus-Pin-file included.

But in palokys version (your penultimate suggested link) there it is included.
So I will try this.
Thank you all again!!

Christian...@gmx.at

unread,
Sep 7, 2021, 5:22:30 PM9/7/21
to OpenPnP
There are a lot of Errors when i tried to build Marlin-9axis-pull

I have changed the Boards name in Configuration.h to BTT Octopus
Then I uncommented the "#define LINEAR_AXES 8" and changed it to 8
Afterwards I tried to build but it fails.

Any ideas about the reason??


Compiling .pio\build\BIGTREE_OCTOPUS_V1_0\src\src\HAL\STM32\eeprom_sdcard.cpp.o
In file included from Marlin\src\HAL\STM32\../../inc/../HAL/HAL.h:30,
                 from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:31,
                 from Marlin\src\HAL\STM32\HAL_SPI.cpp:25:
Marlin\src\HAL\STM32\../../inc/../HAL/./STM32/HAL.h:58:4: error: #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports
   58 |   #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."
      |    ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/../HAL/HAL.h:30,
                 from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:31,
                 from Marlin\src\HAL\STM32\MarlinSerial.cpp:21:
Marlin\src\HAL\STM32\../../inc/../HAL/./STM32/HAL.h:58:4: error: #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports

   58 |   #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."
      |    ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:49,
                 from Marlin\src\HAL\STM32\HAL_SPI.cpp:25:
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1976:6: error: #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."

 1976 |     #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."
      |      ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1984:8: error: #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."

 1984 |       #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."
      |        ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1992:10: error: #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."

 1992 |         #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."
      |          ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/../HAL/HAL.h:30,
                 from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:31,
                 from Marlin\src\HAL\STM32\Servo.cpp:25:
Marlin\src\HAL\STM32\../../inc/../HAL/./STM32/HAL.h:58:4: error: #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports

   58 |   #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."
      |    ^~~~~
In file included from Marlin\src\HAL\STM32\MarlinSPI.h:24,
                 from Marlin\src\HAL\STM32\MarlinSPI.cpp:24:
Marlin\src\HAL\STM32\HAL.h:58:4: error: #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."

   58 |   #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."
      |    ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/../HAL/HAL.h:30,
                 from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:31,
                 from Marlin\src\HAL\STM32\Sd2Card_sdio_stm32duino.cpp:24:
Marlin\src\HAL\STM32\../../inc/../HAL/./STM32/HAL.h:58:4: error: #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports

   58 |   #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."
      |    ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/../HAL/HAL.h:30,
                 from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:31,
                 from Marlin\src\HAL\STM32\eeprom_flash.cpp:25:
Marlin\src\HAL\STM32\../../inc/../HAL/./STM32/HAL.h:58:4: error: #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports

   58 |   #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."
      |    ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:49,
                 from Marlin\src\HAL\STM32\MarlinSerial.cpp:21:
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1976:6: error: #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."

 1976 |     #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."
      |      ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1984:8: error: #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."

 1984 |       #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."
      |        ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1992:10: error: #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."

 1992 |         #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."
      |          ^~~~~
In file included from Marlin\src\HAL\STM32\HAL.cpp:25:
Marlin\src\HAL\STM32\HAL.h:58:4: error: #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."

   58 |   #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."
      |    ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:49,
                 from Marlin\src\HAL\STM32\Servo.cpp:25:
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1976:6: error: #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."

 1976 |     #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."
      |      ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1984:8: error: #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."

 1984 |       #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."
      |        ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1992:10: error: #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."

 1992 |         #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."
      |          ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:49,
                 from Marlin\src\HAL\STM32\eeprom_flash.cpp:25:
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1976:6: error: #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."

 1976 |     #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."
      |      ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1984:8: error: #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."

 1984 |       #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."
      |        ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1992:10: error: #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."

 1992 |         #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."
      |          ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:49,
                 from Marlin\src\HAL\STM32\Sd2Card_sdio_stm32duino.cpp:24:
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1976:6: error: #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."

 1976 |     #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."
      |      ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1984:8: error: #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."

 1984 |       #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."
      |        ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1992:10: error: #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."

 1992 |         #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."
      |          ^~~~~
In file included from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:49,
                 from Marlin\src\HAL\STM32\HAL.cpp:28:
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1976:6: error: #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."

 1976 |     #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."
      |      ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1984:8: error: #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."

 1984 |       #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."
      |        ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:1992:10: error: #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."

 1992 |         #error "TEMP_SENSOR_3 is required with 4 or more HOTENDS."
      |          ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:572:26: error: static assertion failed: AXIS_RELATIVE_MODES must contain X Y Z I J K M O E elements.

  572 | static_assert(COUNT(sbm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _LOGICAL_AXES_STR "elements.");
compilation terminated due to -fmax-errors=5.
*** [.pio\build\BIGTREE_OCTOPUS_V1_0\src\src\HAL\STM32\HAL_SPI.cpp.o] Error 1
*** [.pio\build\BIGTREE_OCTOPUS_V1_0\src\src\HAL\STM32\MarlinSPI.cpp.o] Error 1
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:572:26: error: static assertion failed: AXIS_RELATIVE_MODES must contain X Y Z I J K M O E elements.

  572 | static_assert(COUNT(sbm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _LOGICAL_AXES_STR "elements.");
compilation terminated due to -fmax-errors=5.
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:572:26: error: static assertion failed: AXIS_RELATIVE_MODES must contain X Y Z I J K M O E elements.

  572 | static_assert(COUNT(sbm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _LOGICAL_AXES_STR "elements.");
compilation terminated due to -fmax-errors=5.
*** [.pio\build\BIGTREE_OCTOPUS_V1_0\src\src\HAL\STM32\MarlinSerial.cpp.o] Error 1
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:572:26: error: static assertion failed: AXIS_RELATIVE_MODES must contain X Y Z I J K M O E elements.

  572 | static_assert(COUNT(sbm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _LOGICAL_AXES_STR "elements.");
compilation terminated due to -fmax-errors=5.
*** [.pio\build\BIGTREE_OCTOPUS_V1_0\src\src\HAL\STM32\eeprom_flash.cpp.o] Error 1
*** [.pio\build\BIGTREE_OCTOPUS_V1_0\src\src\HAL\STM32\Servo.cpp.o] Error 1

In file included from Marlin\src\HAL\STM32\../../inc/../HAL/HAL.h:30,
                 from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:31,
                 from Marlin\src\HAL\STM32\eeprom_sdcard.cpp:28:
Marlin\src\HAL\STM32\../../inc/../HAL/./STM32/HAL.h:58:4: error: #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports

   58 |   #error "SERIAL_PORT must be from 1 to 6. You can also use -1 if the board supports Native USB."
      |    ^~~~~
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:572:26: error: static assertion failed: AXIS_RELATIVE_MODES must contain X Y Z I J K M O E elements.

  572 | static_assert(COUNT(sbm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _LOGICAL_AXES_STR "elements.");
compilation terminated due to -fmax-errors=5.
Marlin\src\HAL\STM32\../../inc/SanityCheck.h:572:26: error: static assertion failed: AXIS_RELATIVE_MODES must contain X Y Z I J K M O E elements.

  572 | static_assert(COUNT(sbm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _LOGICAL_AXES_STR "elements.");
compilation terminated due to -fmax-errors=5.
*** [.pio\build\BIGTREE_OCTOPUS_V1_0\src\src\HAL\STM32\Sd2Card_sdio_stm32duino.cpp.o] Error 1
*** [.pio\build\BIGTREE_OCTOPUS_V1_0\src\src\HAL\STM32\HAL.cpp.o] Error 1

In file included from Marlin\src\HAL\STM32\../../inc/MarlinConfig.h:49,
                 from Marlin\src\HAL\STM32\eeprom_sdcard.cpp:28:
E_MODES must contain X Y Z I J K M O E elements.

  572 | static_assert(COUNT(sbm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _LOGICAL_AXES_STR "elements.");
compilation terminated due to -fmax-errors=5.
*** [.pio\build\BIGTREE_OCTOPUS_V1_0\src\src\HAL\STM32\eeprom_sdcard.cpp.o] Error 1
=============================================================================================================================================== [FAILED] Took 23.05 seconds ===============================================================================================================================================

Environment                          Status     Duration
--------------------                          --------        ------------
BIGTREE_OCTOPUS_V1_0  FAILED    00:00:23.047
========================================================================================================================================== 1 failed, 0 succeeded in 00:00:23.047 ==========================================================================================================================================
PS G:\PRIVAT\Bestückungsautomat\Marlin\Marlin-9axis_pull> echo "done" >C:\Users\CHRIST~1\AppData\Local\Temp\ipc
PS G:\PRIVAT\Bestückungsautomat\Marlin\Marlin-9axis_pull>

Sairfan

unread,
Sep 8, 2021, 11:41:38 PM9/8/21
to OpenPnP
Finally i was able to setup Marlin with 5 Axis and X Y Z Axes are moving and homing. A and B are also moving 
I'm using Reprap RAMPS 1.4/1.6 I want to turn on/off D8, D9, D10 what M commands i can use, I searched a lot on the internet but i was not able to find any solution except that M106 can turn on D4 which is Fan

Marino

unread,
Sep 12, 2021, 12:49:05 PM9/12/21
to OpenPnP
Hi Christian,

if you attach your Configuration.h and platformio.ini, I might be able to help you.

Best regards
Marino


Christian...@gmx.at

unread,
Sep 14, 2021, 5:49:09 PM9/14/21
to OpenPnP
 Hello Marino,

Thank you very much for your offer.
but i think it's not that easy.

I've tested every version of Marlin I could find.
As long as I have this line

// # define LINEAR_AXES n

commented out I can compile it. But that way, marlin is not useful for me.
As soon as I remove the comment lines I am overwhelmed with error messages and I have no idea how to fix them for any of these errors.

I tried to use the 9 axis version from Sergi and from "DerAndere" instead and simply tried to set the BTT_Octopus board instead of the default one, in configuration.h.
In Sergis Version I can't find the BTT Octopus board in boards.h, The version from "DerAndere" doesn't work anymore when i simply change the default board to the BTT_OCTOPUS

Sergi wrote:
>> You can use my Malin with 9 axis repo or the merged of DerAndere1 and simply select the HAL of BTT Octopus.
>> I use the BTT GTR1.0 + M5 boards.
>> https://github.com/paloky/Marlin_9axis_OpenPnP)

Sergi, do you mean it might work when i use your whole firmware, and simply change the Port-Pins in your pins_BTT_GTR_V1_0.h?? to those of BTT_Octopus?
But there are some other different things in those two Pins_BTT_..... files - for example there are different EEPROM size settings.
I also use the LED Pin for Neopixles for my downlight, ist there a corresponding pin on your board??


I've been struggling with this firmware for months and I'm not a bit smarter.

Everywhere it is proudly written how many axes which version masters, but it looks like the programming is far from mature so that these additional linear axes also work for the BTT Octopus. It looks like I'll have to rewrite every single file in this bloated firmware.

I'm slowly losing my nerve and I'm about to quit this shitty project.

Isn't there really anyone here who got the multi-axis support up and running with Marlin on an Octopus? Or maybe someone lives close by who could seriously help me?

Christian...@gmx.at

unread,
Sep 14, 2021, 5:56:28 PM9/14/21
to OpenPnP
Hey Marino,

Here are the files:

best regards and thank you for your help
platformio.ini
ERRORS.txt
Configuration.h

Sairfan

unread,
Sep 15, 2021, 12:03:06 PM9/15/21
to OpenPnP
Read the error messages carefully and uncomment all those lines that appear in error message, they are in configuration.h and configuration_adv.h once you done you will left with one more error that end stop pins for I, J axes are not defined you just define those dummy pins in configuration.h and that it, I was not able to setup it with 6 axes but that how it worked for me with 5 axis 

Sairfan

unread,
Sep 15, 2021, 12:55:51 PM9/15/21
to OpenPnP
Please look at assembly example as below, can you please advise where point A & B are coming from, and when to turn ON/OFF delay A & B. 


PNP_Nozzle.png

Leoyu

unread,
Sep 16, 2021, 2:51:20 AM9/16/21
to OpenPnP
A point is blow_off valve and flow control; 
B point is  compressed air valve and vacuum generator.
Both A B point need to input  compressed air from 6mm tube.

Marino

unread,
Sep 16, 2021, 4:42:26 AM9/16/21
to OpenPnP
Hi,

here you can find Marlin for the Octopus with 8 axes:

Christian...@gmx.at

unread,
Sep 26, 2021, 7:42:44 AM9/26/21
to OpenPnP
Hi Marino,

Your 4 axes version of Marlin for BTT Octopus is fully working - it's a great work!!

Maybe it's pissible to add your version here:


so other ones can find it too.

I am very convinced of the BTT Octopus. It has everything I need for my 4 nozzle machine and it is also much easier, faster and cheaper to get than some other boards.
There are a lot of aditional IOs and a CAN-interface too - So a lot of headroom for future expansions.
And also, since I use external motor drivers for my X, Y and both Z-axes, I wanted a board that doesn't have built-in drivers like smoothie.
I just made dummy boards, which route the step, direction and enable signals directly to the motor connector.
Instead of a motor, I can then connect my external drivers directly to this connector.
With the jumper I can switch between drive high and drive low. A very comfortable solution I think.

The attached picture shows an early version of this setup.

IMG_4961.jpg

Best Regards!!

Marino

unread,
Sep 26, 2021, 7:14:10 PM9/26/21
to OpenPnP
Hi Christian,

I only adapted the DerAndere1 9axis_pull version for the Octopus with 8 axis.

It can of course be published on the wiki page, but I can't do it myself. 
Unfortunately, I don't have the time right now to add detailed configuration instructions on a separate Marlin configuration page.

In the meantime my BTT Octopus has also arrived and I don't get to continue working on my PNP project.

I also use servo motors with external drivers for X / Y and I think your solution with the dummy boards is great and your installation looks very tidy.
So I'll do it that way too.

Best regards


Christian...@gmx.at

unread,
Oct 2, 2021, 2:34:46 PM10/2/21
to OpenPnP
Hi Marino,

can you please take a look at this post:


I have some totaly movement dropouts in X an Y axis.
I have explained the problem and I have attached the Log file of the error case in the other post.
I think Marlin is responsible for these dropouts, but it's just as possible that it's a mistake on my part.

Since you also use marlin on an octopus board, you may have already noticed the error and found a suitable solution.

Best regards
Christian

Marino

unread,
Oct 4, 2021, 7:40:28 AM10/4/21
to OpenPnP
Hi Christian,

in order to be able to help you you would have to send me your Marlin Configuration_adv.h, Configuration.h and your complete configuration from OpenPnP.

Furthermore, the exact details of which motors you are using on which axis and how they are set.

Regards
Marino

Christian...@gmx.at

unread,
Jan 16, 2022, 9:16:59 AM1/16/22
to OpenPnP
Hi Marino,

I found the reason for the movement dropouts. I had set far too high steps per unit values, so that they were sometimes simply ignored.

But I have two other problems and I just can't find the solution.

1.)
How can I change the order of the axis feedback (M114)? OpenPnP needs a different order than reported by the Octopus Board.

2.)
My rotary axes for the 4 nozzles are connected to B, C, U, V (internally called J, K, M, O). Although the current, steps/unit and microsteps settings in Config.h and Config_adv.h are set the same for the 4 axes, axes J and K rotate twice as fast and far as the other two.

The corresponding driver settings (TMC (X)) in Config_adv.h are highlighted. So they should be adopted. Still it doesn't work.

Did I miss some setting?

mark maker

unread,
Jan 16, 2022, 3:08:04 PM1/16/22
to ope...@googlegroups.com

1) you need to set the POSITION_REPORT_REGEX manually, in the right order.

https://github.com/openpnp/openpnp/wiki/GcodeDriver#position_report_regex

Christian...@gmx.at

unread,
Jan 17, 2022, 4:36:18 PM1/17/22
to OpenPnP
Hey Mark,

So you mean I just need to put the expressions in the POSITION_REPORT_REGEX in the same order than my octopus controller is responding to the M114 command?
But there is another thing. Marlin also reports an additional E0 position although I don't use an axis with that name.
What shall i do with this E0 position response of my controller? There is no easy way (at least not easy for me) to get Marlin not sending this additional E0 position.
Or is OpenPnP able to ignore that?

regards
Christian

mark maker

unread,
Jan 18, 2022, 2:48:14 AM1/18/22
to ope...@googlegroups.com

The E axes are "extruder" axes, these are not well suited for OpenPnP, because you need to multiplex them, i.e. you can only ever move one axis at a time.

But I believe Marlin can be put in proper 6- up to 9-axis mode, when using the right settings, and/or the right firmware fork:

https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares#marlin-20

_Mark

Marino

unread,
Jan 18, 2022, 8:04:14 AM1/18/22
to OpenPnP
Hi Christian,

so far I had only adapted the version DerAndere1 9axis_pull for the octopus with 8 axes and 1 extruder, so the E0 position was also reported.
I have now completely removed the extruder axes so that only the position of the 8 axes X, Y, Z, I, J, K, M, O are reported.

You can find the current version here again:  https://github.com/ARTofNOVELTY/Marlin_Octopus_8axis
 
I made some other adjustments that should get your pivots for the 4 nozzles working properly. If not, check the microstepping settings.

(GERMAN:
bisher hatte ich nur die Version DerAndere1 9axis_pull für den Octopus mit 8 Achsen und einem Extruder angepasst, somit wurde auch die E0-Position gemeldet. 
Ich habe jetzt die Extruder Achsen komplett entfernt, sodass nur noch die Position von den 8 Achsen X, Y, Z, I, J, K, M, O gemeldet werden.

Die aktuelle Version findest Du wieder hier: https://github.com/ARTofNOVELTY/Marlin_Octopus_8axis
 
Ich habe noch einige andere Anpassungen vorgenommen mit denen deine  Drehachsen für die 4 Düsen richtig funktionieren sollten. Falls nicht, überprüfe die Microschritt Einstellungen.)

Regards
Marino

Christian...@gmx.at

unread,
Jan 20, 2022, 4:15:51 PM1/20/22
to OpenPnP
Hello Marino,

thank you very much for your help.

Yesterday I found time to test the new version, but unfortunately it doesn't work.
I am unable to configure the same axes as before.
Octopus does not react to the settings in the Microstep section from config_adv.h - TMC(X)

I tested outside of OpenPnP to make sure it's a Marlin issue
I sent the command "G0 B100 C100 U100 V100" from Pronterface.

B and C axis are still faster and rotate farther than the other two. But I think now it's not twice as fast, just a third.

Do you have any ideas what else could be causing this?


Hi Mark,

I don't use the Extruder Axes. I have a 8 Axis Version of marlin from Marino where all the E-Axes are deactivated and linear Axes A, B, C, U, V are implemented instead.
But when I sent the command M114, position of E0 has also been reportet. Now Marino modified this and there is no E Axes postion reported anymore.

So there is one more question to the order of the Position_Report_Regex.
I Changed the order in Machine Setup >> Drivers >> Gcode >> Default >> POSITION_REPORT_REGEX to the same order like Marlin is responding (it's X Y Z A B C U V).
But issues and solutions shows still the same error. "The driver does not report in the expected X Y Z U V A B C pattern".

Is it possible to change this order in OpenPnP? Or where can I change this pattern in marlin?

Best regards
Christian

mark maker

unread,
Jan 21, 2022, 4:54:49 AM1/21/22
to ope...@googlegroups.com
> But issues and solutions shows still the same error. "The driver does not report in the expected X Y Z U V A B C pattern".
> Is it possible to change this order in OpenPnP? Or where can I change this pattern in marlin?

Note this is due to a simplification in OpenPnP, that I hoped holds true. Now that its seems it doesn't, I need to forget that simplification, i.e. I must make the automatic regex generator smarter to work with any reported order. That'll take some thinking.

Until then you need to hand-change it, as you did.

_Mark

Marino

unread,
Jan 21, 2022, 6:21:33 AM1/21/22
to OpenPnP
Your description doesn't make it clear what works and what doesn't. Explain this in a little more detail. It would also be helpful to have precise information about which motors you use on which axis and how they are set (microstep?).

Marino

unread,
Jan 21, 2022, 6:26:13 AM1/21/22
to OpenPnP
Furthermore, I could also change Marlin so that the driver reports in the expected X Y Z U V A B C pattern.

Marino

unread,
Jan 23, 2022, 5:25:46 AM1/23/22
to OpenPnP
Try this version
firmware.bin

Marino

unread,
Jan 23, 2022, 7:17:00 AM1/23/22
to OpenPnP
Marlin_Octopus_8axis.jpg

mark maker

unread,
Jan 23, 2022, 10:18:17 AM1/23/22
to ope...@googlegroups.com

Marino> Furthermore, I could also change Marlin so that the driver reports in the expected X Y Z U V A B C pattern.

Marino> Try this version

Does this mean, I don't need to change OpenPnP? Will you make a PR upstreams? Or is this a special version anyway?

Please document in the Wiki, thanks!

https://github.com/openpnp/openpnp/wiki/Motion-Controller-Firmwares#marlin-20

_Mark

Marino

unread,
Jan 24, 2022, 8:43:37 AM1/24/22
to OpenPnP
Hi Mark,
I'm still developing the CoreXY drive for my PnP machine and I'm still a long way from testing it with a finished drive, so Christian should first test whether everything harmonizes with OpenPnP.
If everything works, this version is welcome to be published and then it can be documented in the Wiki.

So far I've adapted the Marlin Version from https://github.com/paloky/Marlin_9axis_OpenPnP for Bigtreetech Octopus v1.1 / OpenPnp operation with 8 Axis, the extruders have been completely removed and the position of the 8 Axis is reported in the expected format" X , Y, Z, U, V, A, B, C".

Regards
Marino

Christian...@gmx.at

unread,
Jan 24, 2022, 5:30:45 PM1/24/22
to OpenPnP
Hi Marino, Hi Mark,

I test Marino's version every free minute I have. Unfortunately I only have very few of them at the moment. But I can tell you this much:

The Marlin version of Marino harmonises wonderfully with OpenPnp, except for a few minor things.

But before I do any more testing, I really need to take a few safety precautions.
During the test runs, make sure that the X and Y axes only move when all 4 Z limit switches are active.
(Marion, is there a suitable setting somewhere in Marlin that can be deactivated later for advanced motion control?)
So far I haven't managed to set it up properly - with a very brutal crash as a result :(

When merging the last version of Marlin I accidentally added an extra zero to the steps per unit settings of X-Axis ...800 instead of 80 ... VERY STUPID - I KNOW :(
The head crashed into the machine's left side shield after about 65cm at maximum speed - and it was a lot of speed and also a lot of mass!!
Although the assembly head is built very stable, it has badly damaged it.
Luckily I had all the aluminum parts in reserve and even the bent parts could be straightened with a press.
But ... That all took a lot of time.

The machine is now working again, but the head needs to be recalibrated from scratch.
Anyway, first I'll make a detailed description of the problem with the nozzle rotation axes,
so I can provide Marino with proper information.

I have already printed out these degree scales so that I can measure the deviation of the rotary axes exactly.

IMG_6638.jpg

If I pick up an seconds hand with the matching nozzle (Juki 506) and rotate it over the degree scale, I can tell exactly how many degrees each nozzle actually rotates.


Hope i got some time for that tomorrow or at least on saturday.

best regards you smart programmer heads ;) and good night!!

Christian

mark maker

unread,
Jan 25, 2022, 3:10:48 AM1/25/22
to ope...@googlegroups.com

> During the test runs, make sure that the X and Y axes only move when all 4 Z limit switches are active.

You can make sure of that in OpenPnP:

https://github.com/openpnp/openpnp/wiki/Axis-Interlock-Actuator

_Mark

Christian...@gmx.at

unread,
Jan 25, 2022, 7:53:30 AM1/25/22
to OpenPnP
Hi Marion,

sorry I cant use your Binary File. I have to build my own, because I have different settings in steps per unit, direction and end stops.

Marino

unread,
Jan 25, 2022, 10:51:06 AM1/25/22
to OpenPnP
Hi Christian,

you can find the current version here again:  https://github.com/ARTofNOVELTY/Marlin_Octopus_8axis

Christian...@gmx.at

unread,
Jan 25, 2022, 1:24:46 PM1/25/22
to OpenPnP
Thnak You Marino and sorry for changing your gender in my last message.
I have to pay more attention to what mischief the autocorrection is doing.

regards

Christian...@gmx.at

unread,
Jan 25, 2022, 1:36:04 PM1/25/22
to OpenPnP
Thanks Mark for pointing that out.
I will try to implement these safety precautions at the next opportunity.

I've only worked with the BTT Octopus so far, so I can't compare it to other motion controllers,
but I can unreservedly recommend the BTT Octopus with Marino's Marlin version as a motion controller for a quad-head PnP.

Mark and Marino, if there are any special features you want me to test, just tell me, I'll try my best.

regards
Christian

Marino

unread,
Jan 29, 2022, 9:26:48 AM1/29/22
to OpenPnP
Hi Christian,

would you give me the schematic of your dummy boards that route the step, direction and enable signals directly to the motor connector?
Or where can I get an exact circuit diagram of the BTT Octopus that shows the assignment of the stepper driver plug-in boards?

Regards
Marino

Christian...@gmx.at

unread,
Jan 30, 2022, 6:23:41 AM1/30/22
to OpenPnP
Hi Marino,

here is what you need.
For the dummy boards i have made no schematic.
I just routed the signals step, direction, enable and GND or VCC_IO (selected with the jumper) to the Motor plug.
To prevent crossovers i decided to do this in the following order:

Enable --> B1
Step --> B2
Dir --> A2
GND/VCC --> A1

regards
BIGTREETECH Octopus - PIN.pdf
BIGTREETECH Octopus.pdf

Christian...@gmx.at

unread,
Feb 27, 2022, 7:30:50 AM2/27/22
to OpenPnP
Hello Marino,

I think I've found the reason why two of my nozzles spin exactly twice as far and twice as fast as they should.
I swapped the motor drivers (TMC2208) and lo and behold, now it's the other nozzles that turn too fast and too far.
The TMC2208 are UART-capable drivers. So I guess they're not all configured the same.
But what I don't understand is that the drivers are supposed to be configured by Marlin, but that's not happening.

Do I have to change any settings in Marlin for this?

By the way, the jumpers on the Octopus board were set to SPI mode.
I removed the SPI jumpers so it's now in UART mode.

Best regards
Christian

Christian...@gmx.at

unread,
Mar 2, 2022, 4:30:54 PM3/2/22
to OpenPnP
Hello folks,

I am unable to solve this problem.
I know the reason it's not spinning properly, but I don't know how to solve it.
Is there any special configuration in Marlin that I need to do.
The TMC2208 is not getting the correct microstepping and current settings causing the steppers to spin incorrectly.
Normally the TMC2208 gets this information via UART. but I don't know why the octopus board doesn't communicate with them.
The jumpers are now set correctly, but that didn't solve my problem either.

Regards
Christian

Jon Raymond

unread,
Mar 2, 2022, 4:51:32 PM3/2/22
to OpenPnP
Just to check,

You have set the solder jump on the bottom of the BigtreeTech TMC2208 driver's correctly? Page 4 https://github.com/bigtreetech/BIGTREETECH-TMC2208-V3.0/blob/master/TMC2208-V3.0%20manual.pdf

Christian...@gmx.at

unread,
Mar 2, 2022, 5:51:10 PM3/2/22
to OpenPnP
Hey!!
That was the solution!!
Thanks, that was one of the most valuable tips I've ever received.
Thank you for your help!!
:-D Now I can finally set up all 4 nozzles.

At the moment I can place about 1400 parts per hour without vision.
I'm curious to see how fast the machine will assemble with all 4 nozzles.

Best regards
Christian

Jon Raymond

unread,
Mar 3, 2022, 9:32:17 AM3/3/22
to OpenPnP
Glad you were able to get this working!  The user "Infiniteneslives" over on the the Lumen(formally Index) discord ran into a very similar problem with those drivers and shared how he was able to fix the issue. I just connected the dots when I saw you posted the same issue. Cheers!
Reply all
Reply to author
Forward
0 new messages