IMAGO Linux SDK  1.7.11.0 (2024-12-03)
Driver Release Notes

Release Notes for Linux drivers / kernel modules

imago_fpga

Public GitHub repository: imago_fpga.

This driver is used for FPGA communication by the following hardware:

  • VisionBox AGE-X1/2/4/5, VisionBox LE MANS, VisionBox DAYTONA
  • PCIe Machine Vision Controller card
  • PCIe Camera Link card
  • VisionCam XM / XM2
  • VisionSensor PV3
  • Machine Vision Manager 2
Driver Release Notes for imago_fpga
Version SDK version Changes
1.3.1.0 1.7.11.0
  • Allocate DMA jobs dynamically using slab cache and remove module parameter 'max_dma_buffers'.
  • Fix compatibility with old kernel versions.
  • Code optimizations.
1.3.0.0 1.7.10.0
  • Add Real-Time-Clock support for the VisionSensor PV3 with I/O Expansion.
  • Fix possible problems reading registers after timeout.
  • Fix build error with GCC 12 (Debian 12).
  • Avoid DKMS warnings.
1.2.2.0 1.7.9.0
  • Add support for the VisionCam XM2.
  • Fix compatibility with Linux kernel ≥ 5.12.
  • Avoid race condition caused by early device access while module initialization was in progress.
1.2.1.0 1.7.8.0
  • Add support for the VisionBox AI
1.2.0.0 1.7.7.0
  • Rename kernel module from agexpcidrv to imago_fpga.
  • Fix compatibility with Linux kernel ≥ 5.10.
  • Add support for USB-HID device (Machine Vision Manager 2).
  • Add support for DMA completion timestamps.
  • Increase maximum number of FPGAs from 4 to 32.
  • Let the kernel handle restart of interrupted register reads by signals to avoid problems with SIGINT processing when using Python bindings.
  • PCI / PCIe: avoid priority inversion for threaded interrupts when using PREEMP_RT kernel
  • Make processing of DMA interrupts adjustable using the module parameter dma_update_in_hwi.
1.1.16.0 1.7.5.0
  • Make reading of FPGA registers interruptible by signals and support restart of the read operation.
  • Fix compatibility with Linux kernel ≥ 5.0.
1.1.15.0 1.7.4.0
  • Fix possible race condition during abortion of waiting DMA threads (Camera Link / VisionCam XM). This could lead to additional errors in user space while waiting for buffers after the abort operation was completed.
  • Make number of maximum buffers for each DMA channel adjustable with the module parameter 'max_dma_buffers' (the default is still 32).
1.1.14.1 1.7.3.1
1.1.14.0 1.7.2.0
  • Add support for the VisionSensor PV3 (FPGA SPI interface).
1.1.13.0 1.7.1.0
  • Bugfix: invalid bit assignment of FPGA device identifiers could lead to misinterpretation as bus priority bit.
1.1.12.0 1.7.0.1
  • VisionCam XM:
    Add workaround for PCIe MSI race condition on Linux kernel versions < 4.14 which can lead to FPGA communication timeout → enable next FPGA interrupt within interrupt thread instead of hardware interrupt.
1.1.11.0 1.6.9.1
  • PCI / PCIe: move interrupt handling from tasklets to hardware interrupt to prevent concurrency with other software interrupts.
  • VisionCam XM: move DMA interrupt handling from tasklets to hardware interrupt to avoid processing delay caused by other software interrupts, therefore resulting in invalid frames at high frame rates.
  • VisionCam XM: fix DMA cache coherence problems during image acquisition found in the previous SDK release.
1.1.10.0 1.6.9.0
  • Enable reuse of VisionBox devices which are not closed when a process is terminated.
  • Release DMA buffers left from dead processes.
  • Reduce DMA overhead by only mapping / unmapping DMA buffers during allocation / release, not while adding / removing buffers from the acquisition queue. This mainly reduces overhead for systems using an IOMMU for PCIe. This mode requires libAGEXHAL.so ≥ 1.6.9.0.
1.1.9.3 1.6.8.1
  • Add support for the VisionBox DAYTONA (SPI interface support)
1.1.9.2 1.6.5.7-2
  • Fix build problem with Linux kernel ≥ 4.12
1.1.9.1 1.6.5.7-1
  • Use the DKMS build system for building the driver module for the running kernel version
  • Add support for the VisionBox AGE-X5
1.1.8.2 1.6.5.0-2
  • Add support for Kernel 4.6 and 4.9
  • Make waiting threads more robust against unwanted user mode signals
1.1.8.1 1.6.5.0-1
  • Add support for the VisionBox LE MANS
  • Fix possible race condition between CPU-packet and DMA interrupts
1.1.8.0 1.6.4.0
  • Add support for the VisionCam XM
  • Add support for Camera Link hardware (DMA support)
  • Remove support for Linux kernel 2.6.32
1.1.6.2 1.6.3.0
  • Add support for MSI-X interrupts
  • Fix a possible race condition which occurs under heavy CPU load when rapidly reading from the same device
  • Add support for the Machine Vision Controller (PCIe card)
  • Add support for using multiple hardware entities (fix device naming conflict)
1.1.5.0 1.6.2.2
  • Rename module and device name
  • Device has the permission 0666 after creation
  • Add read timeout and abort via IOCTL

Module parameters

The following hardware platforms are affected by the module paramter dma_update_in_hwi:

  • Camera Link interface
  • VisionCam XM
  • VisionCam XM2 with Lince5M181 sensor
dma_update_in_hwi (int)
The module parameter dma_update_in_hwi controls processing method for DMA transfer interrupts:
  • 0: use threaded IRQ for DMA processing
  • 1: process DMA within hardware interrupt
  • -1 (default): automatic mode selects the hardware interrupt method for:
    • if number of DMA transfer pages is ≤ 16
    • if IOMMU is used for the device
    • VisionCam XM / XM2 hardware
Example
Run the following shell command to enable DMA processing within hardware interrupt:
echo "options imago_fpga dma_update_in_hwi=1" > /etc/modprobe.d/imago_fpga.conf
# reboot the device, or reload the module as follows:
rmmod imago_fpga; modprobe imago_fpga

vsvpfedrv

Public GitHub repository: vsvpfedrv.

This driver is used for the sensor interface on the VisionSensor PV / PV2.

Driver Release Notes for vsvpfedrv
Version SDK version Changes
1.0.2.2 1.7.11.0
  • Rename VSDRV.h to vsvpfedrv.h for internal deployment automation.
1.0.2.1 1.7.10.0
  • Avoid DKMS warnings.
1.0.2.0 1.7.3.1
  • Enable cache for image buffers.
  • Avoid possible race condition when an image buffer was added to the acquisition queue while the queue was empty and a new frame started simultaneously. This could lead to an invalid buffer returned to the user marked as valid.
1.0.1.0 1.6.9.0
  • Release DMA buffers left from dead processes.
1.0.0.2 1.6.8.2
  • Compile fix for Linux kernel ≥ 4.12
1.0.0.1 1.6.7.0
  • Fix cache handling for image buffers
1.0.0.0 1.6.6.0
  • First release

vsmipi

Public GitHub repository: vsmipi.

This driver is used for the MIPI sensor interface on the VisionSensor PV3.

Driver Release Notes for vsmipi
Version SDK version Changes
1.3.0.2 1.7.11.0
  • Rename VSMipi.h to vsmipi.h for internal deployment automation.
1.3.0.1 1.7.10.0
  • Avoid DKMS warnings.
1.3.0.0 1.7.9.0
  • Add support for 10 bit MIPI format
1.2.1.0 1.7.7.0
  • Reset frame counter when starting acquisition
1.2.0.0 1.7.5.0
  • Add support for odd-numbered AOI height
  • Fix compatibility with Linux kernel ≥ 4.20
1.1.0.0 -
  • Add support for event based sensors
1.0.2.0 1.7.4.0
  • Fix cache coherence for image buffers
  • Fix possible NULL pointer dereference while closing the stream
1.0.1.0 1.7.3.1
  • Fix rare problem when restarting image acquisition
1.0.0.0 1.7.2.0
  • First release

vcxm2_mipi

Public GitHub repository: vcxm2_mipi.

This driver is used for the MIPI sensor interface on the VisionCam XM2.

Driver Release Notes for vsmipi
Version SDK version Changes
1.0.0.1 1.7.11.0