Skip to content

Instantly share code, notes, and snippets.

@looxonline
Last active January 9, 2024 03:37
Show Gist options
  • Save looxonline/94510f433c0f40ddcacbbecc384e844f to your computer and use it in GitHub Desktop.
Save looxonline/94510f433c0f40ddcacbbecc384e844f to your computer and use it in GitHub Desktop.

Using the custom firmware on the BX

If you decide to go ahead and install any of the custom firmware branches on your BX then you must read this guide before using it as it has been carefully written to cover the most common questions that users of the firmware have.

If you ask a question in the facebook group that is covered in this guide I'm going to scowl at you through my monitor and with three mighty waves of my finger declare "tsk, tsk, tsk".

First things first

This guide has been written to supplement the information within the main readme under the "Using the firmware on the BX" heading over here: https://github.com/looxonline/Marlin. Please make sure that you read both as they are equally important.

The information in this guide is structured so as to cover important usability points or to answer common questions under each sub-heading. This should help you to easily identify a sub-heading which you may be particularly interested in or is closely related to a question that you have.

NB!!! Checking that my z-steppers are connected the correct way around

With the first batch of units that BIQU released, they provided dual, independent z functionality but never enabled Z_STEPPER_AUTO_ALIGN in the firmware and therefore the production process did not aim to connect the z-steppers in any particular order. After having some discussions with them they realized that this is a useful function and agreed to enable it and connect their z-steppers in a specific order. In order to understand the order that they connect their units in vs. the order that the firmware expects you need to have a look at the picture below.

IMG_2017

In the picture you'll notice that I have labelled the one stepper driver as ZA and the other as ZB. I intentionally did this instead of labelling them as Z1 and Z2 for reasons that will shortly be made clear. The cables that BIQU use when doing the wiring have Z1 and Z2 written on them, however there is no fixed standard as to whether Z1 runs to the left stepper or to the right stepper. You should therefore use the numbering on the wires simply to identify how your steppers are connected. Let's assume that your Z2 runs to the stepper on the left. You would simply need to plug that into the ZA socket on the motherboard. Likewise if your Z1 runs to the stepper on the left then you would instead plug that into the ZA socket on the motherboard. Essentially you just need to make sure that whatever cable runs to your left stepper plugs into the ZA socket on the motherboard.

When connecting your right stepper take note that there should be a free socket between the ZA and the ZB socket on the motherboard. This is because the ZA socket actually has two sockets associated with it but we only use one and we leave the other one open.

Once you've connected your steppers it would be a good idea to test that they are the correct way around. To do this, power on the BX (with the custom firmware already installed), navigate to the terminal menu in the BTT UI and then enter G34. A sequence should begin that probes the extremities of the X axis with the Y axis centred. Each time the probe changes sides the terminal will print out an error reading. As long as the error reading is getting smaller and not larger you have the steppers the correct way around.

Z_STEPPER_AUTO_ALIGN

Following directly on from the previous point this firmware enables a feature known as z-stepper auto align. Having two z axes is great but what happens if they go out of alignment and cause the x gantry to no longer be parallel to the bed? "Ah, ABL should sort that out" I hear you say. You are quite correct. ABL should sort that out but it's always good to give ABL as much of a mechanical hand as we can.

This feature probes the bed at each extend of the X axis to see what height the gantry is at relative to the bed at each point. By iteratively probing on each end, Marlin is able to reduce the height difference between each end of the X gantry and the bed down to 0.2mm. If you use the BX profile that is build into Cura (or prior to Cura V5 is available from the facebook group) then this step is already built into the start code before each print.

ABL Probing - Getting consistent results

The BX uses an inductive sensor and an inductive sensor can probe FAST without losing accuracy. The stock firmware had probing that was just too slow for my liking. I sped things up and the grid is now probed at a very high speed. To be sure that I was not sacrificing on probing accuracy I ran tens of probing grids, one after the other, and compared their results to each other. The variance was tiny and most points were within 1.5% of each other on successive grids.

There is one caveat to the above statements. Your probe is very temperature dependent and needs to be warmed to a pre-defined point before doing any probing routines. Parking the probe directly above the bed and allowing it to be heated by the heat of the bed for at least 90s will ensure that you get consistent results. The start code in the cura profile for the BX automatically does this.

During probing the nozzle will be limited to 140C to prevent filament from being spewed all over the bed. After probing is complete the nozzle will be heated to the final temperature.

Setting your Z-offset

This is probably the point that people struggle with the most according to feedback from the facebook groups. This is likely because your z-probe has to be heated before attempting to calibrate the z-offset.

Let's deal with that. Follow the steps below to calibrate your z-offset:

  1. First go to the terminal screen and then type in M851 Z0 followed by M500. Then reset the machine using the reset button on the TFT. This gives us a nice, clean starting point.
  2. Next, perform a homing routine which should park the probe just a few mm above the bed.
  3. Turn on the bed heater to 60C and allow it to settle at 60C.
  4. After it has settled at 60C leave the probe to warm up for 90 seconds.
  5. With the probe now warmed up and the bed still on head over to the z-offset menu (movement --> ABL --> z-offset).
  6. Turn z-offset on and the machine will home and then place the nozzle just off the bed. Why does it place the nozzle off the bed? This location was selected because it ensures that if someone has entered an absurd z-offset and forgotten to clear it out before starting this process then the nozzle will not crash into the bed.
  7. Once the nozzle is parked you can use the menu to turn off the XY steppers and manually pull the bed forward so that the nozzle sits over it. You may need to use the arrow to scroll through the menu options to get to the one where you can disable the steppers.
  8. With the nozzle over the bed, step it down until the nozzle is able to pinch a piece of paper between the bed.
  9. Once the paper is pinched well, but still able to move about a bit, you have found the correct z-offset.
  10. Save it using the menu option and exit the calibration menu.

As long as you use the Cura start code and follow the steps above you should get perfect first layers every time. I have validated this with many, many prints.

Currents, accelerations and stepper noises

The BX uses 0.9 degree stepper motors. These have a lower holding torque and thereby need higher currents to achieve rapid accelerations. The stock BX firmware has current set to 1050 and acceleration set to 800. I felt that this machine was capable of a more so I boosted the acceleration to 1000 and the current to 1150. I have a thermal imager and have analysed the motor temperature during long prints and found that it sits at around 54 degrees C which is relatively cool for a stepper motor.

The flip side of using high currents and high accelerations is that the steppers tend to make noise. This is just something that happens with 0.9 degree steppers and is well documented. There are more coils and therefore more things to create EM forces and vibrate together. Sometimes the guide bearings on top of the z lead screws vibrate against their holders which make the vibrations a million times worse. If this happens it's probably best to pull your guide bearings out and leave your lead screw loose in there. They don't offer support to the lead screw since they themselves are loose. They are just there to prevent things catching on the tip of the screw.

@gedds1993
Copy link

Greetings! I have had my BX for about a year now and has been working great. I had the great idea to update it to Klipper. After 10 hours fiddling, I could not get it configured to work, so I put it back to Marlin using your firmware. I have followed all of the above steps and the machine looks the way it was but has a problem. It will not home the Z axis. When I push home, the X and Y home just fine then the Z moves it up twice a few mm each time and stops. After that, when I go into movement it shows Z:2.00. I try to lower it and it moves down 2mm and will not allow me to go further down. If I home it again, it moves up several mm and shows that new position as Z:2.00. I did the instructions for the Z Offset. It keeps the offset data but it remains where ever the home put it, which can be 10's of mm above the plate depending on how many times I have homed it (as well as when I turn Z Offset on, it just bumps it upwards then lowers 2mm making the end height higher than before I turned it on). I made sure the wiring to the Z motors were correct. Initially they were not. I changed them to have the left motor in the ZA spot. I can't find any info anywhere in regards to this problem. Any help will be welcome!

I got my biqu bx to klipper with little to no problems. Where did you have issues?

for your marlin issue it’s been a while since I’ve messed with it but I would check under the tmc driver settings in the config and ensure sensorless homing is enabled for the z axis, there might be some other marlin settings for it as well. I’m pretty sure I ran across the same issue before and I might have my marlin config saved somewhere.

@Holorec1
Copy link

Holorec1 commented Jan 4, 2024

I got my biqu bx to klipper with little to no problems. Where did you have issues?

for your marlin issue it’s been a while since I’ve messed with it but I would check under the tmc driver settings in the config and ensure sensorless homing is enabled for the z axis, there might be some other marlin settings for it as well. I’m pretty sure I ran across the same issue before and I might have my marlin config saved somewhere.

It's been a few weeks. I followed your writeup for the serial connection but if I remember right, I couldn't get the port working...I think.
I realized I didn't NEED the BX to print faster (was primary reason for the upgrade) because I have a P1S and a K1 and the BX would likely be printing slower 83a tpu.
I have little experience in compiling anything. The one time I did I only followed a guide that walked everything thru.

@Holorec1
Copy link

Holorec1 commented Jan 4, 2024

Someone told me to send a M119 to see if the Z stops are being triggered. Both the z_min and z_probe is showing TRIGGERED.

@jrperk
Copy link

jrperk commented Jan 9, 2024

I just loaded the "BIQU BX_ALMOST_STOCK" firmware. Yes, my Z motors were wired wrong. Yes the left is the user's left when facing the printer. I removed the Z-Limit switch. I determined I had set the probe too high a couple of years ago. I had always had trouble with the Z offset and I never really got good prints from this printer. I had to uncomment a bunch of the gcode lines in Cura, even on the new version. I am a couple of hours into a 10-hour print and the results, so far, are amazing. Thank you so much for these improvements. I am excited about my printer, again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment