Releases#
Warning
Do not power-cycle the cluster during a firmware upgrade. Updating from below firmware 1.0 may take longer than usual due to an upgrade of the operating system. If you encounter any issues, please reach out to our support team.
Note
With qblox_instruments 1.2, we introduced an automatic update procedure. This is the recommended way to update the cluster.
If the host PC has internet access, you can use
qblox-cfg <ip> update to automatically update to the most recent firmware version.
When updating from firmware <1.0, use
qblox-cfg <ip> update --auto-migrate to automatically migrate the operating system during the update.
2026.04.0#
Highlights#
LINQ-message based feedback#
Firmware 2.0 marks a major leap forward, fundamentally expanding what can be achieved with real-time control, feedback, and system integration. With a significant upgrade of our LINQ-based architecture, we are unlocking a new class of capabilities that were previously out of reach or required complex host-side orchestration. For the first time, users can easily exchange data (whether bits, full I/Q values, or precise time tags and more) between any sequencer in a cluster. This enables truly distributed, low-latency feedback loops across the system. Combined with a dedicated feedback queue and a much richer instruction set, the Q1 sequencer becomes significantly more expressive, making advanced real-time algorithms and custom compiler development far more accessible.
Explore the possibilities in the user guide!
Improved Q1 instruction set#
With firmware 2.0, we improved the instruction set and classical processing capabilities of our sequence processors. Among other changes, the update brings singed number support, multipliers, improved jump instructions and the ability to set and get register values from the host PC. All these changes are backwards compatible.
Real sequencer mode#
There are many use cases where it is necessary to combine modulated and unmodulated pulses on the same output. With real sequencer mode, available for QCM and QRM, this is now possible from a single sequencer - reducing complexity of the programs, and enabling more complex experiments.
Check it out in the user guide!
QSM module#
This release is not only about firmware. It is also accompanied by the introduction of the new QSM module, extending Qblox capabilities into high-performance DC control and measurement. With 8 I/O channels and integrated current and voltage sensing, it complements our RF platform and strengthens our position as a full-stack solution provider : from ultra-stable DC to high-frequency control up to 18.5 GHz.
Check it out in the user guide!
Firmware - 2.0.0#
New features#
Add LINQ-based feedback
Support
0as thedurationof q1asm instructions for indefinite wait times in real-time executionAdd support for the QSM
Added support for Real Sequencer Mode in QCM and QRM
Add is_dc_cluster and bp_serial_number field to *DESCribe? command
Add support for int16_t encoding for wave/weight upload, improving upload speeds
Fixes#
The Q1asm instruction
asrnow does an arithmetic bit shift instead of a logical bit shiftFixed:
Cluster.reset()was slow if a QRC is present.Fixed: It is no longer necessary to reset the cluster when changing the reference clock with a QRC present.
Qblox Instruments - 1.2.1#
Compatible with all device firmware versions >= 0.13.0, <3.0.0.
New features#
Add
--auto-migrateflag used with firmware packages >=1.0 to automatically migrate modules on firmware versions <1.0.Expose the Real Sequencer Mode via the QCoDeS parameter
real_mode_en, defined on QRM and QCM sequencers. When this mode is enabled, path 0 is simply amplitude-modulated with the NCO, while path 1 bypasses the NCO and is summed with path 0 after modulation. The combined path is usable as the I path in the channel map, while the Q path is not used.Add
Cluster.get_sequencer_registers,Cluster.set_sequencer_registers,Sequencer.get_register,Sequencer.get_registers,Sequencer.set_register,Sequencer.set_registers, which allow the user to set and get register values of the Q1 processor. Note that the sequencers must be stopped (Sequencer.stop_sequencer()) when using these functions. This feature is only supported for clusters running firmware v2.0.0 and higher.Add
is_dc_clusterandbp_serial_numberinfo toqblox-cfg describe.Increase cluster firmware update timeout from 240 to 480 seconds to accommodate complex module configurations.
Handle empty responses during firmware update polling; now raises a descriptive
ConnectionErrorwith recovery steps if a module becomes unresponsive.
Fixes - 1.2.0#
In Cluster objects with a dummy connection,
io_channel.get_scope_data()on a QTM IO channel will now return a mock value of the correct type.Fixed outdated parameter values incorrectly persisting after automatic mixer calibration.
Fixed Error when connecting to a cluster containing only a CMM and no other modules.
Fixes - 1.2.1#
Automatic migration update no longer fails due to incorrect firmware compatibility checks.
Known issues#
Sequencer.real_mode_en()is not set back toFalsebyCluster.reset(). Workaround: Disable real sequencer mode explicitly withSequencer.real_mode_en(False).
Qblox Scheduler - 1.0.0b4#
New features#
Add the Callback experiment step, which allows you to schedule an arbitrary callback function.
Operations on ports associated with a real_output channel now allow complex-valued pulses. The real (or path 0) value is modulated as usual, but the imaginary (or path 1) value is not modulated, and summed with the real value after the NCO stage.
Support loading hardware configuration in YAML format through HardwareAgent
Add support for plotting marker pulses in both mpl and plotly pulse diagrams.
Re-export many more functions and classes in the package top-level init.py file. You can now access everything via a single import:
import qblox_scheduler as qs schedule = qs.Schedule("example") schedule.add(qs.Measure("q0"))
Let the
HardwareAgentcreate clusters with a dummy configuration (mocking the connection to a physical cluster) when not specifying the ip address in the hardware configuration, or when passing the argumentcreate_dummy_connection=True.Added support for conditional operations with the
ThresholdedTriggerCountacquisition protocol.
Deprecations#
Use of
ampandgainas pulse parameters in favor ofamplitude.It is advised for acquisitions not to use
AVERAGE,SUMbin modes (except trace acquisitions), and instead useAVERAGE_APPENDwhich is compatible, and has even more features.Removed the
TimeableSchedulere-export in the package top-level init.py file.
Fixes#
Attempt to
connect_clusters()before compiling a schedule inHardwareAgent.Schedule.compilenow correctly compiles and returns that lastTimeableSchedulein a near-time Schedule.Fix
long_chirp_pulse, so that the last part has the correct frequency range, if the total duration is not divisible by the part duration.Add a
min_durationparameter toPulseCompensation, so that the backend can handle cases where the pulse to be compensated already has an integration value close to zero.Pin the
qcodesdependency to versions<0.57, as versions>=0.57removeqcodes.utils.helpers.
Documentation#
Added five new application examples for semiconductor spin qubits
Improved the application examples for color centers
Extended pulse output plotting and data visualization options.
Streamlined and improved explanations throughout the application examples for better user experience.
Improved tutorials and user guide for the QTM.
Added tutorials for the QSM.
2025.12.1#
Qblox Instruments - 1.1.1#
Compatible with all device firmware versions >= 0.13.0, <2.0.0.
Fixes#
Make SCPI commands discoverable by the Cluster class (e.g.
get_system_error,get_num_system_error,check_error_queue,clear_error_queue,identify, and allget_xxx_temperaturecommands).
Qblox Scheduler - 1.0.0b3#
Fixes#
Fix
PulseCompensationsuch that it correctly handles parameterized loops, when compensating for the whole loop.Specifying only a
complex_input_channelnow also sets the NCO frequency.
2025.12.0#
New hardware#
We released the QRC module, a high density, calibration free module with 6 oputputs and 2 inputs, covering the frequency range 0.1-10 GHz. Check it out in the user guide!
Firmware - 1.0.0#
We upgraded the operating system running on qblox hardware to a custom linux distribution, ensuring long term software stability, scalability and a better upgrade procedure going forward.
Breaking changes#
Improved
Cluster.reset()Breaking: reset no longer includes clock-related changes (reference source change, LO PLL initialization, and AFE DAC calibration). This change allows to keep a fixed phase between different RF modules, even across resets.
New: Added private UI
_hardware_resetthat includes reset and all clock reinitializationThe reset procedure is now significantly faster.
New features#
IDN now reports new SCPI compatibility version for both cfg_man and application in the
cfgManSCPIVersionandswSCPIVersionfields respectively, in the form of<major>.<minor>. Incompatible changes in the SCPI interface will result in a bump to the major version, backwards-compatible additions will result in a bump to the minor version.
Fixes#
Fixed edge case where it was not possible to connect to an empty cluster.
Fixed the default value of
out_amp_offsetfor QCM/QRM-RF to match actual hardware defaults.
Known issues#
If a QRC is present,
Cluster.reset()must be called after switching the reference clock source withCluster.reference_source().
Qblox Instruments - 1.1.0#
Compatible with all device firmware versions >= 0.13.0, <2.0.0.
New features#
Extend support for additional firmware versions. As of v1.1.0, qblox-instruments versions are no longer strictly tied to cluster firmware versions. You may now independently update qblox-instruments to >=1.1.0 and cluster firmware to >=0.13.0 without breaking code or experiments. Access to new features will still require updating one or both.
Add support for our new quantum readout & control module (the QRC)
qblox-cfgcan now retrieve the mac address of the cluster viaqblox-cfg describeAdd a
--timeoutflag toqblox-cfgto allow configurable timeout durations. The default is set to 60 seconds.Add a
--skip-version-checkflag toqblox-cfg <ip> updateto skip version compatibility checks between modules and update package. This may be used on modules that run non-standard or early-release builds.
Fixes#
Allow to install qblox-instruments using poetry.
Qblox Scheduler - 1.0.0b2#
New features#
Add
Schedule.repeat()method for repetitions without need for variables.Implement merging of subsequent Rz gates to allow experiments with multiple RZ gates in a row without inserting wait times.
Add automatic RF output switching if
rf_output_onhardware option is set to"auto".Improve
arangeAPI to match Python and numpy’s.Return empty dataset instead of
Nonewhen no experiment data is available.Raise acquisition bin limits. Limit is computed per module instead of per sequencer.
Make
DType,arange, andlinspaceavailable for import fromqblox_scheduler.operations.Add
get_unitmethod to submodules to retrieve the unit of a given parameter.Raise error during compilation and warning during plotting, when the amplitude or gain of a waveform exceeds the maximum allowed amplitude or gain.
Add progress bar when hybrid loops are executed.
Include a warning about slowness when calling the
to_yamlandfrom_yamlmethods ofqblox_schedulermodels.
Breaking changes#
Remove the
StitchedPulseclass.
Fixes#
Fix issue preventing to load a serialized
QuantumDevice.Allow YAML serialization of custom
DeviceElementandEdge.Allow
SSBIntegrationComplexand trigger count acquisition protocols to work on the same sequencer.Pass all instrument types other than
Clusterin the hardware configuration toHardwareAgent.Hold the latest compiled
TimeableScheduleinHardwareAgent.latest_compiled_schedulewhen running hybrid loops.
Documentation#
Add multiplexing and NCO tutorials for the QRM-RF
Add a full suite of tutorials for the QRC.
Fixed broken links.
2025.10.2#
Qblox Instruments - 1.0.3#
Compatible with device firmware 0.13.0.
Fixes#
Modules no longer report qcodes parameters and methods that belong to other modules.
2025.10.1#
Qblox Instruments - 1.0.2#
Compatible with device firmware 0.13.0.
Fixes#
Correctly handle .zip files when updating firmware
Fix a
KeyErrorthat was sometimes raised onCluster.get_system_status()shortly after booting by adding a missingINITIALIZEflagFix
RecursionErrorunintentionally being raised under certain circumstances with python 3.10 and below
2025.10.0#
New hardware#
We released the DC Cluster mainframe, a ground-loop-free, low-noise mainframe enabling ultra-stable, high-resolution DC sourcing and precision measurement. Check it out in the user guide!
Documentation overhaul#
We significantly overhauled the documentation. Some highlights:
Many more applications, including a significantly expanded library for spin qubits
The hardware description pages are now much easier to navigate
We significantly improved explanations for the Q1 sequence processor and the Q1ASM language
Python Support#
The minimum supported Python version has been raised to 3.10. Kindly verify that your installed Python version is 3.10 or above.
Qblox Scheduler - 1.0.0-beta1#
We are proud to announce Qblox Scheduler, our new high level package for Qblox hardware. It features greatly improved usability and syntax, the ability to run loops directly inside the Qblox Cluster and many more. It is currently available as a public beta. Check out the applications section to see it in action, and the user guide for the full details.
Firmware - 0.13.0#
New features#
The acquisition memory is increased by more than 20x for QRM, QRM-RF, QTM to 3,000,000 bins for the module (previously 131,071).
Breaking changes#
Stopping the Q1 before RT_EXEC started now triggers the Q1_STOPPED state instead of STOPPED
Fixes#
Fixed automatic mixer calibration sporadically failing
Sequencer status can no longer reach STOPPED state without the RT_EXEC starting or finishing
Sequencers with no configured acquisitions no longer return the acq_config of sequencer 0
Sequencers without acq no longer try to toggle the irq mask of avg_binning_done
Disabled unused LINQ PHYs to reduce the noise
Qblox Instruments - 1.0.0#
Compatible with device firmware 0.13.0.
Erratum
The release notes previously listed firmware 0.12.1 as compatible. This was incorrect.
New features#
Performance improvements
Significantly improve performance of acquisition retrieval
Add
Sequencer.update_sequencemethod to send partial updates to a previously set sequence. This can drastically reduce experiment runtime.Add option
as_numpytoCluster.get_waveforms, Cluster.get_weights, Cluster.get_acquisitionsto return data as NumPy arrays instead of Python lists. Passingas_numpy=Truecan reduce experiment runtime
Quality of life
Download and install the latest Cluster firmware when running
qblox-cfg <ip> updatewithout specifying a firmware fileImprove readability of
print_readable_snapshotby increasing spacingImprove
Module.__repr__to display a human-readable string when printing a module directly or withCluster.get_connected_modules()
Other changes
Return a warning when a Cluster has an invalid serial number when running
qblox-pnp listAdd option
epochto the acceptedio_channel.binned_acq_time_refQCoDeS parameter set valuesAdd
Module.toggle_all_lo methodto toggle all local oscillators on the module
Fixes#
Resolve an issue that caused firmware updates to fail on some Clusters running 0.9.x firmware
Allow non-ascii characters as comments in Q1ASM programs
Allow connecting to a Cluster without any modules present
Ensure that connected and present QCoDeS parameters always return a consistent value in snapshots, without sending unnecessary SCPI commands
Register unknown system status flags as
UNKNOWN
Older releases#
You can find older releases in this document.