# Change log
# 4.4.0
# Python, MATLAB and LabVIEW
# Major Changes
- Requires MokuOS 4.4 and MokuCLI 4.4. Clients older than 4.4 can't connect to a Moku running MokuOS 4.4
- Instrument files now use the
.mokuinstformat instead of.bar. Download them withmokucli instrument download - Custom Instrument renamed to Moku Compile
platform_idrenamed tonum_slotsin Multi-Instrument Mode- Added Real-Time Math (Multi-Instrument Mode only)
# All Instruments
- Added
client_nameparam toclaim_ownershipand instrument constructors (default: the computer's hostname); shown to other users who try to take ownership of the Moku - Sample rate names now use Sa/s, e.g.
39.1MSa/sinstead of39.06MHz(FIR Filter Builder, Digital Filter Box, Phasemeter) and625MSa/sinstead of625Ms(Arbitrary Waveform Generator). Previous names are still accepted - Added
strictparam tostart_streaming
# Multi-Instrument Mode
- Renamed
platform_idtonum_slotsinMultiInstrument/MokuMultiInstrumentandplatform.platform_idis still accepted save_configurationnow saves the settings of each instrumentload_configurationnow deploys the instruments and returns them, one per slot- Added
bitstreamsparam to provide the instrument files for Moku Compile and GenInst slots
- Added
- Added
preload_configuration(REST API) - Added
open_drainparam toset_dio(Moku:Go) get_dioreturns the open drain setting of each pin
# Real-Time Math
- Added
RealTimeMath(Python) andMokuRealTimeMath(MATLAB) support - Added
set_node,set_output_limit,get_output_limit,enable_output,set_defaults,save_settings,load_settingsandsummaryfunctions
# Moku Compile
- Added
MokuCompileandMokuCompilePlus(Moku:Pro and Moku:Delta) - Deprecated
CustomInstrumentandCustomInstrumentPlus, replaced byMokuCompileandMokuCompilePlus
# Gigabit Streamer and Gigabit Streamer+
- Added
set_incoming_packetsfunction to set the endianness and flow control of incoming packets - Added
endiannessparam toset_outgoing_packets(default:LittleEndian) - Gigabit Streamer+ supports six inputs (Moku:Delta)
# Phasemeter
- Added
acquisition_rateparam tostart_loggingandstart_streaming; deprecatedacquisition_speed - Added
averaging_timeparam toget_data - Deprecated
set_acquisition_speedandget_acquisition_speed - Deprecated
get_auto_acquired_frequency; usesetpoint_frequencyinget_datainstead
# Digital Filter Box, FIR Filter Builder, PID Controller
input_gain2inset_control_matrixis now optional, and only required when the instrument has two inputs
# Logic Analyzer Pattern Generator
- Added
driveparam toset_pin_mode(PushPullorOpenDrainon Moku:Go) get_analog_modereturns thehighandlowthreshold voltages
# Laser Lock Box
- Renamed
digitalGaintodigital_gaininset_digital_input_gain set_monitorusesDemodfor the demodulation signalsource, matching the response.LocalOscillatoris still accepted
# Lock-in Amplifier
slopevalues inset_filterare now6dB,12dB,18dBand24dB. Previous names (e.g.Slope6dB) are still accepted
# Bug fixes
- PID Controller, Lock-in Amplifier and Laser Lock Box:
set_by_frequencynow sets the expected values when the proportional gain is off. The crossover frequencies are then the unity gain frequencies - Digital Filter Box, FIR Filter Builder, Laser Lock Box, Lock-in Amplifier,
PID Controller: triggered
start_streaming
# Python
- Faster API calls
- Requires Python 3.11 or later
- Instrument constructor arguments after
ipare keyword-only inMultiInstrument slotdefaults to1; removedfor_slot- Gigabit Streamer:
modeis required instart_sending, and the other params are keyword-only - Arbitrary Waveform Generator:
generate_waveformparams are now orderedchannel,sample_rate,frequency,amplitude,lut_data, andfrequencyandamplitudeare required - Supports IPv6 link-local addresses
- Supports the
MOKU_DATA_PATHenvironment variable
# MATLAB
- Constructors accept optional arguments as name/value pairs, e.g.
MokuOscilloscope(ip, force_connect=true) - Added
read_timeoutoption (seconds) persist_statenow defaults tofalseset_instrumentalso accepts the single.mokuinstfile for the slotget_chunkworks afterstop_streaming; addedwait_for_stream_to_file- Logic Analyzer:
highandlowinset_analog_modeare optional - Datalogger: added
set_defaults - Logic Analyzer: added
set_can_decoderandset_parallel_bus_decoder - Logic Analyzer:
pinsinset_triggeris deprecated and no longer required; usesourcesinstead
# LabVIEW changes
- Datalogger: added
set_defaults;generate_waveformsupports Square, Pulse, DC, Noise and Triangle waveforms - Laser Lock Box: added
Demodoption tosourceinset_monitor - Lock-in Amplifier:
rangeoptions inset_polar_modedepend on the hardware - Frequency Response Analyzer: added defaults to
set_sweep - Moku Compile:
set_interpolationandget_interpolationhave no effect input_gain2inset_control_matrixdefaults to0
# 4.3.0
# Python
- Added GenInst support
# MATLAB
- Added GenInst support
- Custom Instrument and GenInst support both
.barfile and unzipped.tarfile bitstream formats
# LabVIEW changes
- Added GenInst support
- Added Moku:Delta support for all instruments
# 4.2.2
# Python and MATLAB
# Bug fixes
- Trigger level parameters now default to
None; uses hardware threshold voltage when source isExternal, otherwise 0 Vlevelinset_trigger(Digital Filter Box, FIR Filter Box, Laser Lock Box, Lock-in Amplifier, Oscilloscope, PID Controller)trigger_levelinburst_modulate(Arbitrary Waveform Generator)thresholdinstart_sending(Gigabit Streamer)thresholdinset_event_detector(Time & Frequency Analyzer)trigger_levelinset_sweep_modeandset_burst_mode(Waveform Generator)
- Laser Lock Box
signalandoutputinset_outputnow default toNone
# LabVIEW changes
- Supports MokuOS 4.2.1
- Bug fixes
- No new features added
# 4.2.1
# Python and MATLAB
# All Instruments
- Added
6GHzto bandwidth ofset_frontendfor Moku:Delta - Moku:Delta supports 5-slot Multi-Instrument Mode
# Custom Instrument+
- Added CustomInstrumentPlus support
# Multi-Instrument Mode
- Add
portparameter to MIMset_dioclients
# Lock-in Amplifier, PID Controller, Digital Filter Box , FIR Filter Box, Laser Lock Box
- Added
set_interpolationfunction to embedded oscilloscopes - Added
get_interpolationfunction to embedded oscilloscopes
# Logic Analyzer Pattern Generator
- Added
set_usb_decoderfunction - Changed notation from one-indexed pins to zero-indexed bits (Python SPI
and CAN decoders)
[0, 15]
# Gigabit Streamer and Gigabit Streamer+
start_sendingchanges- Added
modeparam (default:Manual) - Changed
durationdefault to0 - Added
control_channelparam (default:None) - Added
thresholdparam (default:0) - Removed
trigger_sourceparam, replaced bycontrol_channel - Removed
trigger_levelparam, replaced bythreshold
- Added
- Added
reset_receive_statusfunction - Added gated sending functionality
- Show warning in Gigabit Streamer when invalid packets received
- Rename
reset_receive_counterstoreset_receive_status
# Bug fixes
- Setting
gain_rangetoNoneinenable_outputin Digital Filter Box and FIR Filter Box - Fix for values being given as integers in responses
- Fix for setting and disabling blended clocks
- Fix for configuration file upload limit
- Arbitrary Waveform Generator
- Enable Arbitrary Waveform Generator and Waveform Generator to set
sampling rate up to
2.5GSaand5GSa - Set
sample_ratetoAutoin Arbitrary Waveform Generatorgenerate_waveform
- Enable Arbitrary Waveform Generator and Waveform Generator to set
sampling rate up to
- PID Controller
- Enable validation in
enable_input - Section validation in
set_by_gain_and_section
- Enable validation in
- Lock-in Amplifier
- Handle setting
aux_outputtonone - Setting
main_gain_range,aux_gain_rangetoNoneinset_gain
- Handle setting
- Laser Lock Box
- Setting
gain_rangetoNoneinset_output - Changed
sourcedefault toProbeAinset_trigger - Removed invalid channels from source in
set_trigger - Removed
output_rangefromdump_state
- Setting
# LabVIEW changes
- Supports MokuOS 4.2.1
- Bug fixes
- No new features added
# 4.1.2
# Python and MATLAB
# All Instruments
- Improve error messages
- For file responses, ensure
locationkey returnstmpfor Moku:Lab
# Gigabit Streamer and Gigabit Streamer+
- Added
reset_receive_countersfunction
# Logic Analyzer Pattern Generator
- Bug fix to update state
# Laser Lock Box
- Added
Externaloption tosourceparam inset_trigger
# LabVIEW changes
- Supports MokuOS 4.1.2
- Bug fixes
- No new features added
# 4.1.1
# Python and MATLAB
# All Instruments
- Added
GigabitStreamersupport (Moku:Delta only) - Added
GigabitStreamerPlussupport (Moku:Delta only) - Deprecated
CustomCompile, replaced byCustomInstrument - Added
CustomInstrumentPlussupport - Moku:Go and Moku:Lab support 3-slot Multi-Instrument Mode
- Added
force_deploytoclaim_ownership(default:False) - Error code handling improvements
- Added
bandwidthparam toset_frontend(default:None, settable on Pro directly, indirectly on Delta through MIM frontend)- e.g. configure Moku:Pro
bandwidthto 600 MHz to increase the maximum frequency of the SA and PM to 600 MHz
- e.g. configure Moku:Pro
# Custom Instrument
- Added
get_statusfunction
# Time & Frequency Analyzer
- Added
typeparam toset_histogram(default:Interval, addedG2correlation) - Added
set_interval_policy/get_interval_policy
# Spectrum Analyzer
- Two input channels in Multi-Instrument Mode (expanded from previous slot limits)
# Neural Network
- Added
NeuralNetworksupport to Moku:Go and Moku:Lab (3-slot only)
# LabVIEW changes
- Supports MokuOS 4.1.1
- Bug fixes
- No new features added
# 4.0.3
# Python and MATLAB
# All Instruments
- Add missing requirements,
zeroconfandpackaging, back to pyproject.toml - More logging for HTTP error messages <!-- ```python print(response.dict)
# REPLACE
# Log the full response details for debugging
logger.debug(f"HTTP error response: {response.dict}") ```python -->
- Replace
mokucli updateformokucli feature installin error message - Fix
post_datafor empty attempts - Added
save_settingsfunction - Added
load_settingsfunction
# Multi-Instrument Mode
- Added
save_configurationfunction - Added
load_configurationfunction
# LabVIEW changes
- Supports MokuOS 4.0.3
- Bug fixes
- No new features added
# 4.0.1
# Python and MATLAB
# Major Changes
- MokuCLI is now required for all API connections
- MokuOS refers to versions across all software platforms
- Structure for instrument bitstreams is now global for all API
- MokuCLI required min version bumped to 4.0.1
- MATLAB
moku_download(fw)removed, replaced by MokuCLI:mokucli download instrument <MokuOS_version>
# All Instruments
- Added
Moku:Deltasupport - Bumped proxy version to 2.0 for 4.0.1
- Added debug logging capabilities for Python
describenow returnsmokuOSinstead offirmwareattenuationno longer a required parameter in MATLABset_frontend, moved tokwargs- Deprecated
firmware_versionfunction; replaced bymokuos_version - Removed several deprecated helpers and adjusted lifecycle methods
# Streaming
- Removed
moku_cli_streaming_compat, replaced byfrom moku import version - Stopped trimming error output from mokucli stream
- Removed
_get_compatible_cli_version<!--
# MATLAB
- checksums are no longer in the
data/<hardware>/folder, replaced by MANIFEST in the .bar files - Various MATLAB-specific function replacements to use new utilities -->
# External Reference Clock
- Added
set_blended_clock/get_blended_clock(Moku:Delta)
# Arbitrary Waveform Generator and Waveform Generator
- Added
set_frontendandmanual_trigger
# Digital Filter Box, FIR Filter Box, Laser Lock Box, Lock-in Amplifier, PID Controller, Multi-Instrument Mode
- Added
attenuationandgainparams toset_frontend
# Oscilloscope and Embedded Oscilloscope
- Trigger
type,level,edge,polarityenhancements
# Data Logger
- Added
sample_ratetostart_logging
# Embedded Data Logger
- Changed
ratedefaults forset_loggingandset_streamingtoNone
# Phasemeter
- Added
acquisition_speedoptions
# Laser Lock Box
- Added
set_digital_input_gain, removedstrictfromget_frontend
# Time & Frequency Analyzer
- Added
holdoffparam toset_event_detector
# Neural Network
- Restored
show_summaryparam toconstruct_model
# PID Controller
- Removed
rangefromset_frontend
# Multi-Instrument Mode
- Added
portargument toget_dio
# MCC
bitstreamargument now required for CloudCompile
# LabVIEW changes
- Supports MokuOS 4.0.1
- Bug fixes
- No new features added