Bigtreetech octopus on Lowrider V3

has anyone try to install bigtreetech octopus board on a lowrider v3 ?

Yes, i have. i can post the files if your interested. I accidently bought the octopus version not knowing the difference :grin: but made it work. Do you by chance know of a nice enclosure that fits the LR3 design?

1 Like

Hey, would you mind posting the files for the SKR octopus board? It’s the only SKR board I can find in South Africa :frowning:

I can’t upload the entire project. So i’ll upload the configuration files.
You have to download a clean marlin project from GitHub version wich is the version i’ve installed.

You would still be required to make changes to your setup in configuration files. so i would advise on following the PlatformIO docs if you haven’t done so yet to setup the enivronment.

The files
Octopus (94.6 KB)

  • override the files from the zip, platform.ini is on the root, the others are inside Marlin/
  • I use TMC2209 drivers if you don’t you need to change the setting starting at line 159
  • my printable area is X620 Y850 this is also used as a hardstop change it at line 1577 to your dimentions
  • I use an LCD screen


Hope it helps, good luck.


Thank you for taking the time to send this through. I really appreciate it!

1 Like

I tried to compile with platformio and vscode and your octopus config files you have on here, and I get an instant error.

Error: Unknown environment names ‘BIGTREE_OCTOPUS_V1’. Valid names are ‘include_tree’

any ideas what I am doing wrong,

As the error states it doesn’t know the environment ‘BIGTREE_OCTOPUS_V1’. These environments can be found in “.\Marlin\src\pins\pins.h”. They are for mapping the configuration to the right board pins.
I changed my environment to something that doesn’t exist to test it out and i also get that error. So best guess is that you are missing files or you have a pathing problem.

Have you downloaded marlin via the link i’ve mentioned in the previous post? Marlin version your folder structure must look something like :

The configuration.h and the configuration_adv.h should overwrite the same files inside the Marlin/ folder and the platformio.ini file in the root of the project folder.

Another option is that something went wrong during the installation process.
so first make sure that everything runs properly with the default configuration.
You could create a new project with the default installation of marlin and open the project folder with the extension. If that is set-up do a build via the checkmark below vscode. if that works your setup is good to go. then try again but only copy the configuration files i’ve provided in the marlin directory (so not platformio.ini). and change in platformio.ini on line 16 to be:
default_envs = BIGTREE_OCTOPUS_V1. should install the required files.

Hope you can make it work. The LR3 is worth the trouble. Good luck.

I will install an Octopus Pro 429 on my LR2 and use Nema23 in the future. My configuration will be X,Y,Z,X2,Y2,Z2,A,B. Nema 23, aluminum X axis, TFT need to be configured.
I put only the modifications that have given me the most work.

The steps I have done are:

1º Download the official version of the manufacturer, see image too.

2º Modify Platformio.ini. My board is a 429: Octopus Pro 429

3º Then we modify Configuration.h, section “machine”

4º Modify file pins_BTT_OCTOPUS_V1_commons.h

The pins of the I, J. axes are added because I had an error. Surely there is a better way to do it?

5º Same file, configuration of the pins of the engines, I fear I must have this part wrong.

(translation from Spanish with Bind)

1 Like

Hi Pedro,

I’ve done your steps, i didn’t need to do step 4 and 5 to make it compile correctly.
what are your configurations of the stepper drivers? starting from line 158 and ending at line 237 in configuration.h?

Configuration.h 158 to 239, for TMC5160.

Not sure how include files in this Forum, excuse me.


 * Stepper Drivers


 * These settings allow Marlin to tune stepper driver timing and enable advanced options for

 * stepper drivers that support them. You may also override timing options in Configuration_adv.h.


 * Use TMC2208/TMC2208_STANDALONE for TMC2225 drivers and TMC2209/TMC2209_STANDALONE for TMC2226 drivers.


 * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01,

 *          TB6560, TB6600, TMC2100,

 *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,

 *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,

 *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,

 *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE

 * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']


#define X_DRIVER_TYPE TMC5160     //Perico

#define Y_DRIVER_TYPE TMC5160     //Perico

#define Z_DRIVER_TYPE TMC5160     // Perico

#define X2_DRIVER_TYPE TMC5160    // Perico

#define Y2_DRIVER_TYPE TMC5160    // Perico

#define Z2_DRIVER_TYPE TMC5160    // Perico

//#define Y2_DRIVER_TYPE TMC5160

//#define Z3_DRIVER_TYPE A4988

//#define Z4_DRIVER_TYPE A4988

#define I_DRIVER_TYPE  TMC5160  // Perico, Eje rotatorio paralelo a X

#define J_DRIVER_TYPE  TMC5160  // Perico, Eje rotatorio paralelo a Y

//#define K_DRIVER_TYPE  TMC5160

//#define U_DRIVER_TYPE  TMC5160

//#define V_DRIVER_TYPE  TMC5160

//#define W_DRIVER_TYPE  A4988

//#define E0_DRIVER_TYPE TMC5160      

//#define E1_DRIVER_TYPE TMC5160  

//#define E2_DRIVER_TYPE A4988

//#define E3_DRIVER_TYPE A4988

//#define E4_DRIVER_TYPE A4988

//#define E5_DRIVER_TYPE A4988

//#define E6_DRIVER_TYPE A4988

//#define E7_DRIVER_TYPE A4988

//#define X2_DRIVER_TYPE TMC5160


 * Additional Axis Settings


 * Define AXISn_ROTATES for all axes that rotate or pivot.

 * Rotational axis coordinates are expressed in degrees.


 * AXISn_NAME defines the letter used to refer to the axis in (most) G-code commands.

 * By convention the names and roles are typically:

 *   'A' : Rotational axis parallel to X

 *   'B' : Rotational axis parallel to Y

 *   'C' : Rotational axis parallel to Z

 *   'U' : Secondary linear axis parallel to X

 *   'V' : Secondary linear axis parallel to Y

 *   'W' : Secondary linear axis parallel to Z


 * Regardless of these settings the axes are internally named I, J, K, U, V, W.



  #define AXIS4_NAME 'A' // :['A', 'B', 'C', 'U', 'V', 'W']  // Perico elijo 'A' rotatorio eje X

  #define AXIS4_ROTATES



  #define AXIS5_NAME 'B' // :['B', 'C', 'U', 'V', 'W']       // Perico elijo 'B' rotatorio eje Y

  #define AXIS5_ROTATES



  #define AXIS6_NAME 'A' // :['C', 'U', 'V', 'W']

  #define AXIS6_ROTATES



  #define AXIS7_NAME 'B' // :['U', 'V', 'W']

  //#define AXIS7_ROTATES



  #define AXIS8_NAME 'U' // :['V', 'W']

  //#define AXIS8_ROTATES



  #define AXIS9_NAME 'W' // :['W']

  //#define AXIS9_ROTATES


Here, my files…
V 1.0 Marlin 209 tres ejes duplicados más dos rotatorios con (210.2 KB)

Hi Pedro,

I’ve made some changes to your files, some are commented with “@EDIT” you can use the search function from vscode to seach for this tag. I’ve also added comments to the TFT configurations, but i dont know your TFT model. Using the wrong configuration may damage your display. so be carefull with that.

I don’t know if the changes that i’ve made will solve your case since i don’t have your setup or have the hardware you have. But i’ve tried to debug and share my findings here for you to hopefully get you closer to solving it. Meanwhile i have come to learn a little more about Marlin, which i enjoyed doing.

Here is what i’ve come to learn from using your files:

The configuration in pins_BTT_OCTOPUS_V1_common.h are defined to be X, Y, Z, Z2, E0, E1, E2, E3.

Typically you only have 1X, 1Y, 1Z but the possibility to have dual z axis, hence Z2. The other ones are used for extruders, you can have a 3D printer print multiple filaments for example.

The driver types you have assigned in configuration.h are X, Y, Z, X2, Y2, Z2, I, J. As you can clearly see, these do not correspond to the defined variables.
Marlin seems to automatically assign the missing driver types to motors that are not being used.
This is stated in a warning during compilation:

#warning "Note: Auto-assigned X2 STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs.

En_STEP/DIR/ENABLE_PIN is probably E0_STEP_PIN, E0_DIR_PIN and E0_ENABLE_PIN. So X2 is assigned to be E0 which is motor 4.

In the changed files i have assigned all the motors from 0-7 to be X , Y, Z, X2, Y2, Z2, I, J this may be different for your setup so you may need to change it. hopefully after these notes you can.

Here are the changes:
V 1.0 Marlin 209 tres ejes duplicados más dos rotatorios con TFT - (94.3 KB)

Good luck.

1 Like

im using the same files for the skr pro just drill new holes


I am trying to use a Octopus Pro v1for a lowrider 3 with 5x 2209 driving the xyz and x2 and z2, and 2x 5160’s for to drive the rotary 4th axis on parallel to x or y using a nema23 3amp stepper and TFT. I tried to look through your changes but was in over my head, I know the 2209’'s are Uart and the 5160 need to be spi. I see the one you modified is for the 5160’s and it looks like the pins are all assigned for that. Could you possibly make a file config file changes to use this with 2209 and 5160’s or explain what needs to be changed? thanks,

I’m not seeing an option for dual drivers for rotary axes (I, J, or K), but I think you could do just as well by wiring the motors in series from a single driver. Both motors will get full current (full torque), and only the top speed will be somewhat less, but I doubt you would need several hundred RPM.

As for setting up 5160’s, I think it is enough to specify
#define I_DRIVER_TYPE TMC5160
Everything else should fall into place and it should use the proper CS pin. The X2 axis is automatically assigned to E0, Y2 is automatically assigned to E1, and I is automatically assigned to E2 (compiler will warn about automatic assignments).

Of course you have to make sure the jumpers and everything is configured correctly. For the Octopus board you don’t have to snip the DIAG pin (sensorless homing endstop signal) because there are jumpers elsewhere on the board to connect or disconnect the DIAG pins to the endstop pins.

Then you will also need to define

and a bunch of other fields will need 4 elements instead of 3, like

And then in Configuration_adv.h:

Basically the compiler will give you errors on all of these, which seems scary because it looks like a lot of errors, but each one is simply something undefined for your new rotary axis. The compiler will tell you what you need to do.

I haven’t yet gotten to the point of setting up a true 4th axis (“true” meaning not just using Y as rotary) but I’ve been looking ahead at what it would entail on the Octopus and this is my best guess.

I need to clarify, I dont need dual axis on the rotary. I just don’t know if I am going to use the 4th axis parallel with the Y or the X axis yet, but only plan to use one driver and one stepper to drive it. I was just going to use the Pedros files modified by Antwan as it appears to already be set up for 4 axis and just modify them for my 2209’s, but I can not get it to compile, getting
Error: Unknown environment names ‘STM32F429ZG_btt’

1 Like

Ok, for that particular error, you’ll need to open platformio.ini and change this line (from Pedro’s version):
default_envs = STM32F429ZG_btt
to this:
default_envs = BIGTREE_OCTOPUS_V1

Then you will (probably) get some other errors that can inform what you’ll need to do next.

I have tired that and it does let it go to next error, which I think has to do with my folder structure of marlin, or how I am openind the project in VS code. I had this same error before and it was something do with my folders not being correct. Here is the error I am getting now;

Error: MOTHERBOARD is not defined in Configuration.h

What enclosures are people using for their Octopus based LR3 builds?

Also, thanks for the firmware and other info in this topic. Cheers!

1 Like

Anyone able to share pictures of their Octopus wired up? Ideally one that’s co-existing with a Raspberry Pi. But pictures of any Octopus builds would be appreciated.

Drilling holes in the existing SKR Pro case is the fastest way to get this done. But that’s too simple, straight forward and efficient. There’s got to be a more complex way…

Currently trying to decide on a layouts with minimum clearances, still planning to gantry mount.

I still need to make room for 1) wiring to snake underneath the board, 2) wiring to go in/out either side of the case. Plan is to 3D print initial parts, wire up, then CNC the rest… Will then iterate and evolve to improve/Mod.

Incase you haven’t seen already, Ryan recently posted…


1 Like