SLS Detector Package Major Release 9.0.0 released on 26.11.2024 =============================================================== This document describes the differences between v9.0.0 and v8.0.2 CONTENTS -------- 1 Compilation Changes 2 New or Changed Features 2.1 Breaking API 2.2 Resolved or Changed Features 2.3 New Features 3 On-board Detector Server Compatibility 4 Firmware Requirements 5 Kernel Requirements 6 Download, Documentation & Support 2 Compilation Changes ===================== * Python version Minimum python version is changed from 3.6 to 3.8 * Pybind11 version In-built version and the one picked up from github updated from v2.11.0 to v2.13.6 * Python lib versioning slsdet.__version__ now returns the package release version. * Python version in conda build Added python 3.13 also to conda build 2 New, Changed or Resolved Features ===================================== 2.1 Breaking API ================== Receiver -------- * Receiver callbacks Brought much more metadata to receiver callbacks to construct the image. Update MultiReceiverApp to reflect this change. * File path At start of acquisition or at rx_start command, the file path is only then verified if it exists and created if it does not. Client ------ * Removed receiver/publisher ZMQ IP Command line: rx_zmqip gives a warning and does nothing Python : rx_zmqip removed C++ API: get/setRxZmqIP removed Publisher zmq IP set to '0.0.0.0' or to listen on all interfaces. The publisher will determine which interface to stream out from based on the network route to the subscriber IP. Hence, receiver zmq IP is not required. * Write register, Set or Clear bit Validation for this advanced feature has been removed by default. One can force validation by using --validate in the command line or by setting the validate option in the API. ZMQ --- * Publisher socket constructor does not take an IP anymore. The details are above under 'Removed receiver/publisher ZMQ IP'. GUI/ Client Callback -------------------- * completeImage member in detectorData attribute now returns false only if any the sub images (from different udp ports) have completeImage set to false in the JSON header. This is set if therea are any missing packets for that udp port on slsReceiver/slsMultiReceiver. The different subimages are anyway not synchronized. This errs when there are different missing images across multiple UDP ports. The Gui does not show "complete image" in the status bar anymore. If any of the udp ports have missing packets for that current disaplayed image, then the "missing packets" will show in red in the status bar. Detector Server --------------- * [Mythen3] Only run clock can be set Clock 0 is now the run clock and the only one that can be set. The others are be read only. This affects the following commands: Command line or python API: clkdiv, clkfreq, clkphase, maxclkphaseshift C++ API: get/setClockDivider, getClockFrequency, get/setClockPhase, getMaxClockPhaseShift * [Jungfrau] Temperature Control Temperature control is enabled by default at on-board detector server startup. As before, the default temperature threshold is 65°C and crossing this value will set a temperature event. 2.2 Resolved or Changed Features ================================ Compilation ----------- * cmake_source_dir Fixed compilation error when using python and adding the slsDetectorPackage as a subfolder due to cmake source directory changing. Client ------ * Command line Code Generation The command line parsing code is now generated from a yaml file. This is transparent to the user. * Clearer error message about freeing shared memory. Detector Server --------------- * [Gotthard2] Chip reconfiguration - Powering off/on the chip will now switch off chip configuration property/ configure the chip every time. - Switching off high voltage from a non zero value will now wait 10s to return for safety reasons. - Powering off the chip requires high voltage to have been switched off prior. - Acquisition requires chip to have been configured prior. * [Gotthard2] Burst mode options restricted Burst mode external and continuous mode internal are not allowed to be set anymore as they are anyway not implemented. Receiver -------- * [Gotthard I] fixed header stripping fixing segfault. * Error or help message for invalid arguments to slsMultiReceiver. Simulator --------- * Refactored stop server to have better start up. * Fixed possible memory leak when taking non blocking acquisitions. * [Jungfrau] Valid gain values in data sent out. Previously, 2 was also sent out. ZMQ --- * Publiser socket constructor - enables keep alive socket options to send heartbeat messages to prevent discarded TCP flows if there is no packet for a longer period. - enables IPv6 interfaces * Prints specific error for ENOENT (endpoint does not exist) 2.3 New Features ================ Client ------ * Auto completion bash_autocomplete.sh or zsh_autocomplete.sh must be sourced from the main package folder to enable auto completion of commands and arguments for the command line on that shell. * sls_detector New executable that can be used instead of 'sls_detector_get' and 'sls_detector_put' for most commands. It will infer from the number of arguments, which executable (sls_detector_put or sls_detector_get) to use. For the rare commands that cannot be inferred from the number of arguments, it will complain accordingly. * [Jungfrau] Timing Info Decoder (Advanced configuration) Command line or python API: timing_info_decoder C++ API: get/setTimingInfoDecoder. Options: SWISSFEL (Default), SHINE * [Jungfrau] Collection Mode (Advanced configuration) Command line or python API: collectionmode C++ API: get/setCollectionMode. Options: ELECTRON, HOLE (Default) If chip v1.1, also configures the chip afterwards. * [Gotthard2] Next frame number 'Stop' in G2 25um is not synchronous and hence might trigger an extra set of frames in the slave module, resulting in the next acquiistion starting with inconsistent frame numbers between master and slave. Solved by setting next frame number to the larger value (max + 1) after a stop command. Requires a firmware update. Command line or python API: nextframenumber C++ API: get/setNextFrameNumber Can set/get the starting frame number for the next acquistion. * [Mythen3] Readout speed Command line, python API: readoutspeed. Options: full_speed (10MHz), half_speed (20MHz, default), quarter_speed (40MHz) C++ API: get/setReadoutSpeed Also affect: Command line, python API: readoutspeedlist C++ API: getReadoutSpeedList * Sleep Command line, python/ C++ API: sleep Client sleeps for required time. Advanced command mainly for firmware developers to use in config files. * Xilinx Chip Test Board added 2 On-board Detector Server Compatibility ========================================== Eiger 9.0.0 Jungfrau 9.0.0 Mythen3 9.0.0 Gotthard2 9.0.0 Gotthard 9.0.0 Moench 9.0.0 On-board Detector Server Upgrade -------------------------------- From v6.1.0 (without tftp): update only on-board detector server Using command 'updatedetectorserver' udpate both on-board detector server and firmware simultaneously Using command 'update' Instructions available at https://slsdetectorgroup.github.io/devdoc/serverupgrade.html 3 Firmware Requirements ======================== Eiger 02.10.2023 (v32) (updated in 7.0.3) Jungfrau 20.09.2023 (v1.5, HW v1.0) (updated in 8.0.0) 21.09.2023 (v2.5, HW v2.0) (updated in 8.0.0) Mythen3 13.11.2024 (v2.0) (updated in 9.0.0) Gotthard2 03.10.2024 (v1.0) (updated in 9.0.0) Moench 26.10.2023 (v2.0) (updated in 8.0.2) Gotthard 08.02.2018 (50um and 25um Master) 09.02.2018 (25 um Slave) Detector Upgrade ---------------- The following can be upgraded remotely: Eiger via bit files Jungfrau via command <.pof> Mythen3 via command <.rbf> Gotthard2 via command <.rbf> Moench via command <.pof> Gotthard cannot be upgraded remotely Except Eiger, upgrade Using command 'programfpga' or udpate both on-board detector server and firmware simultaneously Using command 'update' Instructions available at https://slsdetectorgroup.github.io/devdoc/firmware.html 4 Kernel Requirements ====================== Blackfin -------- Latest version: Fri Oct 29 00:00:00 2021 Older ones will work, but might have issues with programming firmware via the package. Nios ----- Compatible version: Mon May 10 18:00:21 CEST 2021 Kernel Upgrade --------------- Eiger via bit files Others via command Commands: udpatekernel, kernelversion Instructions available at https://slsdetectorgroup.github.io/devdoc/commandline.html https://slsdetectorgroup.github.io/devdoc/detector.html https://slsdetectorgroup.github.io/devdoc/pydetector.html 5 Download, Documentation & Support ==================================== Download -------- The Source Code: https://github.com/slsdetectorgroup/slsDetectorPackage Documentation ------------- Installation: https://slsdetectorgroup.github.io/devdoc/installation.html Quick Start Guide: https://slsdetectorgroup.github.io/devdoc/quick_start_guide.html Firmware Upgrade: https://slsdetectorgroup.github.io/devdoc/firmware.html Detector Server upgrade: https://slsdetectorgroup.github.io/devdoc/serverupgrade.html Detector Simulators: https://slsdetectorgroup.github.io/devdoc/virtualserver.html Consuming slsDetectorPackage: https://slsdetectorgroup.github.io/devdoc/consuming.html API Examples: https://github.com/slsdetectorgroup/api-examples Command Line Documentation: https://slsdetectorgroup.github.io/devdoc/commandline.html C++ API Documentation: https://slsdetectorgroup.github.io/devdoc/detector.html C++ API Example: https://slsdetectorgroup.github.io/devdoc/examples.html# Python API Documentation: https://slsdetectorgroup.github.io/devdoc/pygettingstarted.html Python API Example: https://slsdetectorgroup.github.io/devdoc/pyexamples.html Receivers (including custom receiver): https://slsdetectorgroup.github.io/devdoc/receivers.html https://slsdetectorgroup.github.io/devdoc/slsreceiver.html Detector UDP Header: https://slsdetectorgroup.github.io/devdoc/udpheader.html https://slsdetectorgroup.github.io/devdoc/udpdetspec.html slsReceiver Zmq Format: https://slsdetectorgroup.github.io/devdoc/slsreceiver.html#zmq-json-header-format TroubleShooting: https://slsdetectorgroup.github.io/devdoc/troubleshooting.html https://slsdetectorgroup.github.io/devdoc/troubleshooting.html#receiver-pc-tuning-options Further Documentation: https://www.psi.ch/en/detectors/documentation Info on Releases: https://www.psi.ch/en/detectors/software Support ------- dhanya.thattil@psi.ch erik.frojdh@psi.ch