|
|
Experimental Physics and
| ||||||||||||||
|
|
Hi John, glad to hear that the SNMP support module will be on GitHub. Thanks!
One more suggestion to Varuna: it is a common practice (probably an EPICS build rule) to put the variable
EPICS_BASE=/usr/local/epics/base at
the end of RELEASE(.local)
Cheers,
Yong
From: Priller, John <priller at frib.msu.edu>
Date: Thursday, February 26, 2026 at 6:30 AM
I actually just now got around to updating our website with 1.1.0.5 (which just adds a new adjustable parameter for SessionStaleSec). And I've got a patch suggested by Miroslaw Dach for better SNMP text separator parsing, which I still need to test and roll
out, so hopefully there'll be a 1.1.0.6 soon(ish).
I'd like to get the code into epics-modules, a request to do so has gone up the management chain. Yes it's all Public License, but it's still a hoop that must be jumped through.
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Hu, Yong via Tech-talk <tech-talk at aps.anl.gov>
Sent: Wednesday, February 25, 2026 7:11 PM To: tech-talk at aps.anl.gov Subject: FW: IOC showing out errors in call SNMP functions on linux-x86_64
As Henrique mentioned in another
thread, there are multiple versions of EPICS support for SNMP. I am using John Priller’s version 1.1.0.4.
Where did you get your source codes? In your
/usr/local/epics/Support/snmp/…,
you may look through the source file
snmpRegister.cpp where the IOC shell commands
devSnmpXxx are defined.
Cheers,
Yong
From: Varuna Crishan Meddage <vmeddage at fnal.gov>
Date: Wednesday, February 25, 2026 at 5:51 PM
Yes, I see the following output.
iocdev1$ ldd WRSwitch | grep -i "Snmp"
libdevSnmp.so => /usr/local/epics/Support/snmp/lib/linux-x86_64/libdevSnmp.so (0x00007f15660cf000)
libnetsnmp.so.40 => /lib64/libnetsnmp.so.40 (0x00007f1565e72000)
From: Hu, Yong <yhu at bnl.gov>
Sent: Wednesday, February 25, 2026 4:23 PM To: Priller, John <priller at frib.msu.edu>; Varuna Crishan Meddage <vmeddage at fnal.gov>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: Re: IOC showing out errors in call SNMP functions on linux-x86_64 Hi Varuna,
Additional to John’s suggestion of verifying your ‘WRSwitch.dbd’, you can do a few more checks:
HTH,
Yong
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Priller, John via Tech-talk <tech-talk at aps.anl.gov>
Date: Tuesday, February 24, 2026 at 1:01 PM What is the content of your file here:
/export/home1/vmeddage/WRSwitch/iocTops/WRSwitch/dbd/WRSwitch.dbd
When I 'grep -i snmp' on one of mine, it gives:
device(longin, INST_IO, devSnmpLi, "Snmp")
device(ai, INST_IO, devSnmpAi, "Snmp")
device(ao, INST_IO, devSnmpAo, "Snmp")
device(longout, INST_IO, devSnmpLo, "Snmp")
device(waveform, INST_IO, devSnmpWf, "Snmp")
device(stringin, INST_IO, devSnmpSi, "Snmp")
device(stringout, INST_IO, devSnmpSo, "Snmp")
registrar(snmp_Register)
The final registrar line is what provides the devSnmpXxx commands to IOC shell.
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Varuna Crishan Meddage via Tech-talk <tech-talk at aps.anl.gov>
Sent: Tuesday, February 24, 2026 12:47 PM To: tech-talk at aps.anl.gov Subject: IOC showing out errors in call SNMP functions on linux-x86_64
My EPICS IOC call SNMP specific functions (devSnmpSetSnmpVersion, devSnmpSetParam).
When I run my IOC these function calls throw out errors saying (Command devSnmpSetSnmpVersion not found.)
In my Makefile at App/src area, I am calling the support snmp library
and dbd file correctly.
Any help to solve this issue ?
(Here I am pasting output of after running st.cmd, Makefile at App/src are, content of
Release.local file, content of st.cmd file at iocBoot area)
******************************************* START OF OUTPUT AFTER RUNNING ST.CMD FILE ***************************************************
iocdev1$ ./startWRSwitch.bash
/export/home1/vmeddage/WRSwitch/iocTops/WRSwitch
#!../../bin/linux-x86_64/WRSwitch
< envPaths
epicsEnvSet("IOC","iocWRSwitch")
epicsEnvSet("TOP","/export/home1/vmeddage/WRSwitch/iocTops/WRSwitch")
epicsEnvSet("MODULES","/export/home1/vmeddage/WRSwitch/iocTops")
epicsEnvSet("EPICS_BASE","/usr/local/epics/base")
epicsEnvSet("SUPPORT","/usr/local/epics/Support")
epicsEnvSet("SNCSEQ","/usr/local/epics/Support/seq")
epicsEnvSet("ASYN","/usr/local/epics/Support/asyn")
epicsEnvSet("IPAC","/usr/local/epics/Support/ipac")
epicsEnvSet("CALC","/usr/local/epics/Support/calc")
epicsEnvSet("STD","/usr/local/epics/Support/std")
epicsEnvSet("SSCAN","/usr/local/epics/Support/sscan")
epicsEnvSet("STREAM","/usr/local/epics/Support/StreamDevice")
epicsEnvSet("BUSY","/usr/local/epics/Support/busy")
epicsEnvSet("IOCSTATS","/usr/local/epics/Support/iocStats")
epicsEnvSet("LINSTAT","/usr/local/epics/Support/linStat")
epicsEnvSet("LUA","/usr/local/epics/Support/lua")
epicsEnvSet("PCRE","/usr/local/epics/Support/pcre")
epicsEnvSet("SNMP","/usr/local/epics/Support/snmp")
epicsEnvSet("ACNETPV","/usr/local/epics/Support/acnetPV")
epicsEnvSet("ALIVE","/usr/local/epics/Support/alive")
epicsEnvSet("TCAST","/usr/local/epics/Support/tcast")
epicsEnvSet("RECASTER","/usr/local/epics/Support/RecCaster")
epicsEnvSet("AUTOSAVE","/usr/local/epics/Support/autosave")
epicsEnvSet("PUTLOG","/usr/local/epics/Support/caPutLog")
## NTP Time Synchronisation
#epicsEnvSet("EPICS_TS_NTP_INET","131.225.121.105")
## Do OS-specific startup here
epicsEnvSet("EPICS_HOST_ARCH","linux-x86_64")
epicsEnvSet("ENGINEER","vmeddage")
epicsEnvSet("LOCATION","BTE-223")
epicsEnvSet("EPICS_IOC_OWNER","vmeddage")
epicsEnvSet("EPICS_IOC_GROUP","FE_group")
epicsEnvSet("EPICS_IOC_LOCATION","BTE-223")
epicsEnvSet("IOCDIR","WRSwitch")
epicsEnvSet("MIBDIRS","+/export/home1/vmeddage/.snmp/mibs")
cd "/export/home1/vmeddage/WRSwitch/iocTops/WRSwitch"
## Register all support components
# Load SNMP support database
dbLoadDatabase("/export/home1/vmeddage/WRSwitch/iocTops/WRSwitch/dbd/WRSwitch.dbd",0,0)
WRSwitch_registerRecordDeviceDriver(pdbbase)
INFO: PVXS QSRV2 is loaded, permitted, and ENABLED.
2026-02-24T11:42:03.147799408 WARN pvxs.tcp.setup Server unable to bind port 5075, falling back to [::]:35161
dbRegisterServer: Ignoring 'rsrv', per environment
## SNMP specifics
devSnmpSetSnmpVersion(10.200.34.10,SNMP_VERSION_2C)
ERROR st.cmd line 29: Command devSnmpSetSnmpVersion not found.
devSnmpSetParam("DebugLevel",2)
ERROR st.cmd line 31: Command devSnmpSetParam not found.
devSnmpSetParam("SessionTimeout", "1000000")
ERROR st.cmd line 32: Command devSnmpSetParam not found.
## Protocal file
#epicsEnvSet("STREAM_PROTOCOL_PATH","/usr/local/epics/Support/cmsIon/cmsIonApp/protocol")
## Load record instances
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchalive.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchwatcher.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchiocAdminSoft.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchAcnetDevice.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchExtra.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchtcast.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchRecCaster.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/test.db")
dbLoadTemplate("/export/home1/vmeddage/WRSwitch/iocTops/WRSwitch/db/wrz16_pip2_switch.substitution")
## Put logging and access security
epicsEnvSet("EPICS_CA_JSON_PUT_LOG_ADDR","/home/epics/epicsDEV/PutLog/test.json")
asSetFilename("/export/home1/vmeddage/WRSwitch/iocTops/WRSwitch/iocBoot/iocWRSwitch/ioc.acf")
iocInit()
Starting iocInit
############################################################################
## EPICS R7.0.9
## Rev. R7.0.9-dirty
## Rev. Date Git: 2025-02-21 17:31:33 -0600
############################################################################
iocRun: All initialization complete
caPutJsonLogInit localhost:7011
## Create as many matching Acnet devices as needed and uncomment
#createAcnetDeviceRecord Z:WRSwitchCRTL
dbpf PIP2:Time_CRTL_SYS:alive.EV1 linux-x86_64
PV 'PIP2:Time_CRTL_SYS:alive.EV1' not found
dbpf PIP2:Time_CRTL_SYS:alive.EV2 7.0.9
PV 'PIP2:Time_CRTL_SYS:alive.EV2' not found
dbpf PIP2:Time_CRTL_SYS:alive.EV3 /usr/local/epics/base
PV 'PIP2:Time_CRTL_SYS:alive.EV3' not found
dbpf PIP2:Time_CRTL_SYS:alive.EV4 /usr/local/epics/Support
PV 'PIP2:Time_CRTL_SYS:alive.EV4' not found
dbpf PIP2:Time_CRTL_SYS:alive.EV5 vmeddage
PV 'PIP2:Time_CRTL_SYS:alive.EV5' not found
log client: failed to connect to server '127.0.0.1:7011' because 'Connection refused'
dbpf PIP2:Time_CRTL_SYS:alive.EV6 BTE-223
PV 'PIP2:Time_CRTL_SYS:alive.EV6' not found
dbpf PIP2:Time_CRTL_SYS:alive.EV7 "Front Ends"
PV 'PIP2:Time_CRTL_SYS:alive.EV7' not found
****************************************** END OF OUTPUT AFTER RUNNING ST.CMD FILE ************************************************
********************************************** START OF MAKE FILE ***********************************************************************
TOP=../..
include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================
#=============================
#=============================
# Build an IOC support library
#LIBRARY_IOC += devSnmpLocal
#devSnmpLocal_SRCS += $(SNMP)/snmpApp/src/snmpRegister.cpp
#devSnmpLocal_SRCS += $(SNMP)/snmpApp/src/snmpSessShow.c
#devSnmpLocal_SRCS += $(SNMP)/snmpApp/src/devSnmp.cpp
#devSnmpLocal_LIBS += $(EPICS_BASE_IOC_LIBS)
#=============================
# Build the IOC application
PROD_IOC = WRSwitch
# WRSwitch.dbd will be created and installed
DBD += WRSwitch.dbd
# WRSwitch.dbd will be made up from these files:
WRSwitch_DBD += base.dbd
# modified menuScan.dbd to include FNAL scan rates
WRSwitch_DBD += menuScan.dbd
# Include dbd files from all support applications:
WRSwitch_DBD += pvxsIoc.dbd
WRSwitch_DBD += iocAdmin.dbd
WRSwitch_DBD += aliveRecord.dbd
WRSwitch_DBD += sseqRecord.dbd
WRSwitch_DBD += sscanSupport.dbd
WRSwitch_DBD += acnetPV.dbd
WRSwitch_DBD += tcast.dbd
WRSwitch_DBD += reccaster.dbd
WRSwitch_DBD += asSupport.dbd
WRSwitch_DBD += caPutJsonLog.dbd
WRSwitch_DBD += devSnmp.dbd
# Add all the support libraries needed by this IOC
WRSwitch_LIBS += devIocStats
WRSwitch_LIBS += alive
WRSwitch_LIBS += acnetPV
WRSwitch_LIBS += calc
WRSwitch_LIBS += pv seq
WRSwitch_LIBS += sscan
WRSwitch_LIBS += tcast
WRSwitch_LIBS += reccaster
WRSwitch_LIBS += autosave
WRSwitch_LIBS += caPutLog
WRSwitch_LIBS += pvxsIoc pvxs
WRSwitch_LIBS += devSnmp
# WRSwitch_registerRecordDeviceDriver.cpp derives from WRSwitch.dbd
WRSwitch_SRCS += WRSwitch_registerRecordDeviceDriver.cpp
WRSwitch_SRCS += CopyArray.c
# Build the main IOC entry point on workstation OSs.
WRSwitch_SRCS_DEFAULT += WRSwitchMain.cpp
WRSwitch_SRCS_vxWorks += -nil-
# Add header files:
#USR_INCLUDES += -I/usr/include
#
# Finally link to the EPICS Base libraries
WRSwitch_LIBS += $(EPICS_BASE_PVA_CORE_LIBS) # Added by Varuna
WRSwitch_LIBS += nt pvaClient pvDatabase # Added by Varuna
WRSwitch_LIBS += $(EPICS_BASE_IOC_LIBS)
#USR_CFLAGS += `net-snmp-config --cflags` # W.T.
#USR_CPPFLAGS += `net-snmp-config --cflags` # W.T.
#USR_CFLAGS += -DNETSNMP_NO_INLINE
#USR_LDFLAGS += `net-snmp-config --libs` # W.T.
#PROD_LDLIBS += `net-snmp-config --libs` # W.T.
#USR_CFLAGS += -fPIE
#USR_CPPFLAGS += -fPIE
USR_CFLAGS += `net-snmp-config --cflags`
USR_CFLAGS += -fPIE
USR_LDFLAGS += `net-snmp-config --libs`
PROD_LDLIBS += `net-snmp-config --libs`
#USR_CFLAGS += $(shell $(PERL) $(SNMP)/snmpApp/src/getNetSNMPversion.pl)
# Added by Varuna
#USR_CPPFLAGS += $(shell $(PERL) $(SNMP)/snmpApp/src/getNetSNMPversion.pl)
# Added by Varuna
USR_CXXFLAGS_DEFAULT += -fno-operator-names -pedantic
USR_CXXFLAGS += -W -Wall
USR_CXXFLAGS += -fPIE
#===========================
include $(TOP)/configure/RULES
#----------------------------------------
# ADD RULES AFTER THIS LINE
#USR_CXXFLAGS_DEFAULT += -fno-operator-names -pedantic
#USR_CXXFLAGS += -W -Wall
*********************************************************************** END OF MAKE FILE *********************************************
In my RELEASE.local file I am specifying the correct location of snmp directory as well.
*********************** START of RELEASE.LOCAL FILE *********************************************
EPICS_BASE=/usr/local/epics/base
SUPPORT=/usr/local/epics/Support
SNCSEQ=$(SUPPORT)/seq
ASYN=$(SUPPORT)/asyn
IPAC=$(SUPPORT)/ipac
CALC=$(SUPPORT)/calc
STD=$(SUPPORT)/std
SSCAN=$(SUPPORT)/sscan
STREAM=$(SUPPORT)/StreamDevice
BUSY=$(SUPPORT)/busy
IOCSTATS=$(SUPPORT)/iocStats
LINSTAT=$(SUPPORT)/linStat
LUA=$(SUPPORT)/lua
PCRE=$(SUPPORT)/pcre
SNMP=$(SUPPORT)/snmp
ACNETPV=$(SUPPORT)/acnetPV
ALIVE=$(SUPPORT)/alive
TCAST=$(SUPPORT)/tcast
RECASTER=$(SUPPORT)/RecCaster
AUTOSAVE=$(SUPPORT)/autosave
PUTLOG=$(SUPPORT)/caPutLog
******************************************* END OF RELEASE.LOCAL FILE ****************************
**********************************. START OF ST.CMD FILE **********************************************
#!../../bin/linux-x86_64/WRSwitch
#- You may have to change WRSwitch to something else
#- everywhere it appears in this file
< envPaths
## NTP Time Synchronisation
#epicsEnvSet("EPICS_TS_NTP_INET","131.225.121.105")
## Do OS-specific startup here
epicsEnvSet("EPICS_HOST_ARCH","linux-x86_64")
epicsEnvSet("ENGINEER","$(ENGINEER=vmeddage)")
epicsEnvSet("LOCATION","$(LOCATION=BTE-223)")
epicsEnvSet("EPICS_IOC_OWNER","vmeddage")
epicsEnvSet("EPICS_IOC_GROUP","FE_group")
epicsEnvSet("EPICS_IOC_LOCATION","BTE-223")
epicsEnvSet("IOCDIR","WRSwitch")
epicsEnvSet("MIBDIRS","+/export/home1/vmeddage/.snmp/mibs")
cd "${TOP}"
## Register all support components
# Load SNMP support database
dbLoadDatabase("${EPICS_IOCTOPS}/${IOCDIR}/dbd/WRSwitch.dbd",0,0)
WRSwitch_registerRecordDeviceDriver(pdbbase)
## SNMP specifics
devSnmpSetSnmpVersion(10.200.34.10,SNMP_VERSION_2C)
devSnmpSetParam("DebugLevel",2)
devSnmpSetParam("SessionTimeout", "1000000")
## Protocal file
#epicsEnvSet("STREAM_PROTOCOL_PATH","/usr/local/epics/Support/cmsIon/cmsIonApp/protocol")
## Load record instances
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchalive.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchwatcher.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchiocAdminSoft.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchAcnetDevice.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchExtra.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchtcast.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/WRSwitchRecCaster.db")
#dbLoadRecords("${EPICS_IOCTOPS}/${IOCDIR}/db/test.db")
dbLoadTemplate("${EPICS_IOCTOPS}/${IOCDIR}/db/wrz16_pip2_switch.substitution")
## Put logging and access security
epicsEnvSet("EPICS_CA_JSON_PUT_LOG_ADDR","/home/epics/epicsDEV/PutLog/test.json")
asSetFilename("${EPICS_IOCTOPS}/${IOCDIR}/iocBoot/ioc${IOCDIR}/ioc.acf")
iocInit()
caPutJsonLogInit localhost:7011
## Create as many matching Acnet devices as needed and uncomment
#createAcnetDeviceRecord Z:WRSwitchCRTL
dbpf PIP2:Time_CRTL_SYS:alive.EV1 ${ARCH}
dbpf PIP2:Time_CRTL_SYS:alive.EV2 ${EPICS_VERSION_SHORT}
dbpf PIP2:Time_CRTL_SYS:alive.EV3 ${EPICS_BASE}
dbpf PIP2:Time_CRTL_SYS:alive.EV4 ${EPICS_SUPPORT}
dbpf PIP2:Time_CRTL_SYS:alive.EV5 vmeddage
dbpf PIP2:Time_CRTL_SYS:alive.EV6 BTE-223
dbpf PIP2:Time_CRTL_SYS:alive.EV7 "Front Ends"
*************************************************** END OF ST.CMD FILE *********************************************
| ||||||||||||||
| ANJ, 19 Mar 2026 |
·
Home
·
News
·
About
·
Talk
·
Base
·
Modules
·
Extensions
·
· Distributions · Download · Documents · Links · Licensing · |