Bug 42564 - bttv / radio tuner in linux 3.[01].x broken? radio apps fail
Summary: bttv / radio tuner in linux 3.[01].x broken? radio apps fail
Status: NEW
Alias: None
Product: v4l-dvb
Classification: Unclassified
Component: bt8xx (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: bt8xx
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-01-06 10:42 UTC by Arthur Erhardt
Modified: 2016-11-06 19:29 UTC (History)
4 users (show)

See Also:
Kernel Version: 3.[01].x
Tree: Mainline
Regression: No


Attachments
dmesg output from loading the bttv driver (1.92 KB, text/plain)
2012-01-06 10:45 UTC, Arthur Erhardt
Details

Description Arthur Erhardt 2012-01-06 10:42:19 UTC
Hi,

after a recent distribution upgrade (openSuSE 11.3 -> 11.4 -> 12.1) at least the radio subset of my bt878 PCI card can no longer be used with existing radio tuner applications.

'radio' from v4l-tools reports "VIDIOCGAUDIO: Inappropriate ioctl for device bttv", as does qgradio. With Kernels up to 2.6.37.x (both distributor package and vanilla) both applications work as expected. 

Test environment:
Asus P5Q SE2 (intel P45, LGA775 chipset), intel C2Q-9400, 8 GB DDR2 memory,
nvidia PCIe graphics card.

Old Hauppauge bt878 PCI TV and radio tuner card: (lspci -nn excerpt)
04:00.0 Multimedia video controller [0400]: Brooktree Corporation Bt878 Video Capture [109e:036e] (rev 11)
04:00.1 Multimedia controller [0480]: Brooktree Corporation Bt878 Audio Capture [109e:0878] (rev 11)


openSuSE 12.1/x86_64 Linux distribution.
openSuSE 11.3, 11.4/x86_64 with vanilla kernel versions 3.0.4, 3.0.9, 3.1.7

In all cases I got the same result, therefore I suspect changes to bttv or v4l in Linux 3.x to be the reason for the problem.

Working setup:
openSuSE 11.1 to 11.4/x86_64, both distribution and vanilla kernel versions up to 2.6.37.x. I didn't use any 2.6.3[89].x kernels.

The hardware isn't broken, reverting to older kernel versions cures the problem. 

Kind regards,

Arthur
Comment 1 Arthur Erhardt 2012-01-06 10:45:53 UTC
Created attachment 72054 [details]
dmesg output from loading the bttv driver
Comment 2 Matthias Gies 2012-09-27 10:41:27 UTC
I am experiencing similar problems with a dvb-t card which is said to be the same as Arthur's Hauppauge card. (According to http://www.linuxtv.org/wiki/index.php/TwinhanDTV_Mini_Ter )

I bought the card unbranded on ebay, but on the board it gives the following information:
board: VP3020 V1.0
chipset: Conexant Fusion 878A ; 25878-13
tuner: Philips TV1216/i H P ; SV20 0341

It also used to work before but stopped working somwhere in the 2.6.x kernel generation already. Since I changed to DVB-S, I didn't use this card for long time. Now, I wanted to add it for parallelly recording and watching TV.

My setup is OpenELEC_PVR-Generic.i386-1.95.7 with kernel 3.2.28.
System runs on an ASUS M3A78-EMH-HDMI with an AMD Athlon64 4200+ and 4GB RAM. There is also a TechniSat Skystar2 DVB-S card installed which is working properly. Removing this one makes no difference.

dmesg shows the following:
[    9.338108] bttv: driver version 0.9.19 loaded
[    9.338112] bttv: using 8 buffers with 2080k (520 pages) each for capture
[    9.338294] bttv: Bt8xx card found (0)
[    9.338325] bttv 0000:04:07.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21
[    9.338337] bttv: 0: Bt878 (rev 17) at 0000:04:07.0, irq: 21, latency: 64, mmio: 0xfafff000
[    9.338352] bttv: 0: using:  *** UNKNOWN/GENERIC ***  [card=0,autodetected]
[    9.382934] bttv: 0: tuner type unset
[    9.383100] bttv: 0: registered device video0
[    9.383326] bttv: 0: registered device vbi0

The card seems to be ignored due to an unset tuner type. Since the thing used to work OTB before, this seems to be a regression. It should be possible to fix this by simply adding the correct data into the bttv modules devices list, I guess...

If I can contribute any further information on this, I'd be happy to help. And, of course, happy to use this card again... :D
Comment 3 Bernhard 2012-11-12 18:38:33 UTC
Hello,

I have the same problem with a Hauppauge WinTV PVR card (bt878 with radio).

Since 2.6.39.x radio is broken => No Frequency range :

v4l2-ctl -d /dev/radio0 --all -L
kernel 2.6.32.x:
----------------
Driver Info (not using libv4l2):
        Driver name : bttv
        Card type : BT878 radio (Hauppauge WinTV PV
        Bus info : PCI:0000:02:0a.0
        Driver version: 0.9.18
        Capabilities : 0x00010000
                Tuner
Video input : 0 (Radio: ok)
Audio input : 0 (Radio)
Frequency: 0 (0.000000 MHz)
Tuner:
        Name : Radio
        Capabilities : 62.5 Hz stereo
        Frequency range : 65.0 MHz - 108.0 MHz
        Signal strength/AFC : 13%/0
        Current audio mode : stereo
        Available subchannels: mono
                           mute (bool) : default=0 value=1

kernel 2.6.38.x:
----------------
Driver Info (not using libv4l2):
        Driver name : bttv
        Card type : BT878 radio (Hauppauge WinTV PV
        Bus info : PCI:0000:02:0a.0
        Driver version: 0.9.18
        Capabilities : 0x00010000
                Tuner
Video input : 0 (Radio: ok)
Audio input : 0 (Radio)
Frequency: 0 (0.000000 MHz)
Tuner:
        Name : Radio
        Capabilities : 62.5 Hz stereo
        Frequency range : 65.0 MHz - 108.0 MHz
        Signal strength/AFC : 0%/0
        Current audio mode : stereo
        Available subchannels: mono
                           mute (bool) : default=0 value=1

kernel 3.0.x:
----------------
Driver Info (not using libv4l2):
        Driver name : bttv
        Card type : BT878 radio (Hauppauge WinTV PV
        Bus info : PCI:0000:02:0a.0
        Driver version: 0.9.18
        Capabilities : 0x00010000
                Tuner
Video input : 0 (Radio: ok)
Audio input : 0 (Radio)
Frequency: 0 (0.000000 MHz)
Tuner:
        Name : Radio
        Capabilities : 62.5 kHz
        Frequency range : 0.0 MHz - 0.0 MHz
        Signal strength/AFC : 0%/0
        Current audio mode : mono
        Available subchannels:
                           mute (bool) : default=0 value=1

3.2:
-----
Driver Info (not using libv4l2):
        Driver name : bttv
        Card type : BT878 radio (Hauppauge WinTV PV
        Bus info : PCI:0000:02:0a.0
        Driver version: 3.2.27
        Capabilities : 0x00010000
                Tuner
Video input : 0 (Radio: ok)
Audio input : 0 (Radio)
Frequency: 0 (0.000000 MHz)
Tuner:
        Name : Radio
        Capabilities : 62.5 kHz
        Frequency range : 0.0 MHz - 0.0 MHz
        Signal strength/AFC : 0%/0
        Current audio mode : mono
        Available subchannels:
                           mute (bool) : default=0 value=1

I will test it with kernel 3.5.x from ubuntu quantal (12.10), because regarding the ubuntu thread kernel 3.5.x should fix the problem.

Udo Steinberg bisected the commit:
Link and message: https://lkml.org/lkml/2011/11/11/257
I've bisected the problem. The commit that breaks things is:

commit cbde689823776d187ba1b307a171625dbc02dd4f
Author: Mauro Carvalho Chehab <email address hidden>
Date: Fri Feb 4 10:42:09 2011 -0300

    [media] tuner-core: Better implement standby mode

    In the past, T_STANDBY were used on devices with a separate radio tuner to
    mark a tuner that were disabled. With the time, it got newer meanings.

    Also, due to a bug at the logic, the driver might incorrectly return
    T_STANDBY to userspace.

    So, instead of keeping the abuse, just use a boolean for storing
    such information.

    We can't remove T_STANDBY yet, as this is used on two other drivers. A
    latter patch will address its usage outside tuner-core.

    Thanks-to: Devin Heitmueller <email address hidden>
    Signed-off-by: Mauro Carvalho Chehab <email address hidden>

Link summary:
-----------------
ubuntu thread:
https://bugs.launchpad.net/gnomeradio/+bug/776065

Bisected commit: Udo Steinberg
https://lkml.org/lkml/2011/11/11/257

Broken since 2.6.39
https://lkml.org/lkml/2011/12/15/177

Maybe there is the possibility to revert the commit and backport a fix to the long-term stable kernel 3.2.x.

Best regards, Bernhard
Comment 4 Bernhard 2012-11-19 17:09:14 UTC
I can confirm that with kernel 3.5.7 (ubuntu kernel 3.5.0-18-generic #29~precise), my radio is working again.

v4l2-ctl -d /dev/radio0 --all -L
Driver Info (not using libv4l2):
         Driver name   : bttv
         Card type     : BT878 radio (Hauppauge WinTV PV
         Bus info      : PCI:0000:02:0a.0
         Driver version: 3.5.7
         Capabilities  : 0x00010000
                 Tuner
Video input : 0 (Radio: ok)
Audio input : 0 (Radio)
Frequency: 0 (0.000000 MHz)
Tuner:
         Name                 : Radio
         Capabilities         : 62.5 Hz stereo
         Frequency range      : 65.0 MHz - 108.0 MHz
         Signal strength/AFC  : 13%/0
         Current audio mode   : stereo
         Available subchannels: mono
                            mute (bool)   : default=0 value=1 

Is there the possibility to backport the issue to Long-Term-Stable kernels and so to solve the problem in kernel 3.2.x?

Note You need to log in before you can comment on or make changes to this bug.