# Confirm that you have the board the computer with VID=1a4a ("SLAC") and PID=2030 ("AXI Stream DAQ")
$ lspci -nn | grep SLAC
04:00.0 Signal processing controller [1180]: SLAC National Accelerator Lab TID-AIR AXI Stream DAQ PCIe card [1a4a:2030]

# Clone the driver github repo:
$ git clone --recursive https://github.com/slaclab/aes-stream-drivers

# Go to the driver directory
$ cd aes-stream-drivers/data_dev/driver/

# Build the driver
$ make

# Load the driver
$ sudo /sbin/insmod ./datadev.ko cfgSize=0x200000 cfgRxCount=256 cfgTxCount=16

# Give appropriate group/permissions
$ sudo chmod 666 /dev/datadev*

# Check for the loaded device
$ cat /proc/datadev_0

How to configure Ubuntu to autoload the PCIe kernel driver at boot

# Clone the repo in /u1 as root
$ cd /u1
$ sudo git clone https://github.com/slaclab/aes-stream-drivers.git

# Copy a working load script from another machine
$ sudo scp $AFS_USERNAME@rdsrv407:/u1/aes-stream-drivers/data_dev/driver/load /u1/aes-stream-drivers/data_dev/driver/load

# Configuration the load script to your liking
$ sudo nano /u1/aes-stream-drivers/data_dev/driver/load

# Copy a working rc.local script from another machine
$ sudo scp $AFS_USERNAME@rdsrv407:/etc/rc.local /etc/rc.local 

# Configuration the rc.local script to your liking
$ sudo nano /etc/rc.local

# Enable the rc.local service: Based on https://www.linuxbabe.com/linux-server/how-to-enable-etcrc-local-with-systemd
$ sudo chmod +x /etc/rc.local
$ sudo systemctl enable rc-local
$ sudo systemctl start rc-local.service
$ sudo systemctl status rc-local.service

Example of load script

$ cat /u1/aes-stream-drivers/data_dev/driver/load
#!/bin/sh

# remove old driver
/sbin/rmmod -s datadev

# add new driver
/sbin/insmod /u1/aes-stream-drivers/data_dev/driver/datadev.ko cfgSize=0x200000 cfgRxCount=256 cfgTxCount=16 || exit 1

# give appropriate group/permissions
chmod 666 /dev/datadev*

Example of rc.local script

$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
###################################################################

# mount according to /etc/fstab (in case a drive didn't mount during boot up)
mount -a

###################################################################

# Load the SLAC DMA driver

cd /u1/aes-stream-drivers/data_dev/driver/; make clean; make
/u1/aes-stream-drivers/data_dev/driver/load

###################################################################

exit 0
  • No labels