Architecture overview — project: cbicari/firefly-mv-dc1394-setup
This project sets up a Point Grey Firefly MV (FMVU series) IIDC/DCAM machine-vision camera on Ubuntu (24.04/26.04), so it can be:
Everything is driven by a single idempotent script, install.sh, which can be safely re-run.
| Path | Role |
|---|---|
install.sh | Orchestrates the whole setup: packages, udev rule, group membership, kernel module, build of the test tool |
udev/99-pointgrey-dc1394.rules | udev rule granting non-root USB access to the camera |
config/v4l2loopback.conf | Module options for v4l2loopback (device name, index, etc.) |
config/v4l2loopback-load.conf | Ensures the module loads automatically at boot |
tools/dc1394_grab_test.c | Small C program using libdc1394 to enumerate/grab frames directly, for testing |
tools/start_virtual_cam.sh | Starts the GStreamer bridge that feeds frames into the virtual camera device |
camera_hardware.md | Notes on the physical camera hardware |
The setup creates two parallel paths once the camera is plugged in and the udev rule is active.
The camera enumerates as a USB device. The udev rule (99-pointgrey-dc1394.rules) sets permissions
so that any user in the plugdev group can open the device without sudo.
install.sh copies this rule into /etc/udev/rules.d/, reloads udev, and adds the
invoking user to plugdev.
dc1394_grab_test.c is compiled against libdc1394-2 and used to confirm the camera
is visible and can deliver frames, independent of any virtual-camera machinery. This is the quickest way to
sanity-check the hardware and udev setup.
v4l2loopback is a kernel module (built via DKMS) that creates a fake V4L2 device, here
exposed as /dev/video10 and named "Firefly MV Virtual Camera". Its behavior (device name/index)
is set through config/v4l2loopback.conf, and config/v4l2loopback-load.conf makes
sure it is loaded at boot.tools/start_virtual_cam.sh runs a GStreamer pipeline that reads frames from the physical
camera and writes them into the v4l2loopback device./dev/video10 behaves like any standard webcam, so ordinary V4L2-aware
applications can select and use it without knowing anything about IIDC/DCAM or libdc1394.plugdev group.dkms autoinstall.dc1394_grab_test./dev/video10 ("Firefly MV Virtual Camera") is present.# Raw capture test via libdc1394
./tools/dc1394_grab_test 5
# Start the virtual webcam bridge (Ctrl+C to stop)
./tools/start_virtual_cam.sh
Then open Cheese, a browser's camera picker, or vlc v4l2:///dev/video10, and select
"Firefly MV Virtual Camera".
plugdev
group membership to take full effect.dkms autoinstall fails (e.g. missing matching linux-headers on a custom
kernel), matching headers must be installed manually and v4l2loopback re-installed for that kernel version.