Point Grey / FLIR SWIR camera on Ubuntu 24.04 / Linux Mint 22
Setup for a legacy Point Grey Research USB 2.0 camera (USB vendor 1e10) on a modern Debian/Ubuntu-family machine. Tested against the camera that reports:
idVendor=1e10 idProduct=2005
Product: USB 2.0 Digital Imaging Camera
Manufacturer: Point Grey Research
These cameras predate FLIR's Spinnaker SDK and are supported only by the older FlyCapture2 SDK (here, version 2.13.3.31). Spinnaker will not see them.
What gets installed
The FlyCapture2 SDK was built for Ubuntu 18.04. Its GUI applications (FlyCap2, UpdatorGUI) depend on GTK2-era libraries (libgtkmm-2.4, libglademm-2.4, libgtkglextmm) that no longer exist in Ubuntu 24.04, so we do not install them. The core libraries only need libusb and libraw1394, which are still present, so this setup installs:
libflycapture2/libflycapture-c2and their-devpackages (C++ and C runtime + headers).FlyCapture2TestandFlyCapture2Test_C— prebuilt command-line tools that list attached cameras and grab test frames. They link only the core library, so they run fine without the GUI stack.fc2view— a small live viewer built fromfc2view.cppin this repo, using OpenCV. It replaces the vendor's GTK2 GUI: it streams the first camera into a window and saves snapshots (see below).- The example source tree at
/usr/src/flycapture/srcfor building your own capture programs.
It also does the two bits of host configuration these cameras need:
- A udev rule +
flirimaginggroup so the camera is readable/writable without root. - A larger USBFS buffer (
usbcore.usbfs_memory_mb=1000, up from the 16 MB default). Camera frames exceed the default buffer, which otherwise shows up as grab failures or dropped images.
The vendor GUI itself is the only thing lost by not being on 18.04, and fc2view covers the common need for a live viewport. If you specifically need the vendor GUI (e.g. for firmware updates via UpdatorGUI), run it in an 18.04/20.04 container.
Live viewer (fc2view)
install.sh compiles fc2view.cpp and installs it as /usr/local/bin/fc2view. With the camera plugged in:
fc2view
It connects to the first camera, prints its model and serial, and opens a live window. Keys: s saves a snapshot to the current directory as fc2-<serial>-<timestamp>.png (saved from the raw frame, so a Mono16 SWIR sensor keeps its full bit depth); q or Esc quits. It converts each frame to BGR for display, so it works on mono/SWIR and colour sensors alike.
It's about 130 lines and depends only on OpenCV and the FlyCapture2 core library. Treat it as a starting point for your own acquisition code. Rebuild by hand with:
g++ fc2view.cpp -I/usr/include/flycapture $(pkg-config --cflags --libs opencv4) -lflycapture -o fc2view
Install
The SDK .deb files are bundled under sdk/ because FLIR's download is behind a login, so the repo is self-contained. From this directory:
sudo ./install.sh
Then log out and back in (for the flirimaging group to apply). The USBFS limit is set live during install and made permanent on the next reboot; a reboot covers both at once.
Verify, with the camera plugged in:
FlyCapture2Test # prints camera info + grabs frames
fc2view # opens the live window
FlyCapture2Test should show the camera's serial, model and firmware, then a batch of grabbed frames. That serial should match the one in dmesg/lsusb (00FBA0C0 on the reference machine).
Rolling out to another machine
The camera model and the OS release are the same across your machines, so:
- Copy this whole directory (it includes
sdk/with the.debfiles). - Run
sudo ./install.sh. - Log out and back in (or reboot).
The script is idempotent, so re-running it to repair a machine is safe. If a machine is a different architecture (e.g. arm64) or a different OS release, the bundled amd64 debs will not apply; get the matching FlyCapture2 build from FLIR and drop its debs into sdk/.
Building your own capture program
Headers are in /usr/include/flycapture; the library links with -lflycapture. A minimal build:
g++ my_capture.cpp -I/usr/include/flycapture -lflycapture -o my_capture
Or start from a worked example:
cp -r /usr/src/flycapture/src/FlyCapture2Test ~/fc2test && cd ~/fc2test
g++ FlyCapture2Test.cpp -I/usr/include/flycapture -lflycapture -o FlyCapture2Test
Uninstall
sudo ./uninstall.sh
This removes the libraries, CLI tools, example source and udev rule. It leaves the flirimaging group, the GRUB USBFS setting and the apt dependencies in place (they are harmless and may be shared); the script prints how to undo those by hand.
Troubleshooting
FlyCapture2Testfinds no camera — confirmlsusbshows1e10:2005. If it does, you probably have not logged out/in since install, so you lack theflirimaginggroup (idshould list it). As a one-off check you can runsudo FlyCapture2Test.- Camera detected but frames fail or time out — the USBFS buffer did not take. Check
cat /sys/module/usbcore/parameters/usbfs_memory_mb(should read1000); if it reads16, reboot so the GRUB setting applies. error while loading shared libraries: libflycapture.so.2— runsudo ldconfig.- USB 2.0 bandwidth — this is a USB 2.0 camera (~480 Mbps shared). On a busy hub you may need to lower resolution or frame rate. Plugging it into its own port/controller helps.
Reference
- Vendor SDK README:
sdk/README. - FLIR "Configuring USBFS" note explains the buffer limit (the SDK README links to
ptgrey.com/tan/10685, now under flir.com support).