Skip to Content
GuidesConfigurationSettings (data.clu)

Settings (data.clu)

data.clu is a plain text file on the SD card holding the enclosure’s tuning values. It is how you change the things the touchscreen does not expose.

Download the template: data.clu. Every value is at its default, with the allowed range written next to it. You can also copy the full file from the bottom of this page.

How to change a setting

Edit the value

Open data.clu in any text editor and change the number.

Raise configRevision

It is the line at the top. Any higher number works, whether that is 1 to 2 or 2 to 50. Never reuse a number you have already used.

Power cycle

Values are read once at boot. The screen briefly shows that the file was applied.

Forgetting to raise configRevision is the number one reason a change does nothing. The enclosure remembers the last revision it applied and skips the file otherwise, which is what lets you leave the card in permanently without it overwriting your touchscreen settings on every boot.

To undo a change, put the old value back and raise the revision again. Lowering the revision does not undo anything, it just makes the file inert.

Rules

  • The format is name = value, one per line. Spaces around the = are fine.
  • # starts a comment.
  • Anything you leave out keeps its current value. You can delete everything except configRevision and the one line you care about.
  • Unknown names are ignored and bad lines are skipped, so a typo costs you that one line rather than the whole file.
  • A file with no configRevision line is ignored completely.
  • Every value is clamped to its range. You cannot disable thermal protection or drive the servos into a hard stop with a bad number.

Clamping means an out of range value is pulled to the nearest end of the range rather than rejected. If you set maxTemp = 200 you get 80, not an error. Worth knowing if a setting looks like it did not take.

What the settings do

Flap servos

Two MG996R servos, wired in parallel from one signal, move the duct flap between open (exhaust) and closed (recirculate).

SettingDefaultRangeWhat it does
servoOpenAngle51 to 90Angle for OPEN. Also used when overheating forces the flap open.
servoCloseAngle441 to 90Angle for CLOSED.
servoHoldMs350100 to 3000How long the servos are driven before powering down.
servoTempHyst31 to 10Overheat hysteresis, in °C.

These are the ones people actually change. If your flap does not quite close, or strains against its stop, nudge the angles a degree or two at a time.

After moving, the servos are powered down rather than held. That is why they go quiet a moment after a move and why they do not buzz. If your flap is heavy enough to sag, raise servoHoldMs, though the fix is usually mechanical rather than electrical.

Safety

SettingDefaultRangeWhat it does
maxTemp5535 to 80Above this the flap forces open and every fan runs at 100%.
opticalAlarmEnable00 to 1Whether the optional optical smoke sensor counts.
smokeFireResponse10 to 1Fans off and flap shut when smoke is detected.
lpgThreshold2000100 to 4095MQ-2 gas trigger level.
smokeThreshold750100 to 4095MEMS smoke trigger level.
smokeBeginTime6000000 to 900000Milliseconds of sensor warm-up before the alarm arms (10 min).
countdownTime51 to 60Seconds of countdown during load cell calibration.

maxTemp needs the BME680 fitted. Recovery is at maxTemp minus servoTempHyst, so at the defaults it vents at 55 °C and stops at 52 °C.

opticalAlarmEnable is 0 for a reason. No optical sensor ships with the enclosure, since it is an optional part you fit yourself. The input is pulled high and reads HIGH as “smoke”, so a board with nothing connected would alarm permanently. Only set it to 1 once you have fitted a working sensor and confirmed it reads clear when idle.

The gas thresholds are raw ADC counts from 0 to 4095, not ppm. If you get false alarms, raise the value. The reliable way to pick one is to watch the reading on the screen during normal printing and leave headroom above it.

Automatic cooling

SettingDefaultRange
autoCoolTempMin200 to 60 °C, fan off
autoCoolTempMax400 to 60 °C, fan 100%

Between the two, the cooling fan ramps linearly.

Automatic filtering

The filter fan ramps from 20% to 100%, following whichever of two inputs reports worse air: PM2.5 and PM0.3. PM10 is measured and logged but is not part of this calculation.

SettingDefaultRangeInput
autoFilterImpMin50 to 1000PM2.5 ramp start
autoFilterImpMax1000 to 1000PM2.5 ramp end
autoFilterP03Min1000 to 10000PM0.3 ramp start
autoFilterP03Max20000 to 10000PM0.3 ramp end

Below both Min values the fan is off rather than at 20%, so it steps from 0% straight to 20% as soon as either input crosses its threshold.

If auto mode is too twitchy for you, raise the Min values. If it never reaches full speed, lower the Max values.

Extra fan

SettingDefaultRange
extraFanSpeed750 to 100 %

The extra fan is on and off from the screen. This sets how hard it runs when on.

Intervals and display

SettingDefaultRangeWhat it does
bmeSampleInterval50001000 to 60000Milliseconds between temperature reads
usageLogInterval90000060000 to 3600000Milliseconds between usage counter saves
sensorUsageWarnHours6000 to 20000Filter fan runtime hours before the replace icon
minBrightness155 to 100Lowest screen brightness the slider can reach

sensorUsageWarnHours is the filter usage counter threshold. 600 hours is about 25 days of continuous filtering. Set it to 0 to turn the warning off.

minBrightness is a floor rather than an offset. The slider still reads 0 to 100, but anything below this value is treated as this value, so the screen never goes fully dark.

usageLogInterval trades precision against memory wear. Saving every 15 minutes means a power cut can lose up to 15 minutes of counted runtime. Do not set this very low, because the enclosure’s memory has a finite number of writes and 15 minutes gives it a lifetime measured in decades.

Load cell factory seeds

SettingDefaultRange
defaultLeftCal7401 to 100000
defaultRightCal7401 to 100000
defaultLeftOffset8483528
defaultRightOffset8483528
tareWeight10000 to 100000 g

These only matter on an enclosure that has never completed calibration. Once yours is calibrated it keeps its own measured values forever, and changing these will not disturb it. Use Calibration instead.

tareWeight is the filament weight the enclosure assumes on a full spool.

What data.clu does not control

Your touchscreen settings live inside the enclosure and are never touched by this file. That covers brightness, fan speeds, filtration mode, selected filament and load cell calibration. This file only holds the tuning values above.

The full file

Copy this into a text file called data.clu on the root of your SD card, or download it.

data.clu
# ======================================================================= # CLURA ENCLOSURE - settings # Copy this file to the root of your SD card. # ======================================================================= # # HOW IT WORKS # ------------ # Your enclosure only reads this file when configRevision is HIGHER than # the last one it applied. You can leave the card in permanently, and it # does nothing on every boot except the one right after you raise it. # # To change something: # 1. edit the value # 2. RAISE configRevision (never reuse a number) # 3. power cycle the enclosure # # To undo a change: restore the old value AND raise configRevision again. # # NOTES # ----- # * Anything you leave out keeps its current value. # * Unknown keys are ignored, and bad lines are skipped. # * A file with no configRevision line is ignored completely. # * Every value is clamped to the range in its comment, so a typo cannot # disable thermal protection or drive the servos into a hard stop. # * This file does NOT hold your touchscreen settings (brightness, fan # speeds, filament choice, calibration). Those live inside the # enclosure and are never touched by this file. # # ======================================================================= configRevision = 1 # -- Flap servos -------------------------------------------------------- servoOpenAngle = 5 # 1..90 deg, flap OPEN (also used on overheat) servoCloseAngle = 44 # 1..90 deg, flap CLOSED servoHoldMs = 350 # 100..3000 ms driven before the servos power down servoTempHyst = 3 # 1..10 deg C overheat hysteresis # -- Safety ------------------------------------------------------------- # Above maxTemp the flap is forced OPEN and every fan runs at 100%, until # the temperature drops below (maxTemp - servoTempHyst). # Needs the BME680 enabled. maxTemp = 55 # 35..80 deg C, automatic flap-open # Optical smoke sensor -> alarm. 0 = ignored. # No optical sensor is supplied with the enclosure. It is an optional part # you fit yourself. The input is pulled high and reads HIGH as "smoke", so # a board with nothing connected would alarm permanently. Set this to 1 # only once a working sensor is installed. opticalAlarmEnable = 0 # 0..1 0 = ignore the optical sensor # Fire response. While smoke or gas is detected: # * ALL fans stop, so no oxygen is fed to a fire and no smoke is pushed # out through the filter # * the flap CLOSES, and this outranks the overheat vent above # So: hot with no smoke -> flap opens to vent the heat. # hot WITH smoke -> flap closes and every fan stops. smokeFireResponse = 1 # 0..1 1 = fans off + flap shut on smoke lpgThreshold = 2000 # 100..4095 MQ-2 gas trigger level smokeThreshold = 750 # 100..4095 MEMS smoke trigger level smokeBeginTime = 600000 # 0..900000 ms warm-up before the alarm arms countdownTime = 5 # 1..60 s calibration countdown # -- Automatic cooling -------------------------------------------------- autoCoolTempMin = 20 # 0..60 deg C -> fan off autoCoolTempMax = 40 # 0..60 deg C -> fan 100% # -- Automatic filtering ------------------------------------------------ # The filter fan ramps from 20% to 100% between the Min and Max of # whichever input reports worse air. Below BOTH Min values it is off. autoFilterImpMin = 5 # 0..1000 PM2.5 ramp start autoFilterImpMax = 100 # 0..1000 PM2.5 ramp end autoFilterP03Min = 100 # 0..10000 PM0.3 ramp start autoFilterP03Max = 2000 # 0..10000 PM0.3 ramp end # -- Extra fan ---------------------------------------------------------- # The extra ("regulated") fan is on and off from the screen. This sets how # hard it runs when switched on. extraFanSpeed = 75 # 0..100 % # -- Intervals and display ---------------------------------------------- bmeSampleInterval = 5000 # 1000..60000 ms between temperature reads usageLogInterval = 900000 # 60000..3600000 ms between usage counter saves # Filter and sensor replacement warning, in HOURS of filter fan runtime. # This is the same number the Settings page shows. 600 h is about 25 days # of continuous running. sensorUsageWarnHours = 600 # 0..20000 runtime hours -> replace icon minBrightness = 15 # 5..100 lowest screen brightness # -- Load cell factory seeds -------------------------------------------- # Only used by an enclosure that has NEVER completed calibration. Once # yours is calibrated it keeps its own measured values forever, and # changing these will not disturb it. defaultLeftCal = 740 # 1..100000 defaultRightCal = 740 # 1..100000 defaultLeftOffset = 8483528 defaultRightOffset = 8483528 tareWeight = 1000 # 0..100000 g, assumed filament weight on a full spool

A minimal file

You do not need all of that. This is a complete, valid data.clu that changes exactly one thing:

minimal-data.clu
configRevision = 2 maxTemp = 45

Everything else keeps whatever value it already has.

Last updated on