Setup
Prerequisites
- openSUSE Leap 15.6 (recommended)
- Root access required
- Minimum:
- 32 GB RAM (required for Arria 10 firmware compilation)
- SSD storage
-
PCIe slot with at least x8 electrical connectivity
-
Arria 10 (A10) board installed with:
- PCIe power connected
- USB connected
- Clock source connected (or SMA loopback for testing)
OS Installation
Recommended Settings
- Filesystem: ext4
- Install on SSD
- Disable snapshots
- Do not create swap
- Create user:
mu3e - Configure root password
Repository Setup
Add repositories:
sudo zypper addrepo <repo-url> <alias>
sudo zypper refresh
sudo zypper dup --allow-vendor-change
Recommended repositories:
- science
- network
- vscode
Required Packages
Install all required packages before proceeding.
General
sudo zypper install git cmake kernel-devel htop tmux gcc12 gcc12-c++ python
Additional Components
Install packages required for:
- ROOT
- MIDAS
- Kernel driver
- Geant4
- Quartus
- VS Code
(Refer to package lists in the full documentation if dependencies are missing.)
Clone Repositories and install
MIDAS
git clone git@bitbucket.org:tmidas/midas.git
cd midas
git submodule update --init --recursive
mkdir build
cd build
cmake ..
make install
Musip
git clone git@github.com:makoeppel/musip.git
cd musip
ROOT Installation
git clone --branch latest-stable --depth=1 https://github.com/root-project/root.git ~/root_src
mkdir -p ~/compiled_software/root_build
cd ~/compiled_software/root_build
Configure and build:
cmake \
-DCMAKE_INSTALL_PREFIX=/opt/root \
-DCMAKE_CXX_STANDARD=17 \
-DLLVM_CXX_STD=c++17 \
-Dxrootd=OFF \
-DCMAKE_C_COMPILER=/usr/bin/gcc-12 \
~/root_src
make -j12
Verify:
root
root-config --cflags
Expected:
-std=c++17
Configure .bashrc
Required sections:
Quartus
export ALTERAPATH="$HOME/programs/intelFPGA/18.1"
export QUARTUS_ROOTDIR=${ALTERAPATH}/quartus
export PATH=$PATH:${ALTERAPATH}/quartus/bin
Set license server:
export LM_LICENSE_FILE="<license-server>"
ROOT
source /opt/root/bin/thisroot.sh
MIDAS
export MIDASSYS=$HOME/midas
export MIDAS_EXPTAB=$HOME/musip/online/exptab
export MIDAS_EXPT_NAME=Mu3e
export PATH=$PATH:$MIDASSYS/bin
Online
Reload:
source ~/.bashrc
Geant4 (Optional)
Install only if required for simulation work.
Typical workflow:
mkdir ~/geant4_src
mkdir ~/compiled_software/geant4_build
ccmake <geant4-source>
make -j<N>
make install
Enable:
source geant4.sh
Test using example B1.
Quartus Installation
Recommended version:
- Quartus Prime Pro 18.1
Requirements:
- ≥32 GB RAM
- ≥32 GB free disk space
Install:
mkdir ~/programs
cd ~/programs
tar -xvf Quartus-18.1*.tar
./setup.sh
Install support for:
- Arria 10
- Arria V
- MAX10
Verify:
quartus
Udev Rules
USB Blaster
Create:
/etc/udev/rules.d/51-usbblaster.rules
with:
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="0666"
Create:
sudo nano 99-mudaq.rules
with:
KERNEL=="mudaq*", OWNER="root", GROUP="users", MODE="0666"
Reload:
sudo udevadm control --reload-rules
sudo udevadm trigger
Verify:
jtagconfig
Ff your a10 dev board is properly connected you should see something like this:
1) PCIe40 [1-13]
02E660DD 10AX115H1(.|E2|ES)/10AX115H2/..
020A40DD 5M(1270ZF324|2210Z)/EPM2210
A10 Firmware Build
Select board:
cd ~/musip/firmware/a10_board
Build:
make
make flow
make app
Upload:
make pgm
make app_upload
Open terminal:
make terminal
You should see the FPGA menu.
Note
Some systems need to be rebooted to get the PCIe working.
Therefore, reboot the system and run sudo ./recover_pcie.sh.
Build Kernel Driver
cd ~/musip/midas_fe/kerneldriver
make
Load:
sudo ./recover_pcie.sh
Expected:
loaded 'mudaq'
Verify PCIe Communication
cd ~/musip/build/tools
./rw rr 0x1
Then:
./dmatest 2 0 1 0x1 5 0
1 in the menu followed by q.
Inspect:
less memory_content.txt
Non-zero data confirms successful communication.
DAQ Startup Procedure
First-Time Setup
odbinit -s 100MB
Load Firmware
cd ~/musip/firmware/a10_board
make pgm
make app_upload
Load Driver
cd ~/musip/midas_fe/kerneldriver
sudo ./recover_pcie.sh
Essential Frontends
Start in this order:
mhttpdmloggerquads_config_fereadout_fequadana
Quick Validation Checklist
- [ ] ROOT starts successfully
- [ ]
root-config --cflagsreports C++17 - [ ] Quartus launches
- [ ]
jtagconfigdetects hardware - [ ] FPGA menu appears via
make terminal - [ ]
lspcishows Altera device - [ ]
recover_pcie.shloadsmudaq - [ ]
rw rr 0x1returns firmware hash - [ ] DMA test produces valid data
- [ ] MIDAS available at
localhost:8080
Once all checks pass, the DAQ machine is operational.