This is an extensive (though not exhaustive) list of issues and deficiencies that I’ve found while using Bambu Studio and my X1C+AMS over the last six weeks or so. There’s a lot here, and I’m aware that much of it has been requested in various places in varying formats. I’m posting it here at the suggestion of another user on the discord server, as this seems to be the primary means by which to reach the engineers and devs who are capable of fixing these problems and oversights.
AMS
Filament parameters should be remembered per-spool, and should be passed back and forth between the AMS and the slicer.This is now partially-to-mostly implemented with the latest flow calibration routines. There’s still no centralized directory and the process is a bit tedious, but it is at least possible to calibrate a brand/type of filament once and reuse those calibration values in the future. Progress! See the detailed explanation at the bottom of this post for exactly how and why it’s being done incorrectly now, and how it should be done going forward.- The touchscreen should display the entire profile name, not just “generic PLA” Ideally, you should be able to set the specific profile for a given spool from either the touchscreen or the slicer.
On startup, BS should default to populating all available AMS slots with the filaments currently loaded in the AMS. Perhaps this could be an option selectable in preferences, as it seems people with more than one AMS prefer not to have all their spools populated. Obviously they should still be modifiable for creating a future print job, but they should not need to be entered manually every time the software starts. A “repopulate from AMS” button should be provided to check what spools are in the AMS and repopulate the slots in the slicer to match, in the event the user has swapped out any spools.Implemented by BL.- The printer should not go through a filament purge on startup if the material being printed is the same as the last material that was printed. Adding a checkbox to the print dialog window along with bed leveling, use AMS, etc to enable/disable this feature would be ideal.
Temp Control
- The printer should control chamber temp on a per-print basis, as defined by the user. If a chamber temp setpoint is defined and the current temp is below the setpoint, the printer should bring on the hotbed at its highest allowable setpoint, move it to the top of the enclosure, and bring on the AUX fan to circulate heat. The print should not commence until the chamber temp is within 5C of setpoint. The printer should then modulate the exhaust fan to maintain the chamber setpoint. Bonus points for sending a warning if the door is open when printing with enclosure temp control enabled.
- The slicer should use the material printing temperature range to determine multi-material print compatibility, not material type. Currently, the slicer will not allow the use of support-W with PETG, even though there is significant overlap in the print temperature ranges of both materials. Even when the print temp is manually set identically, the slicer refuses to allow it. This is incorrect behavior. Instead, the slicer should examine the printing ranges for all materials being used and determine appropriate actual printing temps for them based on overlap between ranges.
Arranging and Painting
Common 2D images with transparency (definitely SVG, preferably PNG as well) should be importable as flat objects. These can then be combined with other objects to emboss, deboss, or selectively color them. By “selectively color”, I mean the imported image should be used as a modifier to change the printed color of the model where it overlaps, without changing the model’s shape or dimensions. SVG import implemented - color stamping not yet an optionWhen multiple objects are on the plate and “print by object” is selected, the user should be able to see and modify the order in which they will be printed.Implemented by BL- In the color painting by height range window, the user should be able to specify an absolute height range and/or absolute layer range.
- Paint-on text needs to be implemented.
Font selection dropdown for text should be alphabetical (it’s currently semi-random) and should include a preview of the font appearance.Fixed
Supports
Tree supports are currently borderline-unusable. The branching algorithm makes insane choices, with branches converging to a point and then expanding back out again before connecting with the print (which guarantees support failure). Upper branch density is not configurable, and this leads to large overhangs being supported by widely-spaced polkadots. Ideally, with support interface material being an option, interface density should be definable up to and including 100%, where the tree branches become very dense at the top and a solid flat layer of interface material is printed upon which to print the actual model.Tree supports working great these daysMinimum support area should be a modifiable parameter. Currently, tree supports will attempt to support any sort of texture on vertical walls, even if that texture only sticks out by fractions of a square mm. This can be manually blocked with paint-on support blocker, but that tedious step would not be necessary if the appropriate variables were exposed.While minimum support area is still not user-adjustable, the slicer is now much better at not trying to support wall textures- Support brim radius should either match object brim radius, or be independently adjustable. Tall, thin support structures fail frequently due to insufficient, non-adjustable brims.
Normal support density and line count should be adjustable.Implimented by BLHybrid supports should either be fixed or removed. Currently, they generate only tree-type supports, regardless of model properties. Logically, they should generate normal supports for any overhangs which are directly accessible from the buildplate and only generate tree supports for overhangs which require reaching over the model.hybrid supports working properly in latest builds“Support threshold” angle is currently backwards. It should be reversed to match how other slicers handle this value, as well as common sense.While still backwards and still irritating, it’s been wrong for so long that folks are used to it and fixing it would just lead to more confusion.The “on buildplate only” checkbox is routinely ignored by the slicing engine. If the user specifies that supports should only be placed on the buildplate, then obviously supports should only be placed on the buildplate.seems to be working correctly now, at least most of the time
Buildplate Adhesion
Interior brim needs to be an optionInterior brim now an optionRafts should be added. Their utility is limited and niche, but it does exist.Added in BS- Paint-on brim is even more limited in potential application, but is highly desirable in particular applications.
- Brims (model and support) should combine/consolidate properly (see how cura does it)
General Usability
- Door switch status should be displayed on the device tab in BS. How is this still not a thing?
- All warnings/errors should be bypassable in some way or another. Displaying warnings for inexperienced users is fine, but at no point should the software refuse to slice or the printer refuse to print because it thinks there is a problem that an experienced user knows doesn’t exist. Maybe call it the Ron Swanson button.
- All self-calibration values should be exposed and editable for troubleshooting purposes. Specifically,
flow/extrusion valuesand Z offset need to be user-adjustable. Flow calibration values can now be viewed and edited Exhaust fan status and control should be available in the device tab in BS and on the touchscreen…Implemented by BLPart cooling and AUX fan speed should be visible and adjustable in BS and on the touchscreen.Implemented by BL- A GCODE console should be added to the device tab for sending manual commands.
- All custom GCODEs should be documented on the wiki.
- The printer should have an assisted procedure built in for manually tramming the bed. I get that the bed leveling procedure does a good job, but the Z stepper will have to work a lot less if the bed is properly trammed from the start.
The printer should have a manual filament load and unload procedure for loading/unloading the filament without using the AMS. Having to just jab at the “extrude” button over and over for several minutes is just absurd for a printer this complex and capable.Implemented by BL- The printer should be fully functional without an internet connection. This includes
video over LAN, local firmware updates via SD card, etc. Video over LAN added - just waiting on that offline FW update capability - Users should be able to create GCODE macros which should be triggerable from macro buttons on the device status page. For clarification, see how Klipper does it.
- Timelapse video file names should include the file name from the model printed (in addition to timestamp) for ease of identification.
Timelapse thumbnail should be taken from the last frame of the timelapse itself, not from a separate image captured after the bed has been moved to the bottom of the enclosure and the print is out of sight. See here.Timelapse thumbnails are now taken when the print is in view of the camera - Camera brightness/contrast should be user-adjustable. At the very least, there should be a button for the user to manually trigger an auto-adjust. The current system where it auto-adjusts on startup and is then set in stone until the printer is power-cycled is absurdly limiting.
Why the current flow calibration system is “doing it wrong”
The way the X1 handles lidar flow calibration data is wasteful, counter-productive, and detrimental to print quality. Currently, the X1 calibrates flow “per print”. If you tell it to calibrate flow, it will print its test lines, scan them with lidar, and use that data for that print and all prints going forward until the test is run again. This is problematic for many reasons.
Firstly, if you’re printing a multi-color or multi-material print with the AMS, the printer only calibrates flow based on one of the spools. If, for instance, you have matte PLA in one slot, silk PLA in another, PLA+ in the 3rd, and wood-filled PLA in the 4th, then only one of those spools will be used for the calibration, but that calibration data will be applied to all of them. While all 4 of those spools are nominally “PLA”, they all have substantially different flow characteristics. All spools that weren’t used for the calibration print will print less than ideally.
Secondly, because previous calibration results aren’t remembered, calibration must be re-run every time you print with a different spool - even if you’ve printed with that spool in the past. For example, if you print from a spool of PLA for one print, and then from a spool of ABS for the next print, and then go back to the first spool of PLA for a 3rd print, you need to do the flow calibration every time. Neither the printer nor the slicer “remembers” the calibration from the first time you ran it on that spool of PLA. This is wasteful, both in time and material. By forcing users to constantly re-run flow calibration as part of a print, it limits the usable portion of the print area - or forces users to accept sub-par surface finish where the calibration lines collide with the printed model.
Thirdly, by not tying calibration data to a specific spool with brand/material/type/color/etc info, this calibration data cannot be used to generate premade profiles for the P1P or any future printer without lidar. Thousands of X1 users are running flow calibrations on hundreds of different types of filament every day, but because BL is not reliably tracking what kind of filament they’re calibrating, all this data is useless.
How to do it right
BL needs to set up a proper, centrally-managed material database. Every effort should be made to include as many brands and varieties of filament as possible, and some facility for user-added brands and varieties needs to exist (which will probably require human oversight to avoid duplicates and garbage). When a user gets a new spool of filament, they should add it to their “inventory” in BS, selecting the brand, material, variety, color, etc. That specific spool should get a unique identifier in the central database, and the entry should include all supplied data.
The user should then run a single initial flow calibration on that specific spool, and BS will attach the calibration attributes to that spool in the database. This initial calibration should be extremely thorough and under no circumstances should it be allowed to silently fail without notifying the user (as it currently does). The calibration pattern should be printed and scanned multiple times, at different temperatures and speeds, to build a proper flow profile. Ideally, the printer should then provide the user the opportunity to do a quick, built-in test print to verify that the flow settings are correct. Something like this, maybe 4mm thick, 100% infill, would be sufficient to determine that pressure advance (sharp corners) and flow (no elephant’s foot, smooth top and bottom layers) are correctly calibrated.
Every time the user prints from that spool, either alone or as part of a multi-material/color print from an AMS, that data will be used for that spool. The user never needs to calibrate that spool again, and BL gets reliable, usable flow calibration data for a specific brand/type/color material. That data can be compared to other users calibrations for the same filament, and an accurate profile can then be provided to users of the P1P or any future lidar-less printers.
In order to incentivize proper labeling and tracking of spools in the database, BL should sell RFID stickers (ideally at or near cost) and allow users to “bind” a sticker with the spool in their inventory. This way, once a user has entered the brand/type/color info and run the initial flow calibration, that spool will automatically be recognized by the AMS and its details will automatically be populated both on the touchscreen and in BS. Assuming the user does not use that spool in other non-BL printers, the software will be able to accurately track how much filament has been used and how much remains - even if it is used in a different BL printer.
That’s it for now. I will likely add more issues as I run into them, and I will definitely cross them off the list as they are addressed by BL.
Thank you for coming to my TED talk.