epics-modules / dxp

EPICS support for digital x-ray spectroscopy electronics from X-ray Instrumentation Associates (XIA)
2 stars 3 forks source link

dxp Mercury startup fails Ubuntu20.0.4 linux-x86_64 with error: Can't open access to I/O ports: Operation not permitted #8

Closed LeeYangLBLBCS closed 1 year ago

LeeYangLBLBCS commented 1 year ago

I'm getting this error when trying to start IOC: bl531@bl531controls:/opt/epics/modules/synApps_6_1_epics7/support/dxp-R6-0/iocBoot/iocMercury$ ../../bin/linux-x86_64/startWithIopl3 4element.cmd Can't open access to I/O ports: Operation not permitted The error appears to be coming from the line calling a function "iopl" in dxpApp/src/startWithIopl3.c, though I couldn't figure out what "iopl" is.

MarkRivers commented 1 year ago

iopl mean I/O privilege. It allowed non-privileged users to access the PC parallel ports. This is obsolete and no longer needed.

Just run the Mercury with

../../bin/linux-x86_64/dxpApp 4element.cmd
LeeYangLBLBCS commented 1 year ago

thanks. It turns out that dxpApp is not generated.
Which lead me to think there is something wrong with my libUSB install, though
Installing libUSB didn't help: 
sudo apt install libusb-1.0-0-dev
sudo apt install libusb-1.0-0

My CONFIG_SITE file is:
=================================================
# To make a standalone distribution uncomment this line
#STATIC_BUILD=YES

# Uncomment this line if you have libusb-0.1 installed on your Linux system
LINUX_USB_INSTALLED=YES

# Use site-specific definitions from areaDetector to find HDF5, etc.
-include $(AREA_DETECTOR)/configure/CONFIG_SITE
=================================================

Any idea what else I'm missing?
MarkRivers commented 1 year ago

There are 2 versions of libusb. libusb-1.0 is the new version. libusb-0.1 is the old version. You need to install the old version, because that is what dxp uses. Both versions of libusb can be installed at the same time.

MarkRivers commented 1 year ago

You should post the output of the complete rebuild of the dxp module.

LeeYangLBLBCS commented 1 year ago

I installed libusb-0.1-4, as that is the only one I can find that's closest to libusb-0.1-dev. dxpApp is still not linked. Here is the entire build log: dxp_build_log.txt

MarkRivers commented 1 year ago

You probably need to uncomment this line in dxp/configure/CONFIG_SITE LINUX_USB_INSTALLED=YES

LeeYangLBLBCS commented 1 year ago

it was uncommented. I've posted it's contents earlier:
================================================
# To make a standalone distribution uncomment this line
#STATIC_BUILD=YES

# Uncomment this line if you have libusb-0.1 installed on your Linux system
LINUX_USB_INSTALLED=YES

# Use site-specific definitions from areaDetector to find HDF5, etc.
-include $(AREA_DETECTOR)/configure/CONFIG_SITE
MarkRivers commented 1 year ago

At the top-level of dxp send the output of these commands:

ls -l lib/linux-x86_64
ls -l bin/linux-x86_64
LeeYangLBLBCS commented 1 year ago

here it is: bl531@bl531controls:/opt/epics/modules/synApps_6_1_epics7/support/dxp-R6-0$ ls -l lib/linux-x86_64 total 7504 -r--r--r-- 1 bl531 bl531 2490346 Oct 12 12:33 libdxp.a -r-xr-xr-x 1 bl531 bl531 2460688 Oct 12 12:33 libdxp.so -r--r--r-- 1 bl531 bl531 1809926 Oct 12 12:33 libhandel.a -r-xr-xr-x 1 bl531 bl531 917616 Oct 12 12:33 libhandel.so

MarkRivers commented 1 year ago

Please check /opt/epics/modules/synApps_6_1_epics7/support/configure/CONFIG_SITE and /opt/epics/modules/synApps_6_1_epics7/support/configure/CONFIG_SITE.linux-x86_64. One of those files might be setting LINUX_USB_INSTALLED=NO, which overrides the setting in dxp/configure.

MarkRivers commented 1 year ago

You did not send ls -l for the bin/ directory.

LeeYangLBLBCS commented 1 year ago

I found the problem - the upper level CONFIG_SITE is overriding it. After correcting that, I got the output: bl531@bl531controls:/opt/epics/modules/synApps_6_1_epics7/support/dxp-R6-0$ ls -l bin/linux-x86_64 total 96 -r-xr-xr-x 1 bl531 bl531 76552 Oct 12 13:09 dxpApp -r-xr-xr-x 1 bl531 bl531 17032 Oct 12 13:09 startWithIopl3