ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Linux IVTV 驱动卡片清单全解:CX23415/CX23416 采集卡型号与 PCI 子系统 ID 对照手册

2026/9/10 3:46:52 拓冰建站 浏览量
Linux IVTV 驱动卡片清单全解:CX23415/CX23416 采集卡型号与 PCI 子系统 ID 对照手册 Linux IVTV 驱动卡片清单全解CX23415/CX23416 采集卡型号与 PCI 子系统 ID 对照手册【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linuxIVTV 是 Linux 内核中针对 iCompression iTVC15 / Conexant CX23415/CX23416 MPEG 编解码芯片的 V4L2 设备驱动其驱动的电视卡横跨 Hauppauge、AVerMedia、Yuan、Adaptec、I/O Data、ASUS、Buffalo、Sony 等众多厂商。本文以内核文档 Documentation/admin-guide/media/ivtv-cardlist.rst 为主线完整给出 IVTV 驱动当前支持的全部 31 种卡片型号及其 PCI 子系统 ID并结合 drivers/media/pci/ivtv/ 目录下的源码深入讲解卡片编号、PCI ID 匹配、硬件标志与自动检测机制帮助你准确识别手中的采集卡、理解cardtype模块参数的使用场景并正确对接 ivtv.rst 中描述的各 V4L2 设备节点。IVTV 驱动与它支持的芯片平台IVTV 驱动的核心目标是为基于以下两款 MPEG 编解码芯片的 PCI 电视采集卡提供 Linux 开源驱动实现见 Documentation/admin-guide/media/ivtv.rstiTVC15早期 iCompression 方案的 MPEG 编码芯片对应 PCI 设备 ID0x0803CX23415 / CX23416Conexant 的后续方案其中 CX23415 同时支持 MPEG 编码与解码目前唯一具备完整解码能力的是 Hauppauge PVR-350CX23416 仅支持 MPEG 编码两者共享 PCI 设备 ID0x0016。在 drivers/media/pci/ivtv/ivtv-cards.h 中可以看到这两个设备 ID 与主 vendor ID 的定义/* system vendor and device IDs */ #define PCI_VENDOR_ID_ICOMP 0x4444 #define PCI_DEVICE_ID_IVTV15 0x0803 #define PCI_DEVICE_ID_IVTV16 0x0016也就是说所有 IVTV 卡的 PCI vendor 都是0x4444iCompression/Conexant 编码器区分具体卡型的核心依据是子系统 vendor ID 与子系统 device ID——这正是下文卡片清单中每个条目所记录的subsystem_vendor:subsystem_device格式。完整卡片清单IVTV 驱动支持型号总表以下为 Documentation/admin-guide/media/ivtv-cardlist.rst 记录的完整清单共 31 个条目编号 030。表中IVTV15/IVTV16表示该卡对应的主芯片设备 ID分别对应0x0803/0x0016后接的xxxx:xxxx即 PCI 子系统 vendor 与 subsystem device ID。卡片编号卡片名称PCI 子系统 ID0Hauppauge WinTV PVR-250IVTV16 104d:813d1Hauppauge WinTV PVR-350IVTV16 104d:813d2Hauppauge WinTV PVR-150IVTV16 104d:813d3AVerMedia M179IVTV15 1461:a3cf, IVTV15 1461:a3ce4Yuan MPG600, Kuroutoshikou ITVC16-STVLPIVTV16 12ab:fff3, IVTV16 12ab:ffff5YUAN MPG160, Kuroutoshikou ITVC15-STVLP, I/O Data GV-M2TV/PCIIVTV15 10fc:40a06Yuan PG600, Diamond PVR-550IVTV16 ff92:0070, IVTV16 ffab:06007Adaptec VideOh! AVC-2410IVTV16 9005:00938Adaptec VideOh! AVC-2010IVTV16 9005:00929Nagase Transgear 5000TVIVTV16 1461:bfff10AOpen VA2000MAX-SNT6IVTV16 0000:ff5f11Yuan MPG600GR, Kuroutoshikou CX23416GYC-STVLPIVTV16 12ab:0600, IVTV16 fbab:0600, IVTV16 1154:052312I/O Data GV-MVP/RX, GV-MVP/RX2W (dual tuner)IVTV16 10fc:d01e, IVTV16 10fc:d038, IVTV16 10fc:d03913I/O Data GV-MVP/RX2EIVTV16 10fc:d02514GotView PCI DVDIVTV16 12ab:060015GotView PCI DVD2 DeluxeIVTV16 ffac:060016Yuan MPC622IVTV16 ff01:d99817Digital Cowboy DCT-MTVP1IVTV16 1461:bfff18Yuan PG600-2, GotView PCI DVD LiteIVTV16 ffab:0600, IVTV16 ffad:060019Club3D ZAP-TV1x01IVTV16 ffab:060020AVerTV MCE 116 PlusIVTV16 1461:c43921ASUS Falcon2IVTV16 1043:4b66, IVTV16 1043:462e, IVTV16 1043:4b2e22AVerMedia PVR-150 Plus / AVerTV M113 Partsnic (Daewoo) TunerIVTV16 1461:c034, IVTV16 1461:c03523AVerMedia EZMaker PCI DeluxeIVTV16 1461:c03f24AVerMedia M104IVTV16 1461:c13625Buffalo PC-MV5L/PCIIVTV16 1154:052b26AVerMedia UltraTV 1500 MCE / AVerTV M113 Philips TunerIVTV16 1461:c019, IVTV16 1461:c01b27Sony VAIO Giga Pocket (ENX Kikyou)IVTV16 104d:813d28Hauppauge WinTV PVR-350 (V1)IVTV16 104d:813d29Yuan MPG600GR, Kuroutoshikou CX23416GYC-STVLP (no GR)IVTV16 104d:813d30Yuan MPG600GR, Kuroutoshikou CX23416GYC-STVLP (no GR/YCS)IVTV16 104d:813d如何解读表格中的 PCI 子系统 ID表中的IVTV15/IVTV16前缀标明主芯片类型而子系统 ID 则由 drivers/media/pci/ivtv/ivtv-cards.h 中定义的各厂商子系统 vendor 常量直接对应子系统 vendor厂商典型卡型表中出现0x0070 / 0x0270 / 0x4070HauppaugePVR-250/350/150见IVTV_PCI_ID_HAUPPAUGE系列0x104dSonySony VAIO Giga Pocket、Hauppauge PVR 系列IVTV_PCI_ID_SONY0x1461AVerMediaM179、Transgear 5000TV、MCE 116、PVR-150 Plus、M104 等IVTV_PCI_ID_AVERMEDIA0x12ab / 0xfbab / 0xffab / 0xff01Yuan远MPG600、MPG160、MPG600GR、MPC622、PG600 等IVTV_PCI_ID_YUAN1/2/3/40x10fcI/O DataGV-M2TV、GV-MVP/RX 系列IVTV_PCI_ID_IODATA0x1154MelcoBuffaloPC-MV5L/PCI、CX23416GYCIVTV_PCI_ID_MELCO0x9005AdaptecVideOh! AVC-2410 / AVC-2010IVTV_PCI_ID_ADAPTEC0x1043ASUSTekASUS Falcon2IVTV_PCI_ID_ASUSTEK0xff92Diamond MultimediaDiamond PVR-550IVTV_PCI_ID_DIAMONDMM0xffac / 0xffadGotViewPCI DVD2 Deluxe、PCI DVD LiteIVTV_PCI_ID_GOTVIEW1/20x0000通用/无指定AOpen VA2000MAX-SNT6仅按子系统 device0xff5f匹配值得特别说明的是Hauppauge 系列编号 0、1、2、28在 drivers/media/pci/ivtv/ivtv-cards.c 中有明确注释——Hauppauge 卡不使用 PCI ID 进行识别而是依靠板载tveeprom电视 EEPROM中的信息来判断具体型号因此它们在清单中共享同一个子系统 ID104d:813d。这解释了为什么 PVR-250、PVR-350、PVR-150 三款完全不同定位的卡会登记为同一个 ID。特殊变体卡编号 2830drivers/media/pci/ivtv/ivtv-cards.h 的注释指出编号 2830 是与现有卡共用相同 PCI ID 的变体驱动必须借助其他设备信息如 EEPROM、I2C 探测结果来区分因此它们被强制放在卡片列表的末尾28 - PVR-350 (V1)使用 SAA7114 视频解码器替代 SAA7115且为早期预生产型号音频输入行为特殊ivtv-cards.c 注明其音频可能仅支持单声道29 - CX23416GYC (no GR)无 Ghost Reduction去重影芯片 UPD64031A 的变体30 - CX23416GYC (no GR/YCS)既无 GR 也无 Y/C 分离芯片 UPD6408X 的最简变体。这一点在源码的卡片数组ivtv_card_list[]ivtv-cards.c中体现得很直观三个变体被显式注释为 Variations of standard cards but with the same PCI IDs. These cards must come last in this list.从源码看卡片定义ivtv_card结构体清单中的每一行在源码里都对应一个const struct ivtv_card静态实例。该结构体drivers/media/pci/ivtv/ivtv-cards.h完整描述了一张卡片的硬件构成主要包括v4l2_capabilities编码/解码能力位IVTV_CAP_ENCODER含视频采集、调谐器、音频、VBI 采集等 V4L2 能力IVTV_CAP_DECODER含视频输出与 sliced VBI 输出ivtv-cards.h。PVR-350 是唯一同时具备两者IVTV_CAP_ENCODER | IVTV_CAP_DECODER的卡hw_video/hw_audio/hw_all位掩码声明板载的视频/音频处理芯片与 I2C 设备取值见enum ivtv_hw_bitsivtv-cards.h包括 SAA7114/7115、SAA717X、CX25840、MSP34XX、WM8775/WM8739、CS53L32A、M52790、UPD64031A去重影、UPD6408XY/C 分离、TUNER、TVEEPROM、各类红外接收器等video_inputs/audio_inputs/radio_input视频/音频输入通道描述视频输入类型由IVTV_CARD_INPUT_VID_TUNER调谐器、IVTV_CARD_INPUT_SVIDEO1/2、IVTV_CARD_INPUT_COMPOSITE1/2/3枚举ivtv-cards.hgpio_*系列无专用音频芯片的卡通过 GPIO 位操作完成音频输入切换、静音、单声道/立体声/双语模式与采样率选择见struct ivtv_gpio_audio_mode、struct ivtv_gpio_audio_freq等定义ivtv-cards.htuners[]候选调谐器列表每个条目绑定适用的电视制式V4L2_STD_PAL_SECAM、V4L2_STD_MN等与tuner.h中的调谐器 IDpci_list该卡对应的{device, subsystem_vendor, subsystem_device}三元组数组用于 PCI ID 匹配。以清单第 4 项 Yuan MPG600, Kuroutoshikou ITVC16-STVLP 为例源码 ivtv-cards.c 中的定义展示了其完整画像static const struct ivtv_card_pci_info ivtv_pci_mpg600[] { { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_YUAN1, 0xfff3 }, { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_YUAN1, 0xffff }, { 0, 0, 0 } }; static const struct ivtv_card ivtv_card_mpg600 { .type IVTV_CARD_MPG600, .name Yuan MPG600, Kuroutoshikou ITVC16-STVLP, .v4l2_capabilities IVTV_CAP_ENCODER, .hw_video IVTV_HW_SAA7115, .hw_audio IVTV_HW_GPIO, /* 音频通过 GPIO 控制 */ .hw_all IVTV_HW_GPIO | IVTV_HW_SAA7115 | IVTV_HW_TUNER, /* 视频输入调谐器 S-Video Composite */ .video_inputs { { IVTV_CARD_INPUT_VID_TUNER, 0, IVTV_SAA71XX_COMPOSITE4 }, { IVTV_CARD_INPUT_SVIDEO1, 1, IVTV_SAA71XX_SVIDEO0 }, { IVTV_CARD_INPUT_COMPOSITE1, 1, IVTV_SAA71XX_COMPOSITE3 }, }, .audio_inputs { { IVTV_CARD_INPUT_AUD_TUNER, IVTV_GPIO_TUNER }, { IVTV_CARD_INPUT_LINE_IN1, IVTV_GPIO_LINE_IN }, }, .gpio_init { .direction 0x3080, .initial_value 0x0004 }, .gpio_audio_input { .mask 0x3000, .tuner 0x0000, .linein 0x2000 }, .gpio_audio_mute { .mask 0x0001, .mute 0x0001 }, .gpio_audio_mode { .mask 0x000e, .mono 0x0006, .stereo 0x0004, .lang1 0x0004, .lang2 0x0000, .both 0x0008 }, .gpio_audio_detect { .mask 0x0900, .stereo 0x0100 }, .tuners { { .std V4L2_STD_PAL_SECAM, .tuner TUNER_PHILIPS_FQ1216ME }, { .std V4L2_STD_ALL, .tuner TUNER_PHILIPS_FQ1286 }, }, .pci_list ivtv_pci_mpg600, .i2c ivtv_i2c_std, };从这份定义可以看到清单背后的工程信息MPG600 的视频处理由 SAA7115 承担音频切换依赖 GPIO 位操作gpio_audio_mode定义了 mono/stereo/lang1/lang2/both 各自对应的位模式调谐器按制式给出两个候选PAL/SECAM 用 Philips FQ1216ME其余制式用 FQ1286。I2C 探测地址表卡片定义中的i2c字段指向一张待探测的 I2C 地址表ivtv-cards.c驱动据此在 I2C 总线上逐一探测调谐器、解调器与收音机芯片/* usual i2c tuner addresses to probe */ static struct ivtv_card_tuner_i2c ivtv_i2c_std { .radio { I2C_CLIENT_END }, .demod { 0x43, I2C_CLIENT_END }, .tv { 0x61, 0x60, I2C_CLIENT_END }, }; /* as above, but with possible radio tuner */ static struct ivtv_card_tuner_i2c ivtv_i2c_radio { .radio { 0x60, I2C_CLIENT_END }, .demod { 0x43, I2C_CLIENT_END }, .tv { 0x61, I2C_CLIENT_END }, }; /* using the tda829075a combo */ static struct ivtv_card_tuner_i2c ivtv_i2c_tda8290 { .radio { I2C_CLIENT_END }, .demod { I2C_CLIENT_END }, .tv { 0x4b, I2C_CLIENT_END }, };清单中第 22 项 AVerMedia PVR-150 Plus 使用ivtv_i2c_radio因为 0xc035 变体带 TEA5767 FM 调谐器第 16 项 Yuan MPC622 使用ivtv_i2c_tda8290板载 TDA8290/TDA8275 调谐芯片其余多数卡片走标准地址表ivtv_i2c_std。自动检测与cardtype模块参数正常情况下驱动通过pci_list中的子系统 ID 三元组自动匹配卡片无需任何配置。只有当自动检测失败时才需要强制指定卡型。在 drivers/media/pci/ivtv/ivtv-driver.c 中相关模块参数定义如下module_param_array(tuner, int, tuner_c, 0644); module_param_array(radio, int, radio_c, 0644); module_param_array(cardtype, int, cardtype_c, 0644);其中cardtype的参数说明ivtv-driver.c给出了与上表编号一一对应的强制指定值注意此处的编号从 1 开始与清单编号相差 11 WinTV PVR 2502 WinTV PVR 3503 WinTV PVR-150 或 PVR-5004 AVerMedia M1795 YUAN MPG600/Kuroutoshikou iTVC16-STVLP6 YUAN MPG160/iTVC15-STVLP7 YUAN PG600/DIAMONDMM PVR-550CX Falcon 28 Adaptec AVC-24109 Adaptec AVC-201010 NAGASE TRANSGEAR 5000TV11 AOpen VA2000MAX-STN612 YUAN MPG600GR/CX23416GYC-STVLP13 I/O Data GV-MVP/RX14 I/O Data GV-MVP/RX2E15 GOTVIEW PCI DVD16 GOTVIEW PCI DVD2 Deluxe17 Yuan MPC62218 Digital Cowboy DCT-MTVP119 Yuan PG600V2/GotView PCI DVD Lite20 Club3D ZAP-TV1x0121 AverTV MCE 116 Plus22 ASUS Falcon223 AverMedia PVR-150 Plus24 AverMedia EZMaker PCI Deluxe25 AverMedia M104尚不可用对应源码中ivtv_card_aver_m104的Not yet supported!注释见 ivtv-cards.c26 Buffalo PC-MV5L/PCI27 AVerMedia UltraTV 1500 MCE28 Sony VAIO Giga Pocket (ENX Kikyou)0 自动检测默认-1 忽略该卡。典型用法按 PCI 槽位顺序传参多卡用逗号分隔# 强制第 1 块卡为 AVerMedia M179对应清单编号 3 → 参数值 4 sudo modprobe ivtv cardtype4 # 第 1 块卡强制为 PVR-350第 2 块卡忽略 sudo modprobe ivtv cardtype2,-1配套的调谐器与制式参数卡片清单只解决这块卡是什么而调谐器与电视制式的细节由另外几组参数控制定义与说明见 ivtv-driver.ctuner调谐器类型选择取值见tuner.h仅在自动探测失败时使用radio0 关闭收音机、1 开启仅在自动探测失败时使用tunertype0 PAL B/G/H/D/K/I、SECAM B/G/H/D/K/L/Lc 制式调谐器1 NTSC M/J/K、PAL M/N/Nc-1 自动检测默认pal/secam/ntsc显式指定电视制式。例如pal可选BGH、DK、I、M、N、Nc、60secam可选BGH、DK、L、LCntsc可选M、J日本、K韩国。对清单第 26 项 AVerMedia UltraTV 1500 MCE源码 ivtv-cards.c 还专门给出了提示性注释非 NTSC 制式的调谐器需要通过pal或secam模块参数来指定可见清单与模块参数是配合使用的整体方案。从卡片到设备节点识别成功后你会看到什么驱动在正确识别卡片后会按 Documentation/admin-guide/media/ivtv.rst 描述的布局创建设备节点。基础节点如下设备号随卡片实例递增crw-rw---- 1 root video 81, 0 Jun 19 22:22 /dev/video0 # MPEG 编码采集 crw-rw---- 1 root video 81, 16 Jun 19 22:22 /dev/video16 # 解码输出仅 CX23415 crw-rw---- 1 root video 81, 24 Jun 19 22:22 /dev/video24 # 原始 PCM 音频采集 crw-rw---- 1 root video 81, 32 Jun 19 22:22 /dev/video32 # 原始 YUV 视频采集 crw-rw---- 1 root video 81, 48 Jun 19 22:22 /dev/video48 # YUV 显示输出仅 CX23415 crw-rw---- 1 root video 81, 64 Jun 19 22:22 /dev/radio0 # 收音机调谐视卡而定 crw-rw---- 1 root video 81,224 Jun 19 22:22 /dev/vbi0 # VBI 采集图文/CC crw-rw---- 1 root video 81,228 Jun 19 22:22 /dev/vbi8 # VBI 反馈仅 CX23415 crw-rw---- 1 root video 81,232 Jun 19 22:22 /dev/vbi16 # VBI 显示输出仅 CX23415无解码能力非 PVR-350的卡缺少vbi8、vbi16、video16、video48节点也没有/dev/fbx帧缓冲radio0是否出现取决于卡上是否有收音机调谐器。多卡环境下设备号按基础设备号 卡序号递增如果系统里还有其他先被探测到的采集卡如 WinTV PCI可以用ivtv_first_minor模块参数让 IVTV 从指定序号开始分配避免设备号错乱ivtv-driver.c 中校验其取值范围为 0IVTV_MAX_CARDS-1。使用注意事项固件要求IVTV 驱动必须加载最新的编码器固件版本 2.06.039大小 376836 字节否则硬件 MPEG 编码无法工作见 ivtv.rst 顶部说明应用层限制普通电视应用无法直接使用 IVTV 设备需要支持 MPEG 输入流的播放器或 PVR 软件如 mplayer、xine、MythTV 等才能读取/dev/video0的 MPEG 节目流匹配失败时的排查路径先用lspci -nn查看卡的 vendor/device 与 subsystem ID对照本文清单确认型号若在清单内但驱动未识别用cardtype强制指定若涉及调谐器异常再检查tuner、tunertype与pal/secam/ntsc参数变体卡的识别编号 2830 与常规卡共享 PCI ID驱动依赖 tveeprom 与 I2C 探测等辅助信息区分无需也无法通过 PCI ID 直接指定。综上ivtv-cardlist.rst本质上是 IVTV 驱动卡型 ↔ PCI 子系统 ID的权威对照表而 drivers/media/pci/ivtv/ivtv-cards.c 与 drivers/media/pci/ivtv/ivtv-cards.h 则给出了每个条目的完整硬件画像。两张表配合使用即可在绝大多数场景下完成采集卡的识别、验证与排障。【免费下载链接】linuxLinux kernel source tree项目地址: https://gitcode.com/GitHub_Trending/li/linux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考