I’m still getting around to writing up the notes:
PC Building At The End of The World
Which is intended as a guide for this sort of thing.
From memory, most of these older cards will work with any flavour of Linux (drivers are in the kernel, so doesn’t matter if Ubuntu or PopOS or Arch etc). They get registered as a V4L2 device and show up as a webcam-like device in OBS and other software.
On Linux there’s no auto-detect, so you must find and then enable the driver for the type of capture chip, with an argument for the PCI model.
The model seems important to the extent that the card has some way of making first contact (ie. on/off, hello world, begin) - followed by a standard way of communicating with the capture chip (ie. I2C).
Most common is the BTTV chips, aka Brooktree / Conexant - which are in most older CCTV capture and it looks like on this one too.
Finding the driver and model
Looking at this model it seems to be a Pinnacle PCTV, which we can find in the kernel here:
BTTV CARDLIST
=============
https://www.kernel.org/doc/html/v4.11/media/v4l-drivers/bttv-cardlist.html
PINNACLE DRIVER NOTES
=====================
https://www.kernel.org/doc/html/v4.9/media/v4l-drivers/bttv.html#pinnacle
Enabling it
From this we can use the shorthand id or number and enable it like so (where XXX is the ID of the card):
sudo modprobe bttv card=XXX
# creates a device located at /dev/video0 or 1, 2, 3 etc
FULL HOWTO GUIDE
================
https://tldp.org/HOWTO/html_single/BTTV
Enabling PAL / NTSE
It should now show up as capture device in OBS, but in 320x240px resolution.
I don’t have my full notes or a Linux PC to hand, but I remember that the BTTV driver seems to always default to 320x240px - despite the chip being capable of PAL and NTSE. And changing this inside OBS will only stretch the image.
Instead we can interact with the driver using v4l2-ctl:
# LIST FORMATS
v4l2-ctl --device /dev/video0 --list-formats-ext
# LIST RESOLUTIONS
v4l2-ctl --device /dev/video0 --list-framesizes=UYVY
# LIST FRAMERATES
v4l2-ctl --device /dev/video0 --list-frameintervals=width=640,height=480,pixelformat=UYVY
# SET FORMAT
v4l2-ctl --device /dev/video0 --set-fmt-video=width=720,height=576,pixelformat=UYVY
Where that last one is close to what needs to be done to enable PAL or NTSE - and you’ll be able to see the difference in OBS.