dxp Release Notes
See known problems for information on problems
in each release.
Release 3-5 (20-April-2015)
Updated iocXMAP and iocMercury startup scripts and auto_settings.req files to be
compatible with ADCore R2-2.
Release 3-4 (10-December-2014)
Added controls for the Trigger Output and LiveTime Output signals on the Auxiliary
output of the Mercury and Mercury 4. This allows outputting, for example, the FastTrigger
pulses in addition to the SCA window pulses to do post-processing live-time correction
for on-the-fly scanning using a multi-channel scaler.
Updated firmware for 4-element Mercury to the version that comes with ProSpect 0.1.21.
The previous version did not work with the SCA outputs.
Fixed the iocBoot directories to correctly locate database and autosave settings
files from areaDetector ADCORE.
Release 3-3 (27-June-2014)
Changed Makefile to build with areaDetector 2-0, which has a different layout than
previous versions of areaDetector.
Fixed a bug in mapping modes on the xMAP and Mercury. The problem occurred when
the final mapping buffer was just a few pixels and the dwell time per pixel was
less than 5 ms. Under these conditions the final mapping buffer might not be read
out, and the file saving plugins would not get the callbacks for the final buffer.
After acquisition completes both mapping buffers (A and B) may need to be read out,
but the previous code was only forcing 1 read, not 2. Changed code to force 2 calls
to read the mapping buffers after acquisition completes.
Cleaned up dxpMED.st SNL program by removing unneeded empty strings in assign statements.
No functional effect, just reduces lines of code almost 2X and makes it easier to
read and maintain.
The prebuilt tar file for this release does not include executables for the cygwin-x86
architecture, because areaDetector-2-0 has not been built for Cygwin yet. There
are executables for win32-x86 and linux-x86.
Release 3-2 (11-March-2013)
Worked around a bug in XIA's firmware for the Saturn. It is not correctly computing
the energy live time, so the live time and dead time reported by the MCA record
are incorrect. This problem is due to the calculation of the output count rate (OCR)
for the energy live time is only using the EVENTSINRUN, which are the events that
end up in the spectrum, and it is ignorring overflows and underflows, which are
events with energies outside the range of the spectrum. Note that the OCR that is
reported by the Saturn firmware is correct, it does include the overflows and underflows.
But the OCR that is used internally when computing the energy live time is not correct,
it does not include overflows and underflows. This problem was fixed by not using
the energy live time computed by the Saturn firmware, and simply computing in the
EPICS driver as RealTime * OCR / ICR.
Minor changes in the driver to be compatible with areaDetector R1-9-1, which changed
the datatypes of some variables.
Release 3-1 (2-Nov-2011)
This is a minor maintenance release. It includes XIA's Handel 1.1.11 release. That
Handel release fixes several problems that were present in Handel 1.1.7 that was
used for dxp R3-0:
- Reading the trace data on the xMAP. In the previous release this operation could
sometimes fail and hang the EPICS IOC.
- Downloading mapping mode firmware to the single-element Mercury module would fail.
- XIA has also now released xManager 1.1.6 which is built for the new PLX driver.
Users previously needed to manually copy new DLLs into the xManager directory to
use it with the new PLX driver required by the dxp R3-0 release.
Added opi files for CSS BOY.
This release is built with mca R7-1, which fixes a problem with the mca record STIM
field. Previously the STIM field and the mca record time stamp recorded the time
that acquisition started. The problem was that the mca records are not actually
processed when acquisition starts with dxp multi-element detector systems, they
are only guaranteed to process when acquisition completes. Thus, the STIM field
and timestamp were not being updated. This is fixed in mca R7-1 by making the STIM
field and timestamp now record the time when acquisition stops, rather than when
Release 3-0 (3-Dec-2010)
This is a major new release. It adds many new features, the most important being
mapping mode support for the xMAP and support for the Mercury. It eliminates the
DXP record, so it is not backwards compatible with medm screens, database files,
or startup scripts from previous releases.
- Added support for the mapping modes on the xMAP, in addition to the normal MCA
mode. These mapping modes are:
- MCA spectra mapping. In this mode spectra are collected into the double-buffered
on-board memory and streamed to disk continuously. Over 4,000 2048-channel spectra/second
can be collected continuously, which is over 1000 pixels/second for a 4-detector
- ROI (SCA) mapping. In this mode the total counts in up to 32 ROIs (SCAS) for each
channel are collected into the double-buffered on-board memory and streamed to disk
continuously. The dwell time per point can be as short as 100 microseconds, which
is over 5 million ROIs per second for a 16-detector system with 32 ROIs per detector.
- List mode mapping. In this mode each x-ray event is recorded separately, and tagged
either with the time (20 ns resolution) or with the current pixel number.
- Added support for the Mercury, which is a new desktop model with many of the features
of the xMAP. It is available in a 1 or 4 channel version, and has a USB 2.0 interface.
It is supported on both Windows and Linux. It supports the MCA mapping mode, but
the firmware does not yet support SCA or list mode mapping.
- Added support for the ROI firmware on the Saturn. For Saturns equipped with the
optional 16 ROI hardware outputs, this allows very fast mapping with the Saturn
by putting out a TTL pulse whenever an x-ray falls within that ROI. These pulses
can be collected, for example, in an SIS 38xx multi-channel scaler, to do very fast
- Implemented correct live-time reporting for the Saturn. In previous releases counting
for a preset live time worked correctly, but the elapsed live time reported was
for the fast (trigger) filter, not for the slow (energy) filter.
- Greatly reduced the time to initialize the xMAP system in iocInit, from several
minutes to 10 seconds for a 16-channel system.
- Greatly reduced the time to copy the MCA record ROIs to the xMAP SCAs, from several
minutes to 2 seconds for a 16-channel system with 16 ROIs per channel.
- Added the ability to copy the ROIs from detector 1 to all detectors, either by
channel or by energy, in case the energy calibrations are different.
- Added additional diagnostic trace types for the xMAP.
- Added generic read/write access to all low-level parameters on all models.
- Eliminated the DXP record, which was previously to control the DSP parameters.
This was replaced by a collection of standard EPICS records (ao, ai, bo, bi, waveform,
etc.). There is now a single driver that is used for both DSP parameter control
and for MCA data acquisition. This driver is derived from the asynNDArray class
in areaDetector, and asynPortDriver class in asyn.
- Increased maximum number of detectors in dxpMED.st from 32 to 100.
- Increased maximum number of ROIs and SCAs in dxpMED.st from 16 to 32.
- Minor changes for 64-bit compatibility.
- Changes to be compatible with drvUser strings in mca R6-12.
- Call epicsExit in dxpMain.cpp, which was a problem with previous releases.
Release 2-10 (16-Jul-2009)
- This is a maintenance release, required by the need to provide an EPICS release
that is compatible with xManager 1.0.5 for the xMAP hardware. The next release of
DXP (R3-0) will be a major rewrite. The dxp record will be eliminated, and standard
EPICS records with standard asyn device support will be used instead to control
the DXP parameters. It will provide support for mapping mode with the xMAP, using
the on-board buffer memory. It will use the NDArray class from the areaDetector
module. I plan to release R3-0 within the next 2 months.
- Updated to version 1.0.3 of XIA's Handel library, which is required to be compatible
with the PLX v5.2 driver used for the xMAP in xManager 1.0 and higher. This is not
the official 1.0.3 Handel release, because XIA had neglected to incorporate many
of the fixes to Handel I sent them in January 2008, so I had to reapply all of these
fixes. Hopefully the next Handel release will build with no modifications for EPICS
on all platforms (win32-x86, cygwin-x86, linux-x86 and vxWorks).
- Fixed problem with USB 2.0 interface on Saturn under Linux. Previously one needed
to power off the Saturn before restarting the EPICS IOC. This is no longer necessary.
- Eliminated most warnings in xiaStartSystem with improved .ini files.
- This release of Handel is much faster in xiaStartSystem with xMAP systems. However,
this is only true if the firmware FDD file is on a local drive. I have found that
if the FDD file is on a remote Linux server that the time for xiaStartSystem can
be 20 times slower. On a 12 channel xMAP system with win32-x86 xiaStartSystem takes
7 seconds if the firmware is on a local drive and 154 seconds if it is on a remote
server. On this same system running cygwin-x86 the times are 72 seconds (local)
and 196 seconds (remote).
Release 2-9 (2-Feb-2009)
- Fixed problems with DXP4C2X. It was not correctly downloading FiPPI files when
peaking time was changed.
- Fixed problems with logging errors and warnings on vxWorks. Previously the output
from XIA routines was lost after the startup script completed, because vxWorks closes
and reopens stdout.
- Fixed memory leaks in XIA's code on Saturn and DXP4C2X when reading baseline histogram.
- Added support for parallel make
- Added "busy" module for busy record, moved from sscan.
Release 2-8-1 (20-May-2008)
- Add a few new files in iocBoot/iocDXP2X.
Release 2-8 (6-Feb-2008)
- Updated code for DXP4C2X to work again. Based on X10P code from Handel 0.6.47.
This makes the DXP4C2X compatible with the Saturn and the xMAP.
- Changes in Handel code for Saturn to be compatible with Handel version 0.6.47.
These are mostly minor. The most important changes are that the Saturn now supports
"maxwidth" and "baseline_threshold" as acquisition parameters, so these are now
specified in calibrated units (keV), rather than device units. The dxp record device
support (devDxp.c) has been changed to take advantage of this. This change makes
the Saturn compatible with the xMAP.
- Updated documentation to explain how to use udev or hotplug to run the USB Saturn
on Linux without root privilege. Added USB_DEVFS_PATH environment variable to iocSaturn/st.cmd
to fix problem with libusb using /proc/bus/usb when it should be using /dev/bus/usb,
and thus not getting permissions right.
- Fixed problem with EraseAll not displaying the newly erased spectra.
Release 2-7 (4-Dec-2007)
- This is the first release that builds the xMAP support from source code, rather
than from a pre-built DLL from XIA. It uses Handel 0.6.47 from XIA with my modifications
to make it work on all supported architectures.
- Added support for USB 1.0 and USB 2.0 interfaces on Saturn, in addition to existing
EPP support. These are supported on the WIN32, Cygwin, and Linux architectures.
The following software must be installed on the IOC computer before the USB support
- WIN32 and Cygwin: For USB 1.0 Kepler must be installed to provide the required
USB driver. For USB 2.0 the PI-SPEC software package from SII must be installed,
because it has the required EZ-USB driver. I expect that this driver will be available
from XIA soon.
- Linux. The latest version of the libusb package (0.1.12) must be installed. This
can be quickly installed, but requires root priviledge. The IOC application must
also currently be run as root, because the USB device is created dynamically and
cannot be given non-root access in advance.
- This version does NOT support the DXP4C2X because that support from XIA lags behind
the Saturn and xMAP in terms of what acquisition parameters it supports. The DXP4C2X
will be supported again in a future release.
- Changed the default value of MAXWIDTH in the DXP record from 20 to 4, to be legal
Release 2-6 (18-Oct-2007)
- Removed architecture specific DBD files and Makefile rules, requires asyn R4-9.
- Enhancements and additions to 4 element detector ADL files.
- dxp4c2x_psl.c (CAMAC module). Added support for all of the same parameters that
the Saturn (x10p_psl.c) supports. With this enhancement the DXP2X now has the same
EPICS interface as the Saturn.
- dxpMED.st. Increased number of detectors to 32, bug fixes thanks to Dave Madden
Release 2-5 (20-Sept-2006)
- Upgraded xMAP DLLs and firmware to release 0.9.1 of xManager. This release from
XIA appears to fix all of the initialization problems and other bugs that I have
reported to them.
- Fixed bug in devDxp.c that was causing crashes when reading SCA data on xMAP with
0.9.1 firmware and software.
- Added mutex to interlock access to Handel library. This was needed because the
poller thread, asyn port and dxpRecord::init_record can all be calling Handel at
the same time.
- This release uses R6-8 of the mcaRecord, which fixed a serious bug. Previously
the MCA record posted monitors for .ACQG=0 (acquire done) before it posted monitors
on the VAL field. This could cause clients to collect bad data.
- Added MAXWIDTH and MAXWIDTH_RBV fields to the dxpRecord.
- Changed the xMAP to use the energy livetime, rather than trigger livetime, for
the MCA record livetime.
- Fixed the way in which the software determines what type of hardware (xMAP, Saturn,
DXP2X) it is running on. Previously it was reading the HDWRVAR low-level parameter,
and this was not a reliable test.
- Moved iocsh commands from drvDxp.c to new file, epicsHandelUtils.c.
- Changed order of downloading parameters in dxpRecord::init_record so they all
get applied the first time.
- Added feature to dxpMED.st. It now copies the ROI LO and HI fields from the MCA
records to the corresponding SCA LO and HI fields in the DXP records.
- Implemented the poller thread callbacks in the Saturn database. In R2-4 they were
only implemented on the xMAP.
- Loaded EPICS sscan records and initialized saveData in the startup scripts in
iocSaturn and iocXMAP. Added menus for them to the top-level medm screens. This
is very useful for collecting data as quickly as possible using saveData in the
- Combined MCA ROIs and DXP SCAs onto a single medm screen for multi-element detectors.
- Changed the prefix of the PVs in iocXMAP from dxpXMAP:med: to dxpXMAP:.
Release 2-4 (17-May-2006)
- Added support for detector "groups" in the dxp and mca record drivers. This is
used to turn on and off acquisition on all detectors as efficiently as possible.
Modifed dxpMED.db and dxpMED.st to take advantage of this new capability.
- Added support for the new xMAP PXI modules. This support runs on the cygwin-x86
- Added a poller thread to the driver. The poller thread rapidly polls to see if
acquisition is complete on all channels. When it is complete it issues callbacks
to records that have registered for them. This is used to greatly decrease the latency
of MCA records knowing when acquisition is complete. Previously they were limited
to 10Hz, or 50msec typically latency. The rate of the poller thread is configured
in the DXPConfig command. It is typically 100Hz, which does not place a significant
load on the system, but reduces the average latency to 5msec. This poller thread
is used in place of interrupts, which none of the XIA hardware types support.
- Enhancements to dxpRecord:
- Made baseline filter length (BASE_LEN) be a menu rather than a number.
- Added readback for baseline filter length (BASE_LEN_RBV)
- Added the baseline cut enable (BASE_CUT_ENBL) and readback (BASE_CUT_ENBL_RBV)
- Implemented the pre-amp gain (PGAIN) and readback (PGAIN_RBV) fields.
- Added time/point for the baseline history (BHIST_TIME). This is currently only
implemented on the xMAP.
- Removed BASETHRADJ since xMAP does not support it, and it's available as low-level
- Added code to support ADC trace and baseline history to dxpMED.st for multi-element
- Fixes and enhancements for 40MHz version of Saturn.
- Added support for native Windows build, in addition to Cygwin.
- This version does NOT support the DXP4C2X because that support from XIA lags behind
the Saturn and xMAP in terms of what acquisition parameters it supports. The DXP4C2X
will be supported in a future release.
- List of things to be added/fixed in a future release:
- Implement missing functions on DXP-2X so it will work again.
- Get algorithm for baseline threshold in energy units, implement on Saturn and
- Implement ROI mapping mode on Saturn and DXP-2X.
- Implement MCA mapping mode on xMAP.
- Implement fast SCA acquisition on all models.
- Add DXP record fields for polarity, reset interval, and RC time constant.
Release 2-3 (11-August-2005)
- Added several readback fields to dxpRecord (BASETHRESH_RBV, etc.)
- Use value of RUNTASKS from save/restore, so that auto baseline threshold adjust
and other bits are restored.
- Fixed bugs in setting SCAs from MCA ROIs which were causing error messages.
- Fixed init_record in dxpRecord so that BASETHRESH from save/restore is set correctly
if automatic baseline threshold adjust is disabled.
- Fixed definition of bit 0 in RUNTASKS in dxp2x_rc.db and dxp2x_reset.db. This
bug was causing baseline histogramming to stop if any other bits were modified in
- Added 40MHz firmware files for the Saturn.
- Fixed bug that was causing bit 0 of RUNTASKS to be reset, turning off baseline
histogramming whenever RUNTASKS was modified.
- Added new ECAL field. ADC_RULE is now at energy=ECAL, not at energy=EMAX/2.
Release 2-2 (29-Mar-2005)
- Added rpc library for standalone applications on cygwin, needed by saveData
Release 2-1 (23-Mar-2005)
Major re-write of the software. Previously the DXP device support for the MCA and
DXP records was using the Xerxes library from XIA. This is a low-level library,
and required that the EPICS software know what XIA model was being used (Saturn,
DXP2X, etc.) This releases uses the XIA Handel library, which is a higher-level
library. The EPICS software no longer needs to know what hardware it is talking
to, and no longer needs to implement the algorithms to convert high level concepts
(e.g. peaking time) to low-level device parameters.
Added significant new features to the software, including the ability to acquire
and plot the baseline history and ADC trace data. This greatly improves the diagnostics
available to the user. The EPICS software now has most of the features of the XIA
Kepler and MESA software.
Most high-level parameters are now in physical units (e.g. microseconds, keV) rather
than integer DXP device units.
Added support for running the EPICS IOC on Windows to control the Saturn. This means
that a Saturn or Vortex detector can now be run by a Windows laptop, which is attractive
for portable applications.
Improved Linux support by not requiring the user to have root priviledge to run
Changed from using the EPICS MPF module to using the new ASYN module. This improves
Improved multi-element detector support. There is now a single database for multi-element
detectors, and all of the logic to synchronize acquisition and copy parameters from
detector 1 to all detectors is done by a State Notation Language Program. This greatly
simplifies adding support for a new detector with a different number of elements,
since only the MEDM screens now need to be changed, not the databases.
The commands required in the st.cmd startup file, and the files required to configure
the hardware have changed significantly. This is because Handel and Xerxes do things
quite differently. Users will need to look at the example iocBoot directories to
convert existing IOCs.
Release 1-2 (June 2004)
Added 1element_dxp.db, 1element_dxp.adl, dxpTop.adl, single_dxp_top.adl.
Dependencies now include calc, sscan, and autosave modules. No longer depend on
Fixed clock on X10P (Saturn) model, was 400nsec, actually 800nsec
Release 1-1 (January 2004)
This is the first release of the synApps dxp module. Prior to this the support
for the XIA DXP models was provided in the synApps CAMAC module. This version
runs only on EPICS 3.14.
Suggestions and Comments to:
- Moved software from camac to dxp synApps module
- Added support for Saturn model
- Added documentation directory
Mark Rivers : (firstname.lastname@example.org)