1.1.6.1 The bttv driver
Release notes for bttv
对于bttv,你至少需要如下的配置:
./scripts/config -e PCI
./scripts/config -m I2C
./scripts/config -m INPUT
./scripts/config -m MEDIA_SUPPORT
./scripts/config -e MEDIA_PCI_SUPPORT
./scripts/config -e MEDIA_ANALOG_TV_SUPPORT
./scripts/config -e MEDIA_DIGITAL_TV_SUPPORT
./scripts/config -e MEDIA_RADIO_SUPPORT
./scripts/config -e RC_CORE
./scripts/config -m VIDEO_BT848
如果你的板子还有数字TV,还需要:
./scripts/config -m DVB_BT8XX
请参考Documentation/admin-guide/media/bt8xx.rst.
bttv是什么:
bttv是一个Linux内核驱动程序,可用于支持Bt848和Bt878视频捕获卡。它允许用户在Linux系统中处理模拟视频和音频信号,并通过计算机进行编码、解码和压缩。这使得Linux系统能够支持一系列应用程序,例如视频录制、监视、视频会议等。
Make bttv work with your card
如果您已经编译和安装了bttv驱动程序,只需要启动内核就足以尝试探测它。但是,根据模型不同,内核可能需要有关硬件的其他信息,因为设备可能无法直接向内核提供此类信息。如果内核不能自动检测到您的卡,那么bttv可能需要一些insmod选项。对于bttv来说,最重要的insmod选项是“card=n”,用于选择正确的卡类型。如果视频正常但没有声音,则很可能指定了错误(或未指定)的卡类型。支持的卡列表在Documentation/admin-guide/media/bttv-cardlist.rst中。
如果bttv加载非常慢(便宜卡通常没有调谐器),请尝试将以下内容添加到您的模块配置文件中(通常是/etc/modules.conf或位于/etc/modules-load.d/的某个文件,但实际位置取决于您的发行版):
options i2c-algo-bit bit_test=1
有些卡可能需要额外的固件文件才能正常工作。例如,对于WinTV/PVR,您需要从其驱动程序CD中获取一个固件文件,称为:hcwamc.rbf。它位于一个名为pvr45xxx.exe的自解压缩zip文件中。将其放置在/etc/firmware目录中就足以在驱动程序探测模式下自动加载它(例如,在内核引导或通过modprobe命令手动加载驱动程序时)。
如果您的卡未在Documentation/admin-guide/media/bttv-cardlist.rst中列出,或者您无法使音频正常工作,请阅读Still doesn't work?。
Autodetecting cards
bttv使用PCI Subsystem ID来自动检测卡类型。 lspci在第二行列出了Subsystem ID,看起来像这样:
00:0a.0 Multimedia video controller: Brooktree Corporation Bt878 (rev 02)
Subsystem: Hauppauge computer works Inc. WinTV/GO
Flags: bus master, medium devsel, latency 32, IRQ 5
Memory at e2000000 (32-bit, prefetchable) [size=4K]
只有基于bt878的卡才能具有subsystem ID(这并不意味着每张卡都真的有一个)。bt848卡无法具有Subsystem ID,因此无法自动检测。有一个带有ID列表的文档位于Documentation/admin-guide/media/bttv-cardlist.rst中(如果您感兴趣或希望通过邮件发送更新的补丁)。
Still doesn’t work?
在http://vger.kernel.org/vger-lists.html#linux-media上有一个邮件列表。
如果您遇到特定的TV卡问题,请尝试在那里询问,而不是直接给我发送电子邮件。有相同卡的用户会更可能在那里聆听您的问题...
对于声音问题:全世界使用的电视声音系统各不相同。而且也有不同的芯片来解码音频信号。关于声音问题(例如“立体声无法工作”)的报告没有包含关于您的硬件和您所在国家(或至少生活的国家)使用的电视声音方案的详细信息是毫无意义的。
Modprobe options
注意:以下参数列表可能已过时,因为如果有需要,我们可能会添加更多选项。如果有疑问,请使用modinfo <module>检查。
这个命令会打印有关内核模块的各种信息,其中包括完整和最新的insmod选项列表。
bttv
The bt848/878 (grabber chip) driver
insmod args:
tuner
调谐器驱动程序。除非您只想与相机一起使用,或者该板不提供模拟电视调谐,否则您需要它。
insmod args:
tvaudio
为所有简单i2c音频控制芯片(tda/tea*)提供单一的驱动程序。
insmod args:
msp3400
这是用于msp34xx声音处理器芯片的驱动程序。如果您有一张立体声声卡,您可能想要安装这个驱动程序。
bttv bugs
如果某个版本可以工作,而另一个版本则无法工作,那么很有可能是一个驱动程序错误。如果您能够告诉我们最后一个工作版本和第一个故障版本,那将非常有帮助。
如果出现了硬件冻结,您可能无法在日志文件中找到任何信息。唯一捕获内核消息的方法是连接一个串行控制台,并让一些终端应用程序记录这些消息。 我通常使用“screen”。有关设置串行控制台的详细信息,请参见“Documentation/admin-guide/serial-console.rst”。
阅读“Documentation/admin-guide/bug-hunting.rst”以了解如何获取内核保护故障(所谓的“内核 oops”)上打印的寄存器+堆栈转储中的任何有用信息。如果遇到某种死锁,您可以尝试为每个使用sysrq-t命令的进程转储一个调用跟踪(请参见“Documentation/admin-guide/sysrq.rst”)。这样就可以确定某个处于“D”状态的进程被卡住在哪里。
我看到有人报告bttv 0.7.x崩溃,而0.8.x则可靠运行。因此,很可能是bttv 0.7.x中留下的小问题。我不知道具体是哪里出了问题,因为对于我和许多其他人来说,它都很稳定。但是,如果您在0.7.x版本中遇到了问题,可以尝试使用0.8.x版本。
hardware bugs
有些硬件无法处理PCI-PCI传输(即抓取卡=> VGA)。有时,仅因PCI总线负载过高,就会出现Bttv问题。针对已知的不兼容性,bt848/878芯片有一些解决方法,请参阅README.quirks。
有些人报告说增加PCI延迟也有帮助,尽管我不确定这是否真正修复了问题,或者只是使问题发生的可能性变小。Bttv和btaudio都有一个insmod选项,用于设置设备的PCI延迟。
有些主板在多个设备同时进行DMA时无法正确处理。如果是bttv + ide引起的,您可能只在同时访问视频和硬盘时才会遇到冻结。更新IDE驱动程序以获取最新的硬件错误解决方法可能会解决这些问题。
Bttv quirks
以下是bt878数据手册有关bt878芯片PCI错误兼容模式的说明。
triton1 insmod选项在控制寄存器中设置EN_TBFX位。 vsfx insmod选项对EN_VSFX位执行相同的操作。如果您遇到稳定性问题,可以尝试这些选项中的一个,看看它是否能使您的设备稳定工作。
drivers/pci/quirks.c了解这些问题,这样已知的有缺陷的芯片组就会自动启用这些位(请查看内核消息,bttv会告诉您)。
Normal PCI Mode
PCI REQ信号是传入功能请求的逻辑或。内部GNT[0:1]信号与GNT异步进行门控,并通过音频请求信号进行解复用。因此,仲裁器默认为电视功能,在没有总线访问请求时停在那里。这是可以接受的,因为视频将更频繁地请求总线访问。但是,音频将具有最高的总线访问优先级。因此,即使在视频请求之后但在PCI外部仲裁器授予对Bt879的访问权限之前发出请求,音频也将首先访问总线。一旦进入总线,任何一个功能都无法抢占另一个功能。空置整个视频PCI FIFO以将其转移到PCI总线上的持续时间与音频PCI FIFO能够容忍的总线访问延迟相比非常短。
430FX Compatibility Mode
在使用430FX PCI时,以下规则将确保兼容性:
(1)在断言FRAME信号的同时取消REQ信号。
(2)在完成上一个事务之后,不要重新断言REQ信号以请求另一个总线事务。
由于各个总线主机没有直接控制REQ信号,简单的视频和音频请求逻辑或将违反规则。因此,仲裁器和发起者都包含430FX兼容模式逻辑。要启用430FX模式,请按照第104页上的“设备控制寄存器”中所示设置EN_TBFX位。
启用EN_TBFX后,仲裁器确保满足这两个兼容性规则。在PCI仲裁器断言GNT之前,此内部仲裁器仍可以将两个请求逻辑或。但是,一旦GNT被发出,此仲裁器必须锁定其决策,并现在仅将已授予的请求路由到REQ引脚。仲裁器的决策锁定不考虑FRAME的状态,因为它不知道何时会断言FRAME信号(通常-每个发起者都会在GNT信号后的一个周期断言FRAME信号)。当断言FRAME信号时,发起者有责任同时取消其请求。仲裁器有责任允许该请求流向REQ,而不允许其他请求保持REQ断言。在事务结束时可以取消决策锁:例如,在总线处于空闲状态(FRAME和IRDY信号均未断言)时。仲裁器的决策可以继续异步进行,直到再次断言GNT信号。
Supported cards: Bt848/Bt848a/Bt849/Bt878/Bt879 cards
Bt848/Bt848a/Bt849/Bt878/Bt879及普通复合视频输入卡都得到支持。通过软件对VBI样本进行解码,所有卡都支持PAL制式的Teletext和Intercast。
某些具有额外输入复用或其他额外芯片的卡只能部分支持(除非卡制造商给出规格说明)。当此处列出一张卡时,不一定会完全支持该卡。
所有其他卡只不过是具有额外元件,如调谐器、声音解码器、EEPROM、teletext解码器...
MATRIX Vision
MV-Delta是一款Bt848A型卡,具有4个复合视频输入和1个S-VHS输入(与第4个复合视频输入共享)。该卡没有调谐器,但支持Bt848A的所有4个复合视频输入(其中一个与S-VHS输入共享)。如果您只有卫星电视,但是需要通过复合视频输入连接多个调谐器到该卡,那么这张卡非常适合您。
感谢Matrix-Vision公司免费赠送我们2张卡,使Bt848a/Bt849单晶体操作支持成为可能!
......