Changelog
2024-10-16
Firmware update v2.0.0 Beta2
With the release 2.0 of the Pulse Streamer 8/2 firmware, we will introduce the feature of continuous streaming. With the preliminary release 2.0.0 Beta2, you can use the new feature while the complete firmware release is finished. The API will not change for the official release, and the feature is fully backwards compatible with the former firmware versions.
API has been supplemented by the methods:
upload()
,start()
,isReadyForData()
Python v2.0.0 dev7 & Matlab v2.0.0.2
Support firmware v2.0.0 Beta2
New
split
method is added toSequence
class.Drop support for obsolete Python versions 2.7
2024-04-30
User interface v1.7.2
Additional information in a Tooltip for the current Pulse Streamer in MainWindow
Avoid duplicated devices with fallback IP detected via network scan
Debug mode for User Interface selectable in the start menu to enable logging
Fixed thread-safe logging
Fixed correct handling and reporting issues that arise while establishing a connection with the Pulse Streamer device
Matlab client v1.7.1
Fixed inconsistency between ClockSource enumeration naming and documentation. The change is backward-compatible
2023-06-01
Firmware update v1.7.2
This firmware brings updates of third-party components such as Linux kernel etc.
Increased upload performance
User interface v1.7.0
Fixed a rare bug that made Pulse Streamer Application fail when discovering devices
Fixed a rare bug that made Pulse Streamer Application fail when establishing a connection
Python v1.7.0 & Matlab v1.7.0 & LabView v1.7.0
Support firmware v1.7.x
2023-04-03
User interface v1.6.4
Added optional logging support
In case of failure, Pulse Streamer Application sends an error message to Swabian Instruments
Fixed bug in loading arbitrary data from CSV-file
2023-03-08
Python Client update v1.6.2
Fixed a bug that connection fails due to the post-release segment of Python package v1.6.1.post1
2023-02-27
User interface v1.6.3
Fixed a bug that Pulse Streamer Application fails to connect without an internet connection.
2023-02-16
User interface v1.6.2
Pulse Streamer Application shows proper messages in the case of an error and will controllably shut down.
Package and .NET Framework update
Python Client v1.6.1
Fixed a bug in the sequence creation process that, under some conditions, resulted in missing pulses of a sequence with pulses with a maximum duration value of a 32 Bit word.
Updated package dependency of package protobuf
Changed import of module matplotlib to optional
2022-10-05
Matlab Client update v1.6.2
Fixed a bug that, under some conditions, resulted in fixed pulse duration of ~4.2 s when the requested pulse duration was longer than ~2.1 s.
2022-05-02
Firmware update v1.6.3
Support hardware revision v3.3
2022-02-28
User interface v1.6.1
Pulse Streamer Application handles an incorrect setting of sequence parameters with warning
2021-12-20
Firmware update v1.6.2
This update overcomes the recommended maximum limit of the retrigger frequency and brings automatic check and repair of sd-card partitions during bootup.
No limitation of the trigger frequency except a fix retrigger dead-time (<50 ns)
solved: Very rare boot failure due to sd-card partition damages automatically handled by fsck-tools during bootup
solved: A sporadic case of missing firmware/hardware version information in Pulse Streamer discovery server information
solved: Incorrect handling of empty sequences and n_runs=0 in v1.6.0 (internal release only)
Clients
Python v1.6.0
Increased performance of sequence generation
solved: zoom-in/panning within the sequence plot window
Matlab v1.6.1 & LabView v1.6.1
Support firmware v1.6.2
2021-08-31
Firmware update v1.5.2
solved: Server-side JSON-RPC request-id handling
This release resolves the packet dependency (tinyrpc<=1.1.0) of the Python client
2021-08-23
Client update v1.5.2
Python
Fix packet version dependency: tinyrpc <=1.1.0 for Pulse Streamer 8/2 firmware <=1.5.1
2021-07-28
User interface v1.5.3
solved: Correct firmware v1.0.x identification via Pulse Streamer Application
2021-05-20
User interface v1.5.2
solved: Firmware v0.9 detection via Pulse Streamer Application
solved: Detection of non-licensed devices via Pulse Streamer Application
2021-03-12
Firmware update v1.5.1
solved: extraordinarily long pulse on analog channels of few devices during bootup with hardware version 3.1 and firmware version v1.5.0
User interface v1.5.1
solved: Pulse Streamer Application crashes when trying to update the firmware without an internet connection available
Firmware update can also be performed on a manually downloaded local updater file
Pulse Streamer Application brings the opportunity to reconnect to different devices without restarting the application.
2021-02-12
Firmware/Client update v1.5.0
This update brings an improved Pulse Streamer Application (GUI).
API has been supplemented by the methods:
reboot()
,setNetworkConfiguration()
,getNetworkConfiguration()
,applyNetworkConfiguration()
solved: rare error in case of a sequence with one sequence step, RLE-value <= 8ns and n_runs=INFINITE
Matlab and LabVIEW clients are now available from online repositories via Matlab Addon Explorer and JKI VI Package Manager, respectively.
User interface
Pulse Streamer Application makes use of the full API extensions since version v1.0.2
Pulse Streamer Application makes use of the device discovery functionality
Pulse Streamer Application provides functionality for network configuration
Pulse Streamer Application performs firmware update process
2020-11-12
Firmware/Client update v1.4.0
This update brings some functionality as output port enabling after power-cycling or automatic hardware version detection for the new hardware version v3.1 of the Pulse Streamer 8/2.
API has been supplemented by the methods:
getHardwareVersion()
,setSquareWave125MHz()
New trigger input stage leads to a typical TriggerToData of 65 ns (hardware version 3.1) respectively 60 ns (hardware version <= 2.3)
2020-08-17
Bug-fix in LabView client
Internal sequence data for binary protocol uses little-endian encoding compared to big-endian of the JSON-RPC. This resulted in incorrect signal generation with binary protocol enabled firmware versions.
In order to fix the problem, you have to update the LabView client to the latest version.
2020-07-27
Firmware/Client update v1.3.0
This update brings the opportunity to calibrate the analog outputs to increase its accuracy. Devices shipped with firmware version v1.3.0 or later come with calibrated outputs. Devices which has been shipped with a previous firmware version can manually be calibrated by the user with a dedicated method.
API has been supplemented by the methods:
setAnalogCalibration()
,getAnalogCalibration()
solved: sequences with sequence steps longer than ~0.5 µs and a number of sequence steps near to the maximum limit could raise std::bad_alloc()
2020-01-20
Firmware/Client update v1.2.0
This update brings new device discovery functionality that greatly simplifies finding and connecting to the Pulse Streamer. Moreover, new getter methods are added to form a more complete set of functions that allows you to set and query the device state. Existing functionality has also received an upgrade in performance. Now sequence upload happens 2x faster thanks to a new binary communication protocol that works along the JSON-RPC.
new network device discovery functionality,
findPulseStreamers()
sequence upload performance increased by factor two (requires both firmware and client interface update)
API has been supplemented by the methods:
setHostname()
,getHostname()
,getTriggerStart()
,getTriggerRearm()
,getClock()
recommended maximum external retrigger frequency increased to 1 kHz
minimum trigger pulse width reduced to < 2ns
TriggerToData increased to 64.5/65.5 ns (mean value, rms jitter 2.3 ns)
unified version numbers for the Pulse Streamer 8/2 firmware and the client interfaces that now share the first two numerals
2019-08-07
Firmware update v1.0.3
solved: at rare intervals occurring server crashes
solved: channel analog0 shows increased jitter (observed only on very few devices)
solved: extremely rarely missed internal trigger (sequence-dependent)
2019-05-10
Client update v1.1.2
Matlab
Bug-fix in the
PulseStreamer.debug.PulseStreamer_RPCLogger
class.PulseStreamer_RPCLogger
class now stores log-file snapshots on RPC errors.
2019-04-23
Clients update v1.1.1
Python: corrected overflow error for sequence durations above 4 seconds on some systems.
Python client is now available at www.pypi.org. You can now install it with
pip install pulsestreamer
.Matlab: minor code cleanup.
2019-03-01
Client API update v1.1.0
This update brings homogenized API for PulseStreamer clients in all supported languages. From now on, the signatures of all currently present functions and methods are frozen and will remain stable over the future minor updates and releases. In the future, we plan to add any new functionality in a backward-compatible way with no user code modifications required.
The API was slightly redesigned and homogenized in all supported languages.
The use of high-level clients is now a recommended way of programming and streaming the pulse sequences with the Pulse Streamer.
New methods
PulseStreamer.createSequence
andPulseStreamer.createOutputState
that create hardware specificSequence
andOutputState
objects.New method
PulseStreamer.getFPGAID
.New
OutputState
class for defining the state of Pulse Streamer outputs in some methods.New
OutputState.ZERO
constant.New named constant
PulseStreamer.REPEAT_INFINITELY = -1
for infinite sequence repetition.Sequence
object now applies padding to the pattern data and previous levels on concatenation.Renamed enum
TriggerMode
toTriggerRearm
, also renamed enumeration values.Renamed enumeration values in enums
TriggerStart
.Modified signature of the
PulseStreamer.getSerial()
method, which now has no input parameter and always returns hardware serial number.
Matlab
The client code is now distributed as a packaged Matlab Toolbox.
The PulseStreamer client is placed into its own namespace
PulseStreamer
in order to prevent possible collisions in function names. You can useimport PulseStreamer.*
to shorten the class names.Moved compatibility functions for FW v0.9 to
PulseStreamer.compat
sub-package.Sequence.setDigital
andSequence.setAnalog
allows for overwriting mapped pulse patterns even after concatenation or repetition.PulseStreamer.stream()
method now supportsSequence
object and[{duration,chan_list,a0,a1}; {...}]
cell array as input.Functionality of
PSSequenceBuilder
andPSSequence
classes is now combined and moved toSequence
class.Renamed
PSTriggerMode
toTriggerRearm
.Renamed
PSTriggerStart
toTriggerStart
.Renamed
PSSequence
toSequence
.Removed
PSSerial
enum.Sequence.plot
method plots the sequence data exactly as defined by the user without resampling to common time.Sequence
is completely decoupled fromPulseStreamer
class. UsePulseStreamer.createSequence()
method to create aSequence
object that does early channel number validation.Helper classes like
PulseStreamer_Dummy
andPulseStreamer_RPCLogger
located in a sub-packagePulseStreamer.debug
.Solved problem with multiple timers created on repeated script runs with long sequences. Only one timer can exist for a given device.
LabView
Pulse Streamer client code for LabView is now distributed as a VIPM package.
Functionality of
SequenceBuilder
andSequence
classes is now combined intoSequence
class.Added
Sequence:plot.vi
, which plots the pulse patterns according to user input with no resampling to common time.PulseStreamer:stream.vi
method is a polymorphic VI with wrappers to handle implementation VIs with dynamic inputs.PulseStreamer:stream.vi
supportsSequence
object, oldPulse
array, andRLEdata
cluster as inputs.Renamed
Digital Pattern.lvclass
toPulsePattern.lvclass
.Renamed
Analog Pattern.lvclass
toAnalogPattern.lvclass
.
Python
PulseStreamer client is distributed as wheel package
pulsestreamer
.PulseStreamer now uses standard
tinyrpc
package instead of previously used customized versiontinyrpc3.py
. Usepip install tinyrpc
to install the package, if missing.Some changes in parameter names. Please see Programming interface.
New
concatenate
,repeat
and`plot
methods are added toSequence
class.PulseStreamer client is organized into a python module with a cleaner layout.
PulseStreamer.stream
method acceptsSequence
object as input parameter directly.
2018-12-17
Firmware update v1.0.2
solved: occasionally missed external trigger
2018-11-09
Firmware update v1.0.1
API has been supplemented by method rearm() and forceFinal()
second permanent IP 169.254.8.2 added
network configuration file on user partition -> static IP can be configured via RPCs
login password changed
Clients
Python
adapted to new API
class Sequence added as handy sequence-builder
channel_map {‘ch0’:0, ‘ch1’:1…} no longer supported - use channel_list e.g. [0,1,3,7]
Matlab
adapted to new API
large changes in the way sequences are created and manipulated
new classes for sequence creation:
PSSequenceBuilder
andPSSequence
classes
P
andPH
are modified and labeled as deprecatedadded compatibility function
convert_PPH_to_PSSequence
that converts sequences created withP
orPH
objects intoPSSequence
added examples that show how to migrate old code to version 1.0
code examples completely reworked to reflect the new way of building sequences
LabView
adapted to new API
large changes in the way sequences are created and manipulated
new classes for sequence creation:
SequenceBuilder
andSequence
client code is now contained in a LabView library.
slightly modified and renamed classes for signal pattern creation
code examples completely reworked to reflect the new way of building sequences
2018-10-10
firmware update v1.0
underflows do not occur any more -> getUnderflow() returns 0 always
API changes (see API-migration-doc for details)
substantial changes in the embedded Linux-operation system
no network configuration file - only DHCP and fallback IP available
Clients
Python, Matlab and LabVIEW adapted to new API
2018-01-05
user interface
added a GUI to determine the IP address of the Pulse Streamer and to create simple pulses (beta release)
clients
improved Python client
2017-05-07
clients
added LabVIEW client
improved Matlab client
improved Python client
documentation
added ‘Getting Started’ section
2016-04-08
Matlab client
added links to the Matlab client examples
2016-03-17
static sequence beta 0.9
enums in RPCs
API name changes
rising and falling edges on external trigger
2016-03-07
provide network configuration
added section on network configuration
2016-03-03
static sequence alpha
initial, final, underflow states
software start
external trigger
rerun sequence
separate underflow flags for digital and analog
optional values in jRPC
2016-02-02
static sequence alpha