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.

@formpure
Copy link

formpure commented Nov 13, 2021

Just for a point of clarification regarding the left and right z steppers mentioned above...

Which one is the left vs right? Is the "left" stepper the one on my left as I'm looking at the screen or the machine's left as its looking at me?

@kmorley
Copy link

kmorley commented Feb 4, 2022

While the piece-of-paper-as-a-gauge works, I would like to be a little more precise and I have metric feeler gauges. Do you know the actual gap I should shoot for? Maybe .075 mm?

@rubino25
Copy link

Hello. I am trying to port to the latest version of marlin. Is there any way I can set up the display correctly? If I set BIQU_BX_TFT70 everything works, but I can't switch between modes. Some idea?

@mike6mike
Copy link

Hello. I am trying to port to the latest version of marlin. Is there any way I can set up the display correctly? If I set BIQU_BX_TFT70 everything works, but I can't switch between modes. Some idea?

Are you using vs code to compile ? And what do you mean by set up the display ? Can you just not switch over to marlin with the dial ?

@rubino25
Copy link

Yes, vs code. I mean that I can configure Marlin in touch mode but there is no way, at least for me, to port the code that manages the touch interface with icons and the switch with Raspberry mode. Not bad anyway, now I use klipper.

@Bobster3d
Copy link

which stepper motor is this guide considering the left?

Is 1 Left? or is 2 Left?

Capturerl

@kmorley
Copy link

kmorley commented Nov 11, 2022 via email

@looxonline
Copy link
Author

I am relatively certain that Left/Right is viewed from the front of the printer. “Left” is on the same side as the power inlet. “Right” is on the same side as the touchscreen. If you get it backwards, during G34 you will see “Decreasing accuracy detected.”. That’s your clue that you have them wired backwards. From: Bobster3d @.> Sent: Thursday, November 10, 2022 8:04 PM To: Bobster3d @.> Cc: Comment @.***> Subject: Re: looxonline/bx_custom_firmware_guide.md @Bobster3d commented on this gist.

________________________________ which stepper motor is this guide considering the left? Is 1 Left? or is 2 Left? [Capturerl]https://user-images.githubusercontent.com/7079314/201238107-4ca8168c-666c-4928-ad46-d2a3edcc16da.PNG — Reply to this email directly, view it on GitHubhttps://gist.github.com/94510f433c0f40ddcacbbecc384e844f#gistcomment-4365655 or unsubscribehttps://github.com/notifications/unsubscribe-auth/AARR6CNSNIOAILFV4GY23TDWHWLORBFKMF2HI4TJMJ2XIZLTSKBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DFQKSXMYLMOVS2I5DSOVS2I3TBNVS3W5DIOJSWCZC7OBQXE5DJMNUXAYLOORPWCY3UNF3GS5DZVRZXKYTKMVRXIX3UPFYGLK2HNFZXIQ3PNVWWK3TUUZ2G64DJMNZZDAVEOR4XAZNEM5UXG5FFOZQWY5LFVEYTAOBYGI3TIOJWU52HE2LHM5SXFJTDOJSWC5DF. You are receiving this email because you commented on a thread. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Correct.

@afterdarky
Copy link

Hello, I performed all the adjustments described here, including installing the firmware. Now I can no longer perform the homing routine, the nozzle goes down beyond the table and locks up forcing me to turn off the power.
I performed all the alignment steps, adjusted the straps and nuts, installed the firmware, reversed the z-steppers and removed the z-endstop switch. How can I restore homing without the endstop key?

Please help I don't know what else to do.

PXL_20221220_235912668
PXL_20221221_000041439
PXL_20221221_000115484

@kmorley
Copy link

kmorley commented Dec 21, 2022

I have two of the BIQU BX printers.

You absolutely, positively do not need the Z end stop switches - they've been removed on both of my printers.

From the photo, the carriage is not in the correct position to home the Z-axis because the inductive sensor (used for Z-axis homing) is not over the bed. Since inductive sensors detect metal and not air, it's impossible to home the Z-axis unless the inductive sensor is over the metal flex plate.

The carriage is not supposed to move that far to the left, ever. There is a hex cap screw and hammer nut that slides in the rail on each end. Those cap screws extend ~5mm out from the rail and when adjusted correctly, physically prevent the carriage from moving past either extreme end. The left stop should be adjusted to keep the nozzle above the bed when the carriage is fully left (the inductive coupler will be well off the bed). The right stop should be adjusted to keep the inductive coupler over the bed when the carriage is fully right (the nozzle will be well off the bed).

Once the carriage moves left to the stop, the Stall Guard circuitry (aka "Soft End-Stops") on the X-axis driver detects the stalled motor condition and the firmware declares that X-home. Once X-home is detected, the machine homes the Y-axis (bed). Y-home is also detected using Stall Guard. After X and Y homes are determined, the machine will move the carriage to the right by 15-20m so the inductive sensor is over the metal flex plate. Only then will the machine attempt to home the Z-axis.

This appears to be an X-axis homing problem. Make very sure the limit cap screws are in place on both sides of the rail and adjusted correctly: when furthest left, the nozzle is still over the flex plate while the inductive sensor is 15-20mm left of the bed. When furthest right, the inductive sensor is over the bed and the nozzle is 15-20mm right of the bed.

If you want confirmation, move the carriage to the center, take another photo of the left side and post that photo. The cap screw should be clearly visible on both the left and right sides of the X-axis rail.

You may also want to move the carriage to somewhere near the center of the bed with the power off. Raise the z-axis 100-200mm. Power-up the printer, command home and observe. You should see the X-axis (carriage) home first, then the Y-axis (bed) home and finally the Z-axis home.

Using this approach, if the Z-axis begins homing and you see the inductive sensor is off the bed and so cannot sense the flex plate, you will have time to power the machine down BEFORE anything gets bent.

@afterdarky
Copy link

The screw cannot be moved because it fixes the x-axis, the problem could be in the offset that was lost after I updated the firmware. Where can I manually set the limit value for the x axis?

PXL_20221221_013456576
PXL_20221221_013634468
PXL_20221221_013740267

@kmorley
Copy link

kmorley commented Dec 21, 2022 via email

@afterdarky
Copy link

Thank you very much for your support, can anyone show a picture of how your printers are configured? The x-axis screws are set as factory set I haven't changed anything.
2

What you are telling me is that I need to create a new physical boundary so that the print carriage does not leave the area in relation to the Y tray?
IMG20221221120617

@kmorley
Copy link

kmorley commented Dec 21, 2022

Your photo shows the physical end-stop and it looks like it is in the correct position. It's the protruding hex cap screw at the far left side of the rail. If you loosen it up, it will slide in the rail for adjustment. Here's a photo of mine:
20221221_151831 1

Try the following procedure:

  1. Power-off the printer
  2. Move the carriage and bed so the carriage is over the center of the bed and is at least 100mm above the bed.
  3. Power the printer on and wait for initialization.
  4. Command home and then watch closely.

You should see the carriage move to the right a little and then move to the left until it touches the physical end stop and then it should stay there. Next, the bed should move back until it touches it's end stop switch and then stay their. Next, the carriage should move to the right by about 50mm so the inductive sensor is over the bed. Finally, the machine should home the Z-axis using the inductive sensor.

If that doesn't match what is happening with your machine, please provide details.

@totallynectar
Copy link

YUri, I had a similar issue that was resolved by loosening the X belt. During X homing, it would try to go to the correct place but was not able to and made a funky grind noise at that exact movement. Try that out

@gedds1993
Copy link

So I just picked up a bx used, getting things set up per your other walk throughs (checking square and levelness). I uploaded the firmware you have posted on here and it works great accept if the machine looses power (aka I turn off the power switch). On reboot I’ll get a black screen with white pixelization that looks like it is trying to be text but is distorted. It will then keep rebooting over and over. The only way I’ve found to get it out of this loop is install the stock firmware and then reinstall yours and don’t turn off power (or I have to rinse and repeat). Your firmware is far better and I’d like to continue to use it but I would also like to solve this issue. Any ideas?

@kmorley
Copy link

kmorley commented Jun 2, 2023 via email

@gedds1993
Copy link

@gedds1993: I don’t know how to directly fix the problem you are reporting, but I can offer a suggestion: Early BX units shipped with the SKR-SE-BX V1.0 main board, which worked but included several “annoyances”. One of those annoyances was the Z-axis movement buttons on the LCD operating opposite the way they were facing: the button pointing UP actually caused the print head to move DOWN. That problem was probably resolved by LCD firmware updates at some point, but that’s what early units equipped with the original board were like. The problem you described might possibly be a defective main board and, if so, you’ll need to replace it anyway. Consider ordering a replacement SKR SE-BX V3.0 board. The are available from Bigtree Tech for around $60USD delivered. Shipping from China to the US takes about two weeks. The boards are relatively inexpensive. Buying the current V3.0 board will resolve your issue and bring your BX up to current spec. Good luck! Ken From: gedds1993 @.> Sent: Thursday, June 1, 2023 11:21 PM To: gedds1993 @.> Cc: Comment @.***> Subject: Re: looxonline/bx_custom_firmware_guide.md @gedds1993 commented on this gist.

________________________________ So I just picked up a bx used, getting things set up per your other walk throughs (checking square and levelness). I uploaded the firmware you have posted on here and it works great accept if the machine looses power (aka I turn off the power switch). On reboot I’ll get a black screen with white pixelization that looks like it is trying to be text but is distorted. It will then keep rebooting over and over. The only way I’ve found to get it out of this loop is install the stock firmware and then reinstall yours and don’t turn off power (or I have to rinse and repeat). Your firmware is far better and I’d like to continue to use it but I would also like to solve this issue. Any ideas? — Reply to this email directly, view it on GitHubhttps://gist.github.com/looxonline/94510f433c0f40ddcacbbecc384e844f#gistcomment-4587148 or unsubscribehttps://github.com/notifications/unsubscribe-auth/AARR6CM5HXY2VPVD3EE3THLXJFLZBBFKMF2HI4TJMJ2XIZLTSKBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DFQKSXMYLMOVS2I5DSOVS2I3TBNVS3W5DIOJSWCZC7OBQXE5DJMNUXAYLOORPWCY3UNF3GS5DZVRZXKYTKMVRXIX3UPFYGLK2HNFZXIQ3PNVWWK3TUUZ2G64DJMNZZDAVEOR4XAZNEM5UXG5FFOZQWY5LFVEYTAOBYGI3TIOJWU52HE2LHM5SXFJTDOJSWC5DF. You are receiving this email because you commented on the thread. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Ken,

I kind of figured as much considering the author of this firmware only enabled some features and other modifications that wouldn’t necessarily affect the lcd display or the boot from power off sequence. I just ordered the new board so fingers crossed it’s that easy of a fix. Maybe will fix some other stuff I don’t know about. Thanks for your valued input!

Ben

@kuLLe2285
Copy link

Hi Luke,
Thanks for all the work you put into the BiQu BX. I got one from the Crowdfunding campaign.
I am currently writing up how I made the BiQu BX work with Klipper, input shaping (by measuring the res freq) and pressure advance.
I see some things, like the current that you state is by default 1000mA for the motors, that are not quite correct for the stock BiQu BX as it uses the TMC2226. The Marlin config_adv shows 800mA for the TMC parts which refers to those I think. The TMC26x are different parts that can output more current. Just measuring the motor temp isn't enough, you would need to measure the IC temperature of the drivers. Since I used your parameters in the past with the Marlin FW they should work though but could be potentially harming the ICs. Are you okay if I reference to your gist pages etc when writing my things up? I might correct you at some points, hope that is okay ;)
Best regards,
kuLLe

@Holorec1
Copy link

Holorec1 commented Jan 4, 2024

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!

@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