# Provision miniDAQ ## Reconfigure logical volume * Reduce `/home` LVM to be 100GB; * Create `/scratch` with all the remaining space. ``` umount /home lvreduce -L 100G /dev/centos/home mkfs.xfs -f /dev/centos/home mount /home lvcreate -l 100%FREE -n scratch centos mkfs.xfs /dev/centos/scratch mkdir /scratch echo "/dev/mapper/centos-scratch /scratch xfs defaults 0 0" >> /etc/fstab mount -a chmod go+w /scratch # recreate users' home directories if necessary. ``` ## Install Ansible * `sudo yum install epel-release` * `sudo yum install ansible` ## Software installation via Ansible * Git clone `np04online` repo from CERN GitLab; * Add `localhost` to `hosts` file; * Modify `install_software.yml`, add `hosts: localhost` and `connection: local`; * Remove proxy setting with pip in `roles/np04software/tasks/main.yml`; * Run `ansible-playbook install_software.yml --limit=localhost`. ## `cvmfs` ### Install `cvmfs` ``` bash yum-config-manager --add-repo http://cvmrepo.web.cern.ch/cvmrepo/yum/cernvm.repo wget http://cvmrepo.web.cern.ch/cvmrepo/yum/RPM-GPG-KEY-CernVM -O /etc/pki/rpm-gpg/RPM-GPG-KEY-CernVM yum install cvmfs cvmfs-config-default ``` ### Configure `cvmfs` ``` bash wget http://home.fnal.gov/~dingpf/cvmfs.tar.gz rm -rf /etc/cvmfs/* tar zxvf cvmfs.tar.gz; sudo mv cvmfs/* /etc/cvmfs/ mkdir -p /cvmfs/dune.opensciencegrid.org mkdir -p /cvmfs/fermilab.opensciencegrid.org mkdir -p /cvmfs/larsoft.opensciencegrid.org cvmfs_config reload mount -t cvmfs dune.opensciencegrid.org /cvmfs/dune.opensciencegrid.org mount -t cvmfs larsoft.opensciencegrid.org /cvmfs/larsoft.opensciencegrid.org mount -t cvmfs fermilab.opensciencegrid.org /cvmfs/fermilab.opensciencegrid.org ``` ## Run `artdaq` Demo ### Install artdaq related pacakges (most of dependencies are availabel in `cvmfs`) ``` cd /scratch/ mkdir dingpf cd dingpf/ wget https://cdcvs.fnal.gov/redmine/projects/artdaq-demo/repository/revisions/develop/raw/tools/quick-mrb-start.sh chmod +x quick-mrb-start.sh ./quick-mrb-start.sh --tag v3_06_01 ``` ### Setting up environment to run the demo (in VNC) ``` source setupARTDAQDEMO setup artdaq_daqinterface v3_06_01 export DAQINTERFACE_USER_SOURCEFILE=$PWD/DAQInterface/user_sourcefile_example source $ARTDAQ_DAQINTERFACE_DIR/source_me ``` ### Now run the demo (in VNC) ``` ipcrm -a;./run_demo.sh --config demo --comps component{01..02} --no_om --runduration 20 ``` ## FELIX ### Hardware installation Check compatibility of server specifications. Only motherboards with Wupper firmware will work. Connect FELIX-712 to PCIe x16 slot Connect FELIX-712 PCIe power connector to the motherboard (check connection of the motherboard; in our case, a CPU-to-PCIe GPU 8pin power cable was needed) (in our case it was SM CBL-PWEX-0665 Pcle 8pinfe) Check if device is found: ``` lspci | grep Xil ``` Connect JTAG Install JTAG driver from Xilinx installation path ``` sudo source /scratch/Xilinx/Vivado/201*/data/xicom/cable_drivers/lin64/digilent/install_digilent.sh ``` ### Driver and FELIX software installation * FELIX driver needs `dkms` and `kernel-devel` installed; ``` wget https://atlas-project-felix.web.cern.ch/atlas-project-felix/user/dist/software/driver/tdaq_sw_for_Flx-4.5.0-2dkms.noarch.rpm sudo yum install tdaq_sw_for_Flx-4.5.0-2dkms.noarch.rpm sudo /etc/init.d/drivers_flx start ``` In case you want to stop the driver: ``` /etc/init.d/drivers_flx stop ``` * Pay attention to the output of `yum install` command above, and verify that new kernel modules are built; if not, you will get errors when running the `drivers_flx start` saying modules `io_rcc`, `cmem_rcc` and `flx` are not found; * In case of module building step was skipped when installing the driver rpm package, it is very likely dkms did not found the kernel header due to broken symlinks. [This page](https://support.jazznetworks.com/hc/en-us/articles/360007333134-Centos-RH-7-Getting-kernel-headers-for-this-kernel-does-not-seem-to-be-installed-) has more details about how to fix the issue. * Get FELIX software, go to software directory, install the software and start it. ### Configuring and running FELIX software * Used this tarball containing all FELIX releated software (felix-04-01-00-97-x86_64-centos7-gcc8-opt.tar.gz); * some of the binaries requries gcc 8 and Qt 5.12 (both of these packages are available as UPS products in cvmfs); * e.g. to run `elinkconfig`: * `ssh` to `cleopatra` with X11 forwarding turned on; ``` cd /scratch/FELIX/ tar -xvzf felix-04-01-00-97-x86_64-centos7-gcc8-opt.tar.gz cd /scratch/FELIX/felix-04-01-00-97/x86_64-centos7-gcc8-opt/ source setup.sh ``` To set up: ``` cd /scratch/FELIX/felix-04-01-00-97/x86_64-centos7-gcc8-opt/ source setup.sh source /software/cvmfs/dune.opensciencegrid.org/dunedaq/DUNE/products_dev/setup setup qt v5_12_3a -q e19 ``` To test, run To download firmware: * open Vivado * open Hardware Manager * Auto connect to FELIX * Download bitstream `FLX712_FULLMODE_12CH_CLKSELECT_GIT_JBSC_refresh_rm-4.7_125_190821_11_11.bit` To configure, open ``` elinkconfig ``` In window: * Select `Full mode` * Generate/Upload -> `8/Incr/8` -> Upload To test, run ``` fdaq -e -t 2 ``` ### Install daqling ``` 1. Swap zeromq3-devel with zeromq-devel (default is zeromq4) by "yum swap zeromq3-devel zeromq-devel” 2. Run the Ansible playbook to set up the host; 3. Add "export FELIX_LIB=${FELIX_ROOT}/lib” and "export FELIX_INC=${FELIX_ROOT}/include” to "/scratch/FELIX/felix-04-01-00-97/x86_64-centos7-gcc8-opt/setup.sh" 4. source /scratch/FELIX/felix-04-01-00-97/x86_64-centos7-gcc8-opt/setup.sh 5. Comment out line 164 and 165 in "daqling-master/src/Modules/FelixReadout/CardReader.cpp” 6. yum install libpmem-devel 7. ln -s /usr/lib64/libpmemblk.so.1 /usr/lib/libpmemblk.so 8. Add "set(FELIX_LIB $ENV{FELIX_LIB})”, "set(FELIX_INC $ENV{FELIX_INC})”, "include_directories(/software/software/flxcard)” and "/software/software/drivers_rcc” in “daqling/src/Modules/FelixReadout/CMakeLists.txt” 9. Line 139 in “daqling/CMakeLists.txt” changed to set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wzero-as-null-pointer-constant -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wredundant-decls -Wsign-conversion -Wstrict-null-sentinel -Wstrict-overflow=5 -Wundef -Wformat-security -fdiagnostics-color=auto -Wno-overloaded-virtual”) 10. source daqling/setup.sh and then run `cmake3` and build. (The modified package can be installed to /home/USERNAME/daqling-master, and the built directory can be set to /home/USERNAME/daqling-master/build) ``` ``` cd /software git clone https://gitlab.cern.ch/rsipos/daqling.git cd daqling source cmake/setup.sh cd ansible ansible-playbook set-up-host.yml --ask-become ansible-playbook install-webdeps.yml --ask-become ansible-playbook install-redis.yml --ask-become ansible-playbook install-boost-1_70.yml --ask-become cd .. setup gcc v8_2_0 setup cmake v3_17_3 source cmake/setup.sh mkdir build cd build cmake3 ../ -D CMAKE_C_COMPILER=/bin/gcc -D CMAKE_CXX_COMPILER=/bin/g++ -DENABLE_BOOST=1 make ``` Running the DAQ demo ``` source cmake/setup.sh daqpy configs/demo.json start [run_num] stop down ``` ## Build and Run `dune DAQ release` ==To be finished==