-
Notifications
You must be signed in to change notification settings - Fork 3
Calibration and Backup
Caution
This is the most important page on the wiki. If you skip everything else, read this. Calibration data is per-unit — your radio's factory tuning is unique. Lose it without backup, and you have a radio that transmits off-frequency, mis-reports signal strength, and may exceed power limits.
- What is calibration?
- Why back up calibration first
- Making a backup
- Restoring calibration
- Diffing two calibration dumps
- Best-practice habits
The calibration region of EEPROM is a small (~512 bytes) area near the top of memory that contains values measured at the factory for this specific unit:
- Frequency calibration — the exact crystal offset that makes 145.000 MHz be 145.000 MHz
- TX power calibration — DAC values for each band/power-level combination so output power matches the label
- RX gain / S-meter calibration — analog gain and S-meter thresholds
- Squelch calibration — RSSI thresholds per band
These values are measured once at the Quansheng factory using lab equipment (signal generator, RF power meter). They cannot be re-derived without the same equipment. If you lose them and don't have a backup, the radio still works — but it transmits a few kHz off, the S-meter is wrong, and TX power can be significantly higher or lower than displayed (potentially out-of-spec).
Three scenarios where calibration can be lost or corrupted:
- Firmware flash — the calibration region is normally preserved across a flash, but a bad/interrupted flash, or a firmware that overwrites the wrong sectors, can destroy it.
- Bad EEPROM write — if you're scripting and accidentally write zeros to the calibration region.
- Hardware failure — rare, but the EEPROM cell can degrade.
Important
Habit to internalise: before any write or flash operation, dump the calibration to disk and store it somewhere durable (cloud, second machine, USB stick). It's a 5-second operation that has saved many radios.
- Open the Calibration tab.
- Click Read calibration. The region is fetched from the radio and shown as a hex view.
- Click Save calibration to file…. Default filename includes a timestamp:
calibration_<radio>_<timestamp>.bin. - Save it somewhere durable. Do this for every radio you own — calibration is per-unit, not per-model.
You should also save the full EEPROM image while you're at it (Dashboard → Read EEPROM → Save image). It contains the calibration plus everything else (channels, settings, etc.), giving you a complete restore point.
# Calibration only
python -m quansheng_toolkit dump-calibration -o calibration_$(date +%Y%m%d_%H%M%S).bin
# Full EEPROM (recommended)
python -m quansheng_toolkit read -o eeprom_$(date +%Y%m%d_%H%M%S).binTip
Name your backups with the radio's serial number (printed on the sticker under the battery): calibration_K5V3_SN12345_20260507.bin. If you have multiple radios of the same model, this is the only way to keep them straight after a year.
Warning
Restore only a calibration that came from this exact radio. No two radios share the same calibration — restoring another unit's calibration produces a radio that's worse than no calibration at all (you've replaced its factory tuning with one that was correct for a different physical unit). The toolkit's restore performs a byte-count and target-metadata check, but it cannot detect "wrong unit, same model".
- Open the Calibration tab.
- Click Load calibration from file…. The toolkit opens the file and shows a confirmation dialog with:
- File path
- Byte count
- Target model encoded in the file (e.g.
k5_v3) - Comparison against the live radio's target
- Confirm. The calibration is written and read back for verification.
python -m quansheng_toolkit restore-calibration --file calibration_K5V3_SN12345_20260507.bin --yes-i-understandThe --yes-i-understand flag is mandatory.
Useful for confirming a flash didn't touch calibration:
- Dump calibration before the flash →
cal_before.bin - Flash firmware
- Dump calibration after the flash →
cal_after.bin - In the toolkit: Calibration → Diff two files… → pick the two files
The toolkit shows a byte-by-byte diff. If anything changed, the affected regions are highlighted.
CLI equivalent:
python -m quansheng_toolkit diff-calibration --a cal_before.bin --b cal_after.binTip
The toolkit is fully offline — every operation works without an internet connection. Take advantage of that for backup hygiene: keep a USB stick with quansheng-toolkit.exe plus a folder of per-radio backups, and you have a complete portable maintenance kit you can carry to a hamfest or a remote site.
A short checklist that prevents most disasters:
- ✅ First-day ritual on a new radio: read full EEPROM + read calibration, save both with the serial number in the filename.
- ✅ Before any firmware flash: repeat the above. Every time. No exceptions.
- ✅ Before any "experimental" CSV import: save a full EEPROM backup. CSV imports are reversible but it's quicker to restore than to debug.
- ✅ After any firmware flash: dump calibration again and diff against the pre-flash dump. Should be byte-identical. If not, the flash damaged calibration — restore from backup immediately before doing anything else.
- ✅ Annually: re-export your channel CSV. If the radio dies, you need that file to set up a replacement.
Caution
If you restore a calibration backup and the radio still misbehaves, do not flash again trying to fix it. You've already exhausted the easy options. Open an issue with the diff between your pre-flash and post-flash calibration dumps; we may be able to identify what was corrupted.
Next: CLI Reference for headless and scripted workflows.
quansheng_toolkit · Apache-2.0 · Open-source desktop toolkit for Quansheng UV-K1, UV-K1(8) v3 Mini Kong and UV-K5 V3 radios · Fully offline.