SLS Detector Package Major Release 8.0.0 released on 13.11.2023 =============================================================== This document describes the differences between v8.0.0 and v7.0.3 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 ===================== * Minimum CMake version changed from 3.12 to 3.14 * Internal zmq lib Building zmq from tar file in repo (libs/libzmq/libzmq-4.3.4.tar.gz), but added option (SLS_FETCH_ZMQ_FROM_GITHUB) to pull zmq version (v4.3.4) from github (https://github.com/zeromq/libzmq.git) * Internal pybind11 lib Building pybind11 from tar file in repo (libs/pybind11/v2.11.0.tar.gz), but added option (SLS_FETCH_PYBIND11_FROM_GITHUB) to pull pybind11 version (v2.11.0) from github (https://github.com/pybind/pybind11) 2 New, Changed or Resolved Features ===================================== 2.1 Breaking API ================== Firmware -------- * [Jungfrau] Status register and Sync mode fix The regiser bit definition changed and fixes for stable control in sync mode. Effect: Master and slaves give same status (previously master is sometimes 'idle' when acquisition is stopped), same #frames left and #nextframenumber. Also ERROR status connected, but never noticed to occur. For user, everything is transparent unless one touches status register using advanced commands. * [Moench] Status: Development mode Moench is now being made compatible with Jungfrau v2.0 readout boards. Hence, firmware and software is in development mode. 7.x.x will continue to have fixes for Moench until this version is deployed. * [Ctb] Fixes and features described later on. Client ====== * Datatype change of port numbers from int to uint16_t API: setVirtualDetectorServers, get/setRxPort, get/setControlPort, get/setStopPort, get/setDestinationUDPPort(2), get/setRxZmqPort, get/setClientZmqPort * [Eiger] versions, hardware version, febl/r firmware version Versions command modified to give more info about hardware version ['fx30', 'fx70'] and Febl/r firmware versions. Command line: versions (output modified), hardwareversion (added for Eiger) API added for Eiger: getHardwareVersion, getFrontEndFirmwareVersion Enums added: fpgaPosition {FRONT_LEFT, FRONT_RIGHT} * [Ctb] Voltage->Power name change Command line: voltagelist ->powerlist API: get/setVoltage -> get/setPower, get/setVoltageList -> get/setPowerList, getMeasuredVoltage -> getMeasuredPower 2.2 Resolved or Changed Features ================================ Detector Server --------------- * Set bit and clear bit validation Previously, validation expected all the other bits in the register to not change. Now, it only validates the selected bit. * [Jungfrau] Electron collection mode (bit 14 of 0x5D register) Affected Command line: setbit, clearbit, reg Affected API: setBit, clearBit, writeRegister Electron collection mode and requires chip reconfiguration. Temporary fix added that touching this bit will reconfigure chip if chip is v1.1 and powered on. Permanent fix by introducing a command for the same in future release. * [Ctb] Fixes - Patioctrl, patsetbit, patbitmask MSB (64 bit unsigned) could not be set as a value of -1 was interpreted as a 'get'. Fixed in server. - Allow dac tristate when v_limit is set. Fixed. - Changing fw bit from disable analog to enable analog - Allow adc enable for 1 GbE and 10GbE to be 0. - Slow ADCs previously misread (a high 5k+ value). Firmware updated and software adjusted now. - Allow non blocking acquire for 1GbE. Added Transmitting status when it might still be reading from fifo. - Clean memory before reading from fifo in 1GbE mode. Read fifo then RD strobe (corresponding firmware fix) fixes number of reads, but increases all pipelines by 1. - Fixed pattern viewer (auto legend buf without wait and loop), allow pyat files. (/patterngenerator) Simulator --------- * Unique TCP port for multiple simulators Checks include unique TCP port-hostname combo. Receiver -------- * Unique TCP port for multiple receivers 7.x.x already has automatically increasing TCP ports in shared memory for multiple receivers. Now, checks include unique TCP port-hostname combo. * [Ctb] Fixes - Readout mode updated 'rx_hostname' should configure the receiver with parameters from detector, but readout mode in receiver always configured at start up to Analog only. Fixed. - Incorrect image size in zmq header, which happens when dbit list is less than 64 bits. Fixed. - Rearranging digital data when dbit list less than 64 bits fixed. Client ------ * [Jungfrau][Mythen3][Gotthard2] Sync mode should have at least one master Multi module synced detectors should have at least one master when starting acquisition, else it will throw. Once master is done acquiring (blocking mode), status of all modules checked to ensure none of the slaves in waiting due to hardware issues such as cabling. 2.3 New Features ================ Client ------ * [Jungfrau] Pedestal mode Command line: pedestalmode API: get/setPedestalMode Example: pedestalmode 0 # turns off pedestal mode pedestalmode 50 10 # turns on pedestal mode (50 pedestal frames, 10 loops) In pedestal mode, number of frames/triggers is overwritten by '#pedestal_frames x #pedestal_loops x 2'. In auto timing mode or trigger mode with #frames > 1, #frames is overwritten with #triggers is 1. Otherwise, #triggers is overwritten with #frames is 1. In pedestal mode, one cannot set #frames, #triggers or timing mode (exception). Disabling pedestal mode will set back to normal mode with normal previous values of #frames and #triggers. * Source UDP IP: Auto Command line: udp_srcip, udp_srcip2 API: get/setSourceUDPIP(2) Allow 'auto' for udp_srcip to pick up IP from detector hostname. Not allowed for Gotthard1. * Custom row and column for detector UDP header Command line: row, column API: get/setRow, get/setColumn By default, row and column of module is determined in a pre-determined manner or by custom detector size (Command line: detsize). This is useful if user accesses row and column in multi- detector UDP header or for the GUI to rearrange for complete image. Option now added to set custom row and column. * [Ctb] Features - List for ADC, signal, power, slowadc Also allow their list to set names and to obtain their indices and values. Command line: dacname, dacindex, adclist, adcname, adcindex, signallist, signalname,signalindex, powerlist, powername, powerindex, powervalues, slowadclist, slowadcname, slowadcindex, slowadcvalues API: get/setDacName, getDacIndex, get/setAdcNames, getAdcIndex, get/setAdcName, get/setSignalNames, getSignalIndex, get/setSignalName, get/setPowerNames, getPowerIndex, get/setPowerName, getPowerList, get/setSlowADCNames, getSlowADCIndex, get/setSlowADCName, getSlowADCList - Added more modes for transceiver in read out mode. Allow to set number of samples and enable mask for transceiver. Command line: romode (more modes: 'transceiver', 'digital_transceiver'), tsamples, transceiverenable API: get/setTransceiverEnableMask, get/setNumberOfTransceiverSamples, get/setReadoutMode (more enums: TRANSCEIVER_ONLY, DIGITAL_AND_TRANSCEIVER) - Command to get file name with path of last pattern uploaded. Command line: patfname API: getPatterFileName * Automatic test script for all virtual simulators added. 2 On-board Detector Server Compatibility ========================================== Eiger 8.0.0 Jungfrau 8.0.0 Mythen3 8.0.0 Gotthard2 8.0.0 Gotthard 8.0.0 Moench 8.0.0 Ctb 8.0.0 On-board Detector Server Upgrade -------------------------------- From v6.1.0 (without tftp): Using command 'updatedetectorserver' From 5.0.0 (with tftp): Using command 'copydetectorserver' 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 24.01.2023 (v1.4) (updated in 7.0.0) Gotthard2 23.11.2022 (v0.3) (updated in 7.0.0) Gotthard 08.02.2018 (50um and 25um Master) 09.02.2018 (25 um Slave) Moench 10.07.2023 (v0.3.2) (updated in 8.0.0, under development) Ctb 28.08.2023 (v1.2) (updated in 8.0.0) 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> Ctb via command <.pof> Gotthard cannot be upgraded remotely Except Eiger, upgrade Using command 'programfpga' or udpate both 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