EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026 Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
<== Date ==> <== Thread ==>

Subject: Re: pilatus3 6m readCamserver timeout init
From: Mark Rivers via Tech-talk <tech-talk at aps.anl.gov>
To: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, Keith Surrena <ks2339 at cornell.edu>
Date: Fri, 20 Mar 2026 14:19:05 +0000
Hi Keith,

Have you checked on the status of camserver, and perhaps tried restarting it?  We run camserver under procServe so we can connect to it from any terminal, and so we can have a log file.

Mark


From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Keith Surrena via Tech-talk <tech-talk at aps.anl.gov>
Sent: Friday, March 20, 2026 9:11 AM
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: pilatus3 6m readCamserver timeout init
 

This morning our Pilatus stopped responding to control through the IOC and after restarting the entirety of the system, I’ve noticed that it hangs during the initialization, due to a readCamserver timeout of varying lengths. After the PVs connect there is a long incessantly updating string of messages like this:

 

2026/03/20 09:53:01.890 pilatusDetector:readCamserver, timeout=1.000000, status=1 received 0 bytes

 

2026/03/20 09:53:02.900 pilatusDetector:readCamserver, timeout=1.000000, status=1 received 0 bytes

 

2026/03/20 09:53:03.911 pilatusDetector:readCamserver, timeout=1.000000, status=1 received 0 bytes

 

2026/03/20 09:53:08.925 pilatusDetector:readCamserver, timeout=5.000000, status=1 received 0 bytes

 

CA client library is unable to contact CA repeater after 50 tries.

Silence this message by starting a CA repeater daemon

or by calling ca_pend_event() and or ca_poll() more often.

2026/03/20 09:54:58.945 pilatusDetector:readCamserver, timeout=110.000000, status=1 received 0 bytes

 

2026/03/20 09:55:03.957 pilatusDetector:readCamserver, timeout=5.000000, status=1 received 0 bytes

 

2026/03/20 09:55:08.971 pilatusDetector:readCamserver, timeout=5.000000, status=1 received 0 bytes

 

2026/03/20 09:55:09.983 pilatusDetector:readCamserver, timeout=1.000000, status=1 received 0 bytes

 

If I attempt to start an acquisition through the medm it will tell me there’s a timeout waiting for camserver response or it will hang indefinitely while collecting with status “waiting for 70K response” and to camserver saying “gapfil -1”

 

I have active link lights on the NICs for the ppu and dcu and I’m able to SSH to both without trouble. I did notice the link lights for the two ethernet cables from the Pilatus to the DCU are static, but I’m not sure if that’s abnormal.

 

If it’s useful here’s the rest of the startup scripting:

 

< envPaths

epicsEnvSet("IOC","iocPilatus")

epicsEnvSet("TOP","/home/det/epics/pilatusIOC")

epicsEnvSet("ADPILATUS","/home/det/epics/pilatusIOC/db/ADPilatus")

epicsEnvSet("ADCORE","/home/det/epics/pilatusIOC/db/ADCore")

epicsEnvSet("AUTOSAVE","/home/det/epics/pilatusIOC/db/autosave")

errlogInit(20000)

dbLoadDatabase("/home/det/epics/pilatusIOC/dbd/pilatusDetectorApp.dbd")

pilatusDetectorApp_registerRecordDeviceDriver(pdbbase)

Warning: IOC is booting with TOP = "/home/det/epics/pilatusIOC"

          but was built with TOP = "/nfs/chess/epics/det/support/areaDetector/ADPilatus/iocs/pilatusIOC"

 

epicsEnvSet("EPICS_CAS_INTF_ADDR_LIST", "172.30.5.13")                                                                                                      

# Prefix for all records

epicsEnvSet("PREFIX", "PIL10:")

# The port name for the detector

epicsEnvSet("PORT",   "PIL")

# The queue size for all plugins

epicsEnvSet("QSIZE",  "20")

# The maximim image width; used for row profiles in the NDPluginStats plugin

epicsEnvSet("XSIZE",  "2463")

# The maximim image height; used for column profiles in the NDPluginStats plugin

epicsEnvSet("YSIZE",  "2527")

# The maximum number of time seried points in the NDPluginStats plugin

epicsEnvSet("NCHANS", "2048")

# The maximum number of frames buffered in the NDPluginCircularBuff plugin

epicsEnvSet("CBUFFS", "500")

# The search path for database files

epicsEnvSet("EPICS_DB_INCLUDE_PATH", "/home/det/epics/pilatusIOC/db/ADCore/db")

###

# Create the asyn port to talk to the Pilatus on port 41234.

drvAsynIPPortConfigure("camserver","10.10.10.100:41234")

# Uncomment the following to enable asynTrace on the camserver port

#asynSetTraceIOMask("camserver",0,2)

#asynSetTraceMask("camserver",0,9)

# Set the input and output terminators.

asynOctetSetInputEos("camserver", 0, "\030")

asynOctetSetOutputEos("camserver", 0, "\n")

pilatusDetectorConfig("PIL", "camserver", 2463, 2527, 50, 300000000)

2026/03/20 09:04:28.269 pilatusDetector:readCamserver, timeout=1.000000, status=1 received 0 bytes

 

2026/03/20 09:04:29.274 pilatusDetector:readCamserver, timeout=1.000000, status=1 received 0 bytes

 

dbLoadRecords("/home/det/epics/pilatusIOC/db/ADPilatus/db/pilatus.template","P=PIL10:,R=cam1:,PORT=PIL,ADDR=0,TIMEOUT=1,CAMSERVER_PORT=camserver")

# Create a standard arrays plugin

NDStdArraysConfigure("Image1", 5, 0, "PIL", 0, 0)

dbLoadRecords("/home/det/epics/pilatusIOC/db/ADCore/db/NDStdArrays.template", "P=PIL10:,R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL,TYPE=Int32,FTVL=LONG,

NELEMENTS=25000000")

# Load all other plugins using commonPlugins.cmd

< /home/det/epics/pilatusIOC/db/ADCore/iocBoot/commonPlugins.cmd

# This is an example file for creating plugins

# It uses the following environment variable macros

 

Many of the parameters defined in this file are also in commonPlugins_settings.req so if autosave is being                                               

# use the autosave value will replace the value passed to this file.

# $(PREFIX)      Prefix for all records

# $(PORT)        The port name for the detector.  In autosave.

# $(QSIZE)       The queue size for all plugins.  In autosave.

# $(XSIZE)       The maximum image width; used to set the maximum size for row profiles in the NDPluginStats plugin and 1-D FFT

#                   profiles in NDPluginFFT.

# $(YSIZE)       The maximum image height; used to set the maximum size for column profiles in the NDPluginStats plugin

# $(NCHANS)      The maximum number of time series points in the NDPluginStats, NDPluginROIStats, and NDPluginAttribute plugins

# $(CBUFFS)      The maximum number of frames buffered in the NDPluginCircularBuff plugin

# $(MAX_THREADS) The maximum number of threads for plugins which can run in multiple threads. Defaults to 5.

# Create a netCDF file saving plugin

NDFileNetCDFConfigure("FileNetCDF1", 20, 0, "PIL", 0)

dbLoadRecords("NDFileNetCDF.template","P=PIL10:,R=netCDF1:,PORT=FileNetCDF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create a TIFF file saving plugin

NDFileTIFFConfigure("FileTIFF1", 20, 0, "PIL", 0)

dbLoadRecords("NDFileTIFF.template",  "P=PIL10:,R=TIFF1:,PORT=FileTIFF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create a JPEG file saving plugin

NDFileJPEGConfigure("FileJPEG1", 20, 0, "PIL", 0)

dbLoadRecords("NDFileJPEG.template",  "P=PIL10:,R=JPEG1:,PORT=FileJPEG1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create a NeXus file saving plugin

NDFileNexusConfigure("FileNexus1", 20, 0, "PIL", 0)

dbLoadRecords("NDFileNexus.template", "P=PIL10:,R=Nexus1:,PORT=FileNexus1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create an HDF5 file saving plugin

NDFileHDF5Configure("FileHDF1", 20, 0, "PIL", 0)

dbLoadRecords("NDFileHDF5.template",  "P=PIL10:,R=HDF1:,PORT=FileHDF1,ADDR=0,TIMEOUT=1,XMLSIZE=2048,NDARRAY_PORT=PIL")

# Create a Magick file saving plugin

#NDFileMagickConfigure("FileMagick1", $(QSIZE), 0, "$(PORT)", 0)

#dbLoadRecords("NDFileMagick.template","P=$(PREFIX),R=Magick1:,PORT=FileMagick1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")

# Create 4 ROI plugins

NDROIConfigure("ROI1", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDROI.template",       "P=PIL10:,R=ROI1:,  PORT=ROI1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

NDROIConfigure("ROI2", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDROI.template",       "P=PIL10:,R=ROI2:,  PORT=ROI2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

NDROIConfigure("ROI3", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDROI.template",       "P=PIL10:,R=ROI3:,  PORT=ROI3,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

NDROIConfigure("ROI4", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDROI.template",       "P=PIL10:,R=ROI4:,  PORT=ROI4,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create 8 ROIStat plugins

NDROIStatConfigure("ROISTAT1", 20, 0, "PIL", 0, 8, 0, 0, 0, 0, 5)

dbLoadRecords("NDROIStat.template",   "P=PIL10:,R=ROIStat1:  ,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=PIL10:,R=ROIStat1:1:,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=PIL10:,R=ROIStat1:2:,PORT=ROISTAT1,ADDR=1,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=PIL10:,R=ROIStat1:3:,PORT=ROISTAT1,ADDR=2,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=PIL10:,R=ROIStat1:4:,PORT=ROISTAT1,ADDR=3,TIMEOUT=1,NCHANS=2048")                                                 

dbLoadRecords("NDROIStatN.template",  "P=PIL10:,R=ROIStat1:5:,PORT=ROISTAT1,ADDR=4,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=PIL10:,R=ROIStat1:6:,PORT=ROISTAT1,ADDR=5,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=PIL10:,R=ROIStat1:7:,PORT=ROISTAT1,ADDR=6,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=PIL10:,R=ROIStat1:8:,PORT=ROISTAT1,ADDR=7,TIMEOUT=1,NCHANS=2048")

# Create a processing plugin

NDProcessConfigure("PROC1", 20, 0, "PIL", 0, 0, 0)

dbLoadRecords("NDProcess.template",   "P=PIL10:,R=Proc1:,  PORT=PROC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create a TIFF file plugin to read dark and flatfield images into the processing plugin

NDFileTIFFConfigure("PROC1TIFF", 20, 0, "PIL", 0)

dbLoadRecords("NDFileTIFF.template",  "P=PIL10:,R=Proc1:TIFF:,PORT=PROC1TIFF,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create a scatter plugin

NDScatterConfigure("SCATTER1", 20, 0, "PIL", 0, 0, 0)

dbLoadRecords("NDScatter.template",   "P=PIL10:,R=Scatter1:,  PORT=SCATTER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create a gather plugin with 8 ports

NDGatherConfigure("GATHER1", 20, 0, 8, 0, 0)

dbLoadRecords("NDGather.template",   "P=PIL10:,R=Gather1:, PORT=GATHER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

dbLoadRecords("NDGatherN.template",   "P=PIL10:,R=Gather1:, N=1, PORT=GATHER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

dbLoadRecords("NDGatherN.template",   "P=PIL10:,R=Gather1:, N=2, PORT=GATHER1,ADDR=1,TIMEOUT=1,NDARRAY_PORT=PIL")

dbLoadRecords("NDGatherN.template",   "P=PIL10:,R=Gather1:, N=3, PORT=GATHER1,ADDR=2,TIMEOUT=1,NDARRAY_PORT=PIL")

dbLoadRecords("NDGatherN.template",   "P=PIL10:,R=Gather1:, N=4, PORT=GATHER1,ADDR=3,TIMEOUT=1,NDARRAY_PORT=PIL")

dbLoadRecords("NDGatherN.template",   "P=PIL10:,R=Gather1:, N=5, PORT=GATHER1,ADDR=4,TIMEOUT=1,NDARRAY_PORT=PIL")

dbLoadRecords("NDGatherN.template",   "P=PIL10:,R=Gather1:, N=6, PORT=GATHER1,ADDR=5,TIMEOUT=1,NDARRAY_PORT=PIL")

dbLoadRecords("NDGatherN.template",   "P=PIL10:,R=Gather1:, N=7, PORT=GATHER1,ADDR=6,TIMEOUT=1,NDARRAY_PORT=PIL")

dbLoadRecords("NDGatherN.template",   "P=PIL10:,R=Gather1:, N=8, PORT=GATHER1,ADDR=7,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create 5 statistics plugins

NDStatsConfigure("STATS1", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=PIL10:,R=Stats1:,  PORT=STATS1,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=2463,YSIZE=2527,NCHANS=2048,NDARRAY_PORT=PIL")

NDTimeSeriesConfigure("STATS1_TS", 20, 0, "STATS1", 1, 23)

dbLoadRecords("/home/det/epics/pilatusIOC/db/ADCore/db/NDTimeSeries.template",  "P=PIL10:,R=Stats1:TS:, PORT=STATS1_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS1,NDARRAY_A

DDR=1,NCHANS=2048,ENABLED=1")

NDStatsConfigure("STATS2", 20, 0, "ROI1",    0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=PIL10:,R=Stats2:,  PORT=STATS2,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=2463,YSIZE=2527,NCHANS=2048,NDARRAY_PORT=PIL")

NDTimeSeriesConfigure("STATS2_TS", 20, 0, "STATS2", 1, 23)

dbLoadRecords("/home/det/epics/pilatusIOC/db/ADCore/db/NDTimeSeries.template",  "P=PIL10:,R=Stats2:TS:, PORT=STATS2_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS2,NDARRAY_A

DDR=1,NCHANS=2048,ENABLED=1")

NDStatsConfigure("STATS3", 20, 0, "ROI2",    0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=PIL10:,R=Stats3:,  PORT=STATS3,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=2463,YSIZE=2527,NCHANS=2048,NDARRAY_PORT=PIL")

NDTimeSeriesConfigure("STATS3_TS", 20, 0, "STATS3", 1, 23)

dbLoadRecords("/home/det/epics/pilatusIOC/db/ADCore/db/NDTimeSeries.template",  "P=PIL10:,R=Stats3:TS:, PORT=STATS3_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS3,NDARRAY_A

DDR=1,NCHANS=2048,ENABLED=1")

NDStatsConfigure("STATS4", 20, 0, "ROI3",    0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=PIL10:,R=Stats4:,  PORT=STATS4,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=2463,YSIZE=2527,NCHANS=2048,NDARRAY_PORT=PIL")

NDTimeSeriesConfigure("STATS4_TS", 20, 0, "STATS4", 1, 23)

 

dbLoadRecords("/home/det/epics/pilatusIOC/db/ADCore/db/NDTimeSeries.template",  "P=PIL10:,R=Stats4:TS:, PORT=STATS4_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS4,

DDR=1,NCHANS=2048,ENABLED=1")

NDStatsConfigure("STATS5", 20, 0, "ROI4",    0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=PIL10:,R=Stats5:,  PORT=STATS5,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=2463,YSIZE=2527,NCHANS=2048,NDARRAY_PORT=PIL")

NDTimeSeriesConfigure("STATS5_TS", 20, 0, "STATS5", 1, 23)

dbLoadRecords("/home/det/epics/pilatusIOC/db/ADCore/db/NDTimeSeries.template",  "P=PIL10:,R=Stats5:TS:, PORT=STATS5_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS5,NDARRAY_A

DDR=1,NCHANS=2048,ENABLED=1")

# Create a transform plugin

NDTransformConfigure("TRANS1", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDTransform.template", "P=PIL10:,R=Trans1:,  PORT=TRANS1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create an overlay plugin with 8 overlays

NDOverlayConfigure("OVER1", 20, 0, "PIL", 0, 8, 0, 0, 0, 0, 5)

dbLoadRecords("NDOverlay.template", "P=PIL10:,R=Over1:, PORT=OVER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

dbLoadRecords("NDOverlayN.template","P=PIL10:,R=Over1:1:,NAME=ROI1,   SHAPE=1,O=Over1:,XPOS=PIL10:ROI1:MinX_RBV,YPOS=PIL10:ROI1:MinY_RBV,XSIZE=PIL10:ROI1:SizeX_RBV,Y

SIZE=PIL10:ROI1:SizeY_RBV,PORT=OVER1,ADDR=0,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PIL10:,R=Over1:2:,NAME=ROI2,   SHAPE=1,O=Over1:,XPOS=PIL10:ROI2:MinX_RBV,YPOS=PIL10:ROI2:MinY_RBV,XSIZE=PIL10:ROI2:SizeX_RBV,Y

SIZE=PIL10:ROI2:SizeY_RBV,PORT=OVER1,ADDR=1,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PIL10:,R=Over1:3:,NAME=ROI3,   SHAPE=1,O=Over1:,XPOS=PIL10:ROI3:MinX_RBV,YPOS=PIL10:ROI3:MinY_RBV,XSIZE=PIL10:ROI3:SizeX_RBV,Y

SIZE=PIL10:ROI3:SizeY_RBV,PORT=OVER1,ADDR=2,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PIL10:,R=Over1:4:,NAME=ROI4,   SHAPE=1,O=Over1:,XPOS=PIL10:ROI4:MinX_RBV,YPOS=PIL10:ROI4:MinY_RBV,XSIZE=PIL10:ROI4:SizeX_RBV,Y

SIZE=PIL10:ROI4:SizeY_RBV,PORT=OVER1,ADDR=3,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PIL10:,R=Over1:5:,NAME=Cursor1,SHAPE=1,O=Over1:,XPOS=junk,                  YPOS=junk,                  XSIZE=junk,          

        YSIZE=junk,                   PORT=OVER1,ADDR=4,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PIL10:,R=Over1:6:,NAME=Cursor2,SHAPE=1,O=Over1:,XPOS=junk,                  YPOS=junk,                  XSIZE=junk,          

        YSIZE=junk,                   PORT=OVER1,ADDR=5,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PIL10:,R=Over1:7:,NAME=Box1,   SHAPE=1,O=Over1:,XPOS=junk,                  YPOS=junk,                  XSIZE=junk,          

        YSIZE=junk,                   PORT=OVER1,ADDR=6,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PIL10:,R=Over1:8:,NAME=Box2,   SHAPE=1,O=Over1:,XPOS=junk,                  YPOS=junk,                  XSIZE=junk,          

        YSIZE=junk,                   PORT=OVER1,ADDR=7,TIMEOUT=1")

# Create 2 color conversion plugins

NDColorConvertConfigure("CC1", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDColorConvert.template", "P=PIL10:,R=CC1:,  PORT=CC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

NDColorConvertConfigure("CC2", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDColorConvert.template", "P=PIL10:,R=CC2:,  PORT=CC2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create a circular buffer plugin

NDCircularBuffConfigure("CB1", 20, 0, "PIL", 0, 500, 0)

dbLoadRecords("NDCircularBuff.template", "P=PIL10:,R=CB1:,  PORT=CB1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PIL")

# Create an NDAttribute plugin with 8 attributes

NDAttrConfigure("ATTR1", 20, 0, "PIL", 0, 8, 0, 0, 0)

dbLoadRecords("NDAttribute.template",  "P=PIL10:,R=Attr1:,    PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048,NDARRAY_PORT=PIL")

dbLoadRecords("NDAttributeN.template", "P=PIL10:,R=Attr1:1:,  PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=PIL10:,R=Attr1:2:,  PORT=ATTR1,ADDR=1,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=PIL10:,R=Attr1:3:,  PORT=ATTR1,ADDR=2,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=PIL10:,R=Attr1:4:,  PORT=ATTR1,ADDR=3,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=PIL10:,R=Attr1:5:,  PORT=ATTR1,ADDR=4,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=PIL10:,R=Attr1:5:,  PORT=ATTR1,ADDR=4,TIMEOUT=1,NCHANS=2048")                                                    

dbLoadRecords("NDAttributeN.template", "P=PIL10:,R=Attr1:6:,  PORT=ATTR1,ADDR=5,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=PIL10:,R=Attr1:7:,  PORT=ATTR1,ADDR=6,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=PIL10:,R=Attr1:8:,  PORT=ATTR1,ADDR=7,TIMEOUT=1,NCHANS=2048")

NDTimeSeriesConfigure("ATTR1_TS", 20, 0, "ATTR1", 1, 8)

dbLoadRecords("/home/det/epics/pilatusIOC/db/ADCore/db/NDTimeSeries.template",  "P=PIL10:,R=Attr1:TS:, PORT=ATTR1_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ATTR1,NDARRAY_ADDR

=1,NCHANS=2048,ENABLED=1")

# Create an FFT plugin

NDFFTConfigure("FFT1", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDFFT.template", "P=PIL10:, R=FFT1:, PORT=FFT1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=PIL, NAME=FFT1, NCHANS=2463")

# Create 2 Codec plugins

NDCodecConfigure("CODEC1", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDCodec.template", "P=PIL10:, R=Codec1:, PORT=CODEC1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=PIL")

NDCodecConfigure("CODEC2", 20, 0, "PIL", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDCodec.template", "P=PIL10:, R=Codec2:, PORT=CODEC2, ADDR=0, TIMEOUT=1, NDARRAY_PORT=PIL")

set_requestfile_path("./")

set_requestfile_path("/home/det/epics/pilatusIOC/db/ADCore/ADApp/Db")

set_requestfile_path("/home/det/epics/pilatusIOC/db/ADCore/iocBoot")

set_savefile_path("./autosave")

set_pass0_restoreFile("auto_settings.sav")

set_pass1_restoreFile("auto_settings.sav")

save_restoreSet_status_prefix("PIL10:")

dbLoadRecords("/home/det/epics/pilatusIOC/db/autosave/asApp/Db/save_restoreStatus.db", "P=PIL10:")

# Optional: load NDPluginPva plugin

#NDPvaConfigure("PVA1", $(QSIZE), 0, "$(PORT)", 0, $(PREFIX)Pva1:Image, 0, 0, 0)

#dbLoadRecords("NDPva.template",  "P=$(PREFIX),R=Pva1:, PORT=PVA1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")

# Must start PVA server if this is enabled

#startPVAServer

# Optional: load ffmpegServer plugin

#ffmpegServerConfigure(8081)

#ffmpegStreamConfigure("FfmStream1", 2, 0, "$(PORT)", 0, -1, 0)

#dbLoadRecords("$(FFMPEGSERVER)/db/ffmpegStream.template", "P=$(PREFIX),R=ffmstream1:,PORT=FfmStream1,NDARRAY_PORT=$(PORT)")

#ffmpegFileConfigure("FfmFile1", 16, 0, "$(PORT)", 0, -1, 0)

#dbLoadRecords("$(FFMPEGSERVER)/db/ffmpegFile.template", "P=$(PREFIX),R=ffmfile1:,PORT=FfmFile1,NDARRAY_PORT=$(PORT)")

# Optional: load NDPluginEdge plugin

#NDEdgeConfigure("EDGE1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0)

#dbLoadRecords("$(ADPLUGINEDGE)/db/NDEdge.template",  "P=$(PREFIX),R=Edge1:, PORT=EDGE1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")

#set_requestfile_path("$(ADPLUGINEDGE)/edgeApp/Db")

# Optional: load NDPluginCV plugin

#NDCVConfigure("CV1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0, 0, $(MAX_THREADS=5))

#dbLoadRecords("$(ADCOMPVISION)/db/NDCV.template",  "P=$(PREFIX),R=CV1:, PORT=CV1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")

#set_requestfile_path("$(ADCOMPVISION)/adcvApp/Db")

# Optional: load NDPluginBar plugin

#NDBarConfigure("BAR1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0, 0, $(MAX_THREADS=5))

 

#dbLoadRecords("$(ADPLUGINBAR)/db/NDBar.template",  "P=$(PREFIX),R=Bar1:, PORT=BAR1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")                                

#set_requestfile_path("$(ADPLUGINBAR)/barApp/Db")

# Optional: load scan records

#dbLoadRecords("$(SSCAN)/sscanApp/Db/scan.db", "P=$(PREFIX),MAXPTS1=2000,MAXPTS2=200,MAXPTS3=20,MAXPTS4=10,MAXPTSH=10")

#set_requestfile_path("$(SSCAN)/sscanApp/Db")

# Optional: load sseq record for acquisition sequence

#dbLoadRecords("$(CALC)/calcApp/Db/sseqRecord.db", "P=$(PREFIX), S=AcquireSequence")

#set_requestfile_path("$(CALC)/calcApp/Db")

# Optional: load devIocStats records (requires DEVIOCSTATS module)

#dbLoadRecords("$(DEVIOCSTATS)/db/iocAdminSoft.db", "IOC=$(PREFIX)")

# Optional: load alive record (requires ALIVE module)

#dbLoadRecords("$(ALIVE)/aliveApp/Db/alive.db", "P=$(PREFIX),RHOST=192.168.1.254")

# Set the callback queue size to 5000, up from default of 2000 in base.

# This can be needed to avoid errors "callbackRequest: cbLow ring buffer full".

callbackSetQueueSize(5000)

set_requestfile_path("/home/det/epics/pilatusIOC/db/ADPilatus/pilatusApp/Db")

# Uncomment to enable asynTrace on the driver port

#asynSetTraceMask("$(PORT)",0,255)

iocInit()

Starting iocInit

############################################################################

## EPICS R7.0.3

## EPICS Base built Nov 24 2020

############################################################################

reboot_restore: entry for file 'auto_settings.sav'

reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.

*** restoring from './autosave/auto_settings.sav' at initHookState 6 (before record/device init) ***

reboot_restore: done with file 'auto_settings.sav'

 

reboot_restore: entry for file 'auto_settings.sav'

reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.

*** restoring from './autosave/auto_settings.sav' at initHookState 7 (after record/device init) ***

reboot_restore: done with file 'auto_settings.sav'

 

iocRun: All initialization complete

# save things every thirty seconds

create_monitor_set("auto_settings.req", 30,"P=PIL10:")

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

 

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.                                                                                  

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

save_restore:readReqFile: unable to open file sseq_settings.req. Exiting.

caRepeater: error while loading shared libraries: libca.so.4.13.3: cannot open shared object file: No such file or directory

epics> 2026/03/20 09:04:31.017 pilatusDetector:readCamserver, timeout=1.000000, status=1 received 0 bytes

 

auto_settings.sav: 1249 of 1249 PV's connected

 

 

Any insight is appreciated!

 

 

Keith Surrena

Research Support Specialist

Cornell High Energy Synchrotron Source

 

 

 


References:
pilatus3 6m readCamserver timeout init Keith Surrena via Tech-talk

Navigate by Date:
Prev: Re: OPC UA Device Support - Limit in the number of PVs eusebio_naif AL-SOLIMAN FUENTES via Tech-talk
Next: RE: EPICS Collaboration Meeting Spring 2026 - CEA IRFU Paris-Saclay GAGET Alexis via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
Navigate by Thread:
Prev: pilatus3 6m readCamserver timeout init Keith Surrena via Tech-talk
Next: Streams question Steven Hunt via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
ANJ, 20 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·