Skip to content
SkyCruncher
Practical guide · October 2026

Shooting calibration frames

Whether a Seestar owner needs calibration frames, and a step-by-step guide to shooting a full set for a checkup of your sensor. Once you have them, the calibration pipeline turns them into masters and a sensor sheet.

1 · The short version
−−÷= Lightyour target Biasno light,shortest Darkno light,same exposure Flateven light Calibratedwhat's left
calibrated=light−bias−darkflat\text{calibrated} = \dfrac{\text{light} - \text{bias} - \text{dark}}{\text{flat}}

Every raw frame holds the light you wanted plus things the camera added. The electronics add a fixed offset to every pixel (the bias). Heat knocks loose electrons nobody asked for (dark current). The optics light the sensor unevenly, dimmer toward the corners and shadowed by dust (the flat field). Calibration takes these back off: subtract a bias frame (the shortest exposure, no light), subtract a dark frame (same exposure and temperature, no light), and divide by a flat frame (an evenly lit surface). Many frames of each kind are averaged into a master, so the correction doesn't add noise of its own.

How sure each claim is: the markers
measured
a number from my own frames
stated
ZWO or a datasheet says so; I haven't tested it
inferred
my data fits it, but it isn't tested
illustrative
made-up numbers that show the idea
prototyped
works in my test bench, not in the app yet
planned
not built yet
Each line opens for the detail. How it all works, with the math, is in How calibration works.
2 · Should you shoot them?From the app: no bias, no darks. Flats are being tested.

If you shoot in the Seestar app, which is most of us: there's no bias or dark frame to shoot. The app doesn't offer bias frames, and darks you shoot yourself can't match subs the app has already processed. Flats are the open one. The app's Flat Shoot (Settings → Advanced Feature → Image Calibration) is the only flat that could reach your subs, and I'm testing whether it does being tested. This line changes when the result is in. Upload your subs as they are, and SkyCruncher models what's missing.

If you shoot over Alpaca, with NINA today or a SkyCruncher helper app later: a full set of bias, darks and flats tells you your own sensor's numbers. The step-by-step guide is below.

Where do your frames come from? The Seestar appmost of us Over AlpacaNINA now, a helper later Biasnothing to shoot Darksyours can't reachthe app's subs FlatsFlat Shoot in the appbeing tested Bias20 at the shortestexposure Darks20 at 10 s, thena ladder to 120 s Flats30 + 30 dark flatsbeing tested Upload your subswe model what's missing A report on your sensornoise, dark current,hot pixels shoot these being tested nothing to do
Figure 1. The answer depends on how your frames are made. Counts are the S30 Pro plan at gain 200 from my capture tests. "Being tested" covers both sides: flats over Alpaca, and whether the app's Flat Shoot reaches your subs. The report on your sensor comes with the helper app planned.
3 · How to shoot themA step-by-step checkup for your sensor: under an hour indoors.

Your Seestar can also be run over Alpaca, the standard network interface that desktop astronomy programs use. Frames shot this way skip the app's processing, so they show what the sensor itself does: how noisy each read is, how fast heat builds up, where the hot pixels are. They don't calibrate stacks made in the app; think of them as a checkup for your sensor. Today it takes NINA, a free Windows program. A small SkyCruncher helper app that does it all for you is in the works planned. A web page alone can't drive the scope; it doesn't accept calls from websites.

Before you startThe four setups at a glance

Step 5Bias and darksTelephoto camera. Arm closed, filter wheel on Dark. No cover needed.done on my S30 Pro
Step 6FlatsArm raised, lens up. Paper on the lens, lit screen face down on top. Filter: IRCUT / no filter.being tested
Step 7Dark flatsSame spot, screen off. Filter wheel back to Dark.being tested
Step 8Wide cameraArm closed, a cover over the lenses and a dark cloth or box on top: the Dark filter is only on the telephoto.done on my S30 Pro

Gather theseWhat you need

  • Your Seestar, chargedOn your home Wi-Fi (Station mode).
  • A Windows computer with NINA 3Free, from nighttime-imaging.eu.
  • A tablet or phoneA plain white screen at full brightness: open skycruncher.io/calibration/flatpage on it. A tablet covers the lens more evenly. Plugged in, or above 50 % battery: it shows a bright screen for the whole flats run.
  • A sheet of white paperOr a white T-shirt, to spread the light evenly.
  • Your solar filter coverFor the wide camera, with a dark cloth or a box over it: the cover alone lets light through.
  • A dim room, any time of daySteady light and temperature, for under an hour.

Ten stepsStep by step, in NINA (S30 Pro)

Connect · steps 1–4
  1. Put the scope on your home Wi-Fiin the Seestar app

    Settings, then Station mode. Alpaca only runs in Station mode, with the scope and your computer on the same network.

  2. Check that the scope answers Alpacaon the computer

    In NINA, open Equipment, then Camera, and press refresh. The scope's telephoto camera should be in the list:

    If it's missing, turn on Seestar Alpaca in the app's advanced settings and refresh again. Trust this list, not the switch: on my unit the switch wouldn't turn on while the scope was answering Alpaca anyway.

  3. Stop live view in the appin the Seestar app

    The scope runs one capture at a time. While the app is previewing, it refuses NINA with "capture is active".

  4. Connect the camera and the filter wheelon the computer

    Pick the telephoto camera and "Seestar S30 Pro_your ID Filter Wheel". Set gain to 200, the gain the app shoots at. Leave offset alone; the scope doesn't offer it.

Shoot · steps 5–8
  1. Shoot bias and darkshands off · about 17 min

    Arm closed, filter wheel on Dark. The Dark filter is light-tight (about 3 ADU per 10 s) measured, so no cover is needed; just keep the room dim. In NINA's Sequencer:

    • 20 bias at the shortest exposure
    • 20 darks at 10 s
    • 3 darks each at 30, 60 and 120 s
  2. Shoot flats and flat pairsby hand · about 12 minbeing tested

    Raise the arm so the lens points straight up, and set the filter wheel to IRCUT / no filter. The light has to shine down into the lens: lay the white paper over it, then set the tablet on the paper with its white screen facing down, at full brightness. With the lens straight up, it just rests there; no bands or tape needed.

    For the white screen, open the white flat page on the tablet and tap once to start; it keeps the screen on. Tap again for a Go back button.

    Screens flicker, which shows up as bands in short exposures (1.2 % at 0.04 s) measured. Dim with more paper, never with the screen, and keep exposures at 1 s or longer.

    • 30 flats with NINA's Flat Wizard, mean near 35 % of full scale, at 1 s or longer
    • 20 flat pairs: 2 each at 10 levels from 5 to 80 %

    Not yet tried over Alpaca: the arm may need raising before NINA connects.

  3. Shoot dark flatshands off · about 4 minbeing tested

    Turn the screen off and leave everything where it is. Filter wheel back to Dark.

    • 30 dark flats at the flats' exposure
  4. Switch to the wide cameraby hand · about 12 min

    Close the arm, cover the lenses with your solar filter cover, and put a dark cloth or a box over the whole scope: the cover alone lets light through, and the Dark filter sits only in front of the telephoto. Connect the wide camera in NINA.

    • 20 bias at the shortest exposure
    • 20 darks at 10 s
    • 3 darks each at 20, 40 and 60 s

    The wide camera stops at 60 s and reports no temperature. NINA writes the telephoto's filter into its headers; ignore that.

Finish · steps 9–10
  1. Zip the folderon the computer

    One zip per session: about 3 GB of raw FITS on an S30 Pro. Don't calibrate or stack them first.

  2. Keep your zip for nowlater

    Sending it to us comes with the helper app planned.

S30 and S50: untested. On an S30, follow the same steps; its main camera is an IMX662 and the app shoots at gain 200. On an S50, shoot the whole telephoto set twice, at gain 80 and at gain 200 (its subs come at both); it has no wide camera. If the filter wheel has no Dark position, cap the lens instead. Times are estimates, not yet clocked on a full run.

The whole frame plan in one table
FramesCountExposureAbout
Telephoto camera
Bias20shortest (0.00003 s)1 min
Darks2010 s, like the app's subs5 min
Dark ladder93 each at 30, 60, 120 s11 min
Flats30mean near 35 % of full scale4 min
Flat pairs2010 levels × 2, 5 to 80 %8 min
Dark flats30the flats' exposure4 min
Wide camera
Bias20shortest1 min
Darks2010 s5 min
Dark ladder93 each at 20, 40, 60 s6 min
Total178gain 200; about 3 GB45 min
What each kind of frame tells you
FramesWhat they measure
BiasThe pedestal, read noise, the converter's step size, and frame-to-frame steps in the black level
Darks at 10 sA map of hot pixels, and the dark signal at tonight's temperature
Dark ladderDark current, from how the noise grows with exposure, and how the black-level clamp hides it
Flat pairsGain in electrons per ADU, so read noise in electrons and the full well
FlatsVignetting, dust, and each pixel's own response
4 · What the Seestar doesThe app scales the colors and swaps out hot pixels before you see a frame.

Your Seestar does a lot to each frame before you ever see it. On my S30 Pro (firmware 8.46) I compared frames the app saved with frames I pulled straight off the sensor over Alpaca, the standard network interface that desktop astronomy programs use (see the guide). The app scales red by about 1.7 and blue by about 1.84, and it swaps out hot pixels: a 10-second dark over Alpaca has about 24,000 of them, and an app sub has almost none measured.

The app also has its own calibration settings: Flat Shoot (since app 2.5) and Dark Calibration (since app 3.3.0 on the S30 Pro) stated. What I don't know yet is whether they change the subs the app saves, or only the live stack you watch on your phone. ZWO's own notes disagree, and the files don't say. I'm testing it.

Either way, darks you shoot yourself can't help subs the app saved. Those subs have had their colors scaled and their hot pixels swapped before you ever see them, so your darks no longer match them.

Sensor (IMX585)light → electrons Analog to digital12-bit, written ×16 (16 ADU steps) Black-level clampcreeps up, steps back 8 ADU The Seestar appsaves the sub Alpaca, via NINAskips the app Red ×≈1.7, blue ×≈1.84measured Hot pixels replacedmeasured Dark Calibrationapp 3.3.0 and lateron saved subs? untested Flat Shootapp 2.5 and lateron saved subs? untested FITS subwhat you upload FITS framethe sensor's own numbers no color scaling hot pixels kept no dark taken off green on a plain 16 ADU grid measured measured on my S30 Pro stated by ZWO, not tested
Figure 2. One sensor, two routes. Everything solid was measured on one unit: my S30 Pro, firmware 8.46, app 3.3.2, one desk session plus my app subs measured. The clamp and its 8 ADU steps show up on both routes; the app only scales them by color. Why the clamp steps the way it does is my reading of the data inferred. The app route's red and blue scaling shows as uneven steps between pixel values (R/G ≈ 1.71, B/G ≈ 1.84). The dashed boxes are features ZWO's app notes announce stated: Flat Shoot arrived in app 2.5 (May 2025) and Dark Calibration for the S30 Pro in app 3.3.0 (for the S30 and S50 in 3.3.1, off by default). Nobody has tested whether either one reaches the subs the app saves, or only its own live stack. ZWO's notes conflict: one FAQ says the S30 Pro doesn't dark-calibrate its saved files at all. The subs' headers don't say either way.
5 · Still openSix questions I haven't answered yet, kept current.
  • Whether Flat Shoot and Dark Calibration reach the subs the app saves, on any model. I'm testing it now.
  • Flats over Alpaca, and whether the arm must be raised first.
  • Darks colder than 28.5 °C. My darks say dark current doubles every 4.3 °C; the noise model says 5.8 °C.
  • Any S30 or S50 over Alpaca. Everything over Alpaca so far is one S30 Pro on firmware 8.46.
  • Which header fields tell an app frame from an Alpaca frame.
  • Synthetic masters in the SkyCruncher app: designed in outline, not built.
6 · SourcesWhere every number on this page comes from.

Every number measured over Alpaca comes from one Seestar S30 Pro (firmware 8.46, app 3.3.2, Alpaca server 1.2.0-3). This page says what I measured on my unit, not what ZWO's firmware does in general.

  • Bias pedestal, read noise, dark current and its doubling, hot pixels, the light-tight Dark filter, the clamp: bias and dark frames I shot over Alpaca at my desk on September 29, 2026 (read noise 17.2 ADU, about 1.05 e⁻ at the conversion gain the two bench sessions of October 9 and 13 measured, about 0.06 e⁻/ADU; dark current 0.33 to 0.62 e⁻/s at 29.3 to 33.2 °C; 23,988 hot pixels in a 10 s dark at 29.7 °C) measured.
  • Red and blue scaling: the spacing of pixel values in my app subs, IRCUT and light-pollution filters pooled (R/G ≈ 1.71, B/G ≈ 1.84) measured.
  • What Alpaca frames skip: that desk session set against my app subs; one unit, one session measured.
  • Black-level creep and 8 ADU steps: my app subs and Alpaca frames measured; the mechanism inferred.
  • Hot pixels in app subs: 0 to 2 per pair of my app subs measured.
  • Flat Shoot and Dark Calibration versions: ZWO's Seestar app release notes on the App Store, and ZWO's tutorial Use Flat Shoot on Seestar stated.
  • Whether either reaches saved subs: unknown. ZWO's notes conflict; an undated ZWO FAQ answer says the S30 Pro doesn't dark-calibrate its FITS files stated. One S50 sub (firmware 5.97) carries no "flat applied" header measured.
  • Screen flicker (bands of 1.2 % at 0.04 s), the paper-over-lens setup, and a cover alone not being dark enough for the wide camera: flats and wide-camera darks I shot on my S30 Pro on October 9, 2026 measured.
  • Running a Seestar over Alpaca, the frame plan, the wide camera's 60 s limit, the app's Alpaca switch, and why a web page can't drive the scope: a live test on my S30 Pro on October 9, 2026 measured.
  • Sources for the deep dive (the pixel, the clip level, flat falloff, synthetic masters) are on How calibration works.
  • "Calibration frames are always nice to have, not need to have": a SkyCruncher engine design decision, September 11, 2026.