Skip to content

Major Release: 9.0.0

Latest
Compare
Choose a tag to compare
@thattil thattil released this 26 Nov 14:35
1b41e39

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
-------

    [email protected]
    [email protected]