Hauppauge WinTV-HVR2250 on Kubuntu 25.10

ac0mputerguru

New Member

Hauppauge WinTV-HVR2250 on Kubuntu 25.10​

Complete Setup Guide for S-Video Capture with OBS Studio

1. Hardware Overview
The Hauppauge WinTV-HVR2250 is a dual-tuner hybrid PCIe capture card. Under Linux it exposes:

  • Two DVB adapters for ATSC/QAM digital TV
  • Two hardware MPEG2 encoder devices (/dev/video0 and /dev/video1)
  • Two VBI devices (/dev/vbi0 and /dev/vbi1) for closed captioning
Important: This card does NOT output raw video frames. It outputs a hardware-encoded MPEG2 stream directly. Any application expecting raw V4L2 frames will fail. You must read the MPEG2 stream directly.

2. Kernel Driver (saa7164)​

The card is supported by the saa7164 kernel module, which is included in the mainline Linux kernel. The upstream driver supports DVB-T, ATSC, and QAM digital TV. Analog S-Video and composite capture is handled through the same module via the MPEG2 hardware encoder.

To verify the driver loaded correctly, run:

sudo dmesg | grep -iE "hauppauge|saa7164"

You should see the card detected, firmware loaded, and both video and DVB devices registered.

3. Firmware Installation​

The card requires firmware from Steven Toth's repository. Download and install as follows:

wget http://www.steventoth.net/linux/hvr22xx/22xxdrv_27086.zip
wget http://www.steventoth.net/linux/hvr22xx/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
wget http://www.steventoth.net/linux/hvr22xx/extract.sh

sh extract.sh
sudo cp *fw /lib/firmware

For Ubuntu 16.04 and later (including Kubuntu 25.10), after installing firmware it is also necessary to set the card number explicitly. Create the file /etc/modprobe.d/options with this content:

options saa7164 card=8

Then reboot.


4. Adding Your User to the Video Group​

Your user must be a member of the video group to access the capture devices without root:

sudo usermod -a -G video $USER

A full reboot is required for the group membership to take effect. Logout alone may not be sufficient.



To verify after reboot:

groups | grep video



5. S-Video Input Configuration​

The HVR2250 exposes multiple inputs per video device. The physical S-Video ports on the card both map to input number 2 (svideo) on their respective devices:
  • S-Video port 1 (VCR) → /dev/video0, input 2
  • S-Video port 2 (Camcorder) → /dev/video1, input 2
To verify available inputs on a device:

v4l2-ctl -d /dev/video0 --list-inputs

Important: The input selection does not persist across reboots or when OBS opens the device. It must be set before launching OBS each time, unless automated via udev (see Section 6).


To set inputs manually before launching OBS:

v4l2-ctl -d /dev/video0 --set-input=2 && v4l2-ctl -d /dev/video1 --set-input=2

To verify the NTSC standard is set:

v4l2-ctl -d /dev/video0 --set-standard=NTSC
v4l2-ctl -d /dev/video1 --set-standard=NTSC

6. Automating Input Selection at Boot (udev)​

To automatically set S-Video inputs every time the card is detected at boot, create a script and a udev rule. This is non-blocking — if it fails, it fails silently and the system continues normally.

Step 1: Create the Script​

sudo nano /usr/local/bin/hauppauge-inputs.sh

Paste the following content:

#!/bin/bash
v4l2-ctl -d /dev/video0 --set-input=2
v4l2-ctl -d /dev/video1 --set-input=2

Make it executable:

sudo chmod +x /usr/local/bin/hauppauge-inputs.sh


Step 2: Create the udev Rule​

sudo nano /etc/udev/rules.d/99-hauppauge.rules

Paste the following content:

SUBSYSTEM=="video4linux", ATTRS{subsystem_vendor}=="0x0070", ATTRS{subsystem_device}=="0x8851", RUN+="/usr/local/bin/hauppauge-inputs.sh"

To Remove the Automation​

Simply delete both files:

sudo rm /etc/udev/rules.d/99-hauppauge.rules
sudo rm /usr/local/bin/hauppauge-inputs.sh

7. OBS Studio Configuration​

OBS Studio's built-in Video Capture Device (V4L2) source cannot handle MPEG2 streams and will show a black screen with this card. Instead, use a Media Source for each S-Video input.

Before Launching OBS​

If the udev rule is not yet in place, set the inputs manually from a terminal:

v4l2-ctl -d /dev/video0 --set-input=2 && v4l2-ctl -d /dev/video1 --set-input=2

Adding a Media Source in OBS​

  1. In the Sources panel, click the + button and select Media Source.
  2. Name it (e.g. VCR or Camcorder) and click OK.
  3. In the Properties dialog, uncheck Local File.
  4. Set Input to /dev/video0 (for VCR / S-Video port 1) or /dev/video1 (for Camcorder / S-Video port 2).
  5. Set Input Format to mpeg.
  6. Click OK. Live video should appear immediately.

Source Settings Summary​

  • Source Type: Media Source (NOT Video Capture Device/V4L2)
  • Local File: unchecked
  • Input: /dev/video0 or /dev/video1
  • Input Format: mpeg
Note: Repeat the above for the second S-Video source using /dev/video1. Both sources can be active simultaneously.



8. Quick Reference​

Check Driver Status​

sudo dmesg | grep -iE "hauppauge|saa7164"
v4l2-ctl --list-devices

Set S-Video Inputs​

v4l2-ctl -d /dev/video0 --set-input=2
v4l2-ctl -d /dev/video1 --set-input=2

Test Capture from Terminal​

dd if=/dev/video0 of=test.mpg bs=1M count=10
vlc test.mpg
 
Back
Top