Standalone Bern Readout Instructions » History » Version 2

« Previous - Version 2/5 (diff) - Next » - Current version
Tyler Boone, 11/19/2018 05:40 PM

Standalone Bern Readout Instructions

Getting ready to run the code

In order to run the readout code, you first need to run the up-to-date febdrv software. Therefore, make sure your sbnddaq-readout repository is up to date. Under sbnddaq-readout/projects/bern/, you should find the three relevant files to running the febdrv software. Make sure you run the 'makeall' script so that all the other scripts are properly made, then you can begin.

Febdrv, febconf, and febctl


For each board chain that you want to run, you need a terminal that is running febdrv. febdrv requires three arguments. The first is the name of the ethernet port that the board is hooked up to. The second is the minimum polling time that the software should use to ask the front end board for data. The third is the first of four local TCP socket numbers to be used by the software to listen, publish, and give statistics/binary statistics on the data. For example, the input:

./febdrv enp4s0 300 5555

tells febdrv to connect to the board hooked up to the ethernet socket with the name enp4s0, to use a 300 ms poll time with that board chain, and to set the responder, publisher, statistics, and binary statistics ZeroMQ sockets to tcp://localhost:5555, tcp://localhost:5556, tcp://localhost:5557, and tcp://localhost:5558 respectively. Once correctly initialized, the terminal running febdrv should display a confirmation that the board(s) on the chain are connected, along with their MAC5 addresses. The MAC5 addresses of the boards are important, as they are needed to use febconf and febctl. Below is an example of terminal output when running febdrv, the line most helpful for the next sections is the one that says 'Newly connected FEB...'.


febconf requires an instance of febdrv to communicate with, along with 3-4 arguments that specify which TCP port to connect to, two configuration files (which should be in your CONF/ directory in projects/bern/), and what it calls the 'FEB S/N', which is the last bit of the given mac5 address by febdrv, converted from hex in the febdrv output to decimal for febconf's (and, later, febctl's) input. If a given mac5 is not given, it will broadcast for all mac5 addresses on the chain, so if all boards need the same config, then no need to enter an address. Below is an example of what the script will tell you to enter if your code is compiled correctly.


febctl requires 2-3 arguments, as well as an active instance of febdrv to communicate with. The argument