Installation on Linux

CapturyLive requires a performant PC and careful installation to ensure optimum performance. The following describes how to prepare a Ubuntu system for running CapturyLive. We need to ensure that the following configuration steps are performed:

You should have received a link to an archive with CapturyLive in it from us. Unzip this file and run CapturyLive in the bin folder.

A helper script that performs most of the steps described below can be found here. Execute it with sudo.

Network Interfaces

At this point we assume that potentially required drivers have already been installed on the system. The configuration that is described in the following is not strictly required. They just tends to result in higher stability and performance. Copy the following into the file /etc/sysctl.d/50-captury.conf.

# increase network receive buffer size (aka socket buffer size) to 1MB default and 10MB max net.core.rmem_max=10485760 net.core.rmem_default=1048576 # set network packet receive queue size in kernel net.core.netdev_max_backlog=5000 # set how many packets are processed in one softirq call net.core.netdev_budget=300 # disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1 # disable reverse path filtering net.ipv4.conf.all.rp_filter = 0

Also append one line net.ipv4.conf.enpXsY.rp_filter = 0 for each network interface that you want to connect cameras to. Replace enpXsY with the name of the interface, e.g. enp5s0. Then run the following:

sudo sysctl -p /etc/sysctl.d/50-captury.conf

There are three different ways to configure a network card in Linux. You can edit two types of config files: the legacy /etc/network/interfaces, or the more modern netplan at /etc/netplan/*.yaml. The advantage is that the config files are less easy to mess up for the end user but the learning curve is a bit steeper. Alternatively, you can use the graphical NetworkManager interface to configure your network cards. The important points for our system are:

  • The network interfaces have static IP addresses. I.e. disable DHCP.
  • The network interfaces run on non-overlapping subnets. E.g. 192.168.20.1/24 and 192.168.43.3/24 are non-overlapping but 169.254.234.34/16 and 169.32.1/16 are overlapping.
  • The MTU of the network interfaces are set to 9000 or higher. This reduces CPU load and improves network performance. If this is not possible this will often not be a problem but if you encounter frame drops this might be the issue. For optimum performance we highly recommend enabling Jumbo frames.
  • Make sure you have enough bandwidth for each camera. In theory our standard cameras require 1Gbit bandwidth max. In practice we recommend using no more than 8 cameras on a single 10Gbit link.

We highly recommend running the cameras in a network that is not connected to your LAN. This can be achieved with a VLAN or by air-gapping.

Please also make sure that Jumbo frames / MTU 9000 is enabled on all switches between the tracking computer and the cameras. You can check that everything has been set up correctly by opening Settings - Network Settings... in the main menu. If the MTU for connected cameras shows a number < 9000 you need to configure your switch. Please consult the manufacturer documentation of the switch on how to do that.

Nvidia drivers

There are different methods of installing nvidia drivers. The most recent driver is available in a non-official repository. You should be able to use the standard driver just as well. The following uses the unofficial repository:

sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install -y nvidia-driver-545

If secure boot is enabled the installation will ask for an MOK enrolment password. Just make one up. I normally use captury123. Repeat it when prompted. On reboot it'll ask you whether you want to enrol a new MOK. Select yes and type in your password again.

Dependencies

A few packages have to be installed because CapturyLive depends on them.

sudo apt install -y libqt5xml5 libqt5opengl5 libqt5webkit5 linuxptp chrony

There are a few more packages that we recommend installing because they make debugging performance issues easier.

sudo apt install -y ethtool htop dstat exfat-fuse

IEEE 1588 Precision Time Protocol (PTP)

PTP is a protocol that facilitates synchronizing network connected devices via ethernet at a high precision - normally in the order of microseconds. We've already installed the required package for running ptp.

  • Unfortunately, Ubuntu 20.04 and early ship a broken configuration script for the ptp service. So you need to edit the file /lib/systemd/system/ptp4l.service and remove the -i eth0.
  • Then edit the file /etc/linuxptp/ptp4l.conf and change the line time_stamping hardware to time_stamping software. On the one hand this compatible with more NICs and on the other hand this lets the PC clock drive the PTP clock. So those two clocks cannot go out of sync.
  • Finally, stop the timesyncd service. That's the service that runs an NTP (network time protocol) client, which interferes with PTP. Use the following commands to disable and stop it:

sudo systemctl stop systemd-timesyncd.service sudo systemctl disable systemd-timesyncd.service

Reload the systemd configuration with

sudo systemctl daemon-reload

and start and enable the PTP service. There are different methods for Ubuntu 20.04 and Ubuntu 22.04. In Ubuntu 20.04 there is one client that attaches to multiple interfaces. This is configured in the config file by adding [enpXsY] to the end of the config file /etc/linuxptp/ptp4l.conf. Then start and enable the service with

sudo systemctl start ptp4l sudo systemctl enable ptp4l

On Ubuntu 22.04 you start one service per network interface:

sudo systemctl start ptp4l@enpXsY

Teamviewer

We use teamviewer for remote support. So we recommend you install it in case you need help at some point. The following commands download the teamviewer package and install it.

wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb sudo dpkg -i teamviewer_amd64.deb sudo apt-get install -f rm teamviewer_amd64.deb

Tehuti drivers

If you have a Tehuti based network card you need to manually install its driver. Depending on your kernel version the commands for doing so are slightly different. The following commands work for Ubuntu 22:

sudo git clone -b release/tn40xx-006 https://github.com/acooks/tn40xx-driver.git /usr/src/tn40xx-006 sudo dkms add -m tn40xx -v 006 sudo dkms install -m tn40xx -v 006

For newer kernels refer to the driver documentation on github.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.