要理解我的问题,需要了解很多细节,所以请耐心等待。我需要 Linux 专家、Linux 内核模块/驱动程序程序员、HTPC 专家以及任何有处理 Ceton InfiniTV 6 PCIe 调谐器经验的人的帮助。
我有一台 HTPC,多年来一直在运行 Ubuntu Server,并且使用 Ceton InfiniTV 6 PCIe,没有任何问题。该服务器已从 Ubuntu Server 16.04 LTS 升级到 20.04。服务器的启动驱动器开始出现故障,SmartDrv 错误太多,因此我更换了它并全新安装了 Ubuntu Server 22.04 LTS。
Ceton 并不正式支持 Linux 上的 InfiniTV 6,但在 Github 上有一个开源驱动程序,已经有一段时间没动过了 ((https://github.com/ceton/infinitv_pcie))。每次服务器升级都会带来新的内核版本,需要重新编译并偶尔调整驱动程序的源代码以保持与新内核的兼容性。幸运的是,Github 上有源代码的分支,可以使其与新内核保持同步。我发现的最新的分支是这个,它使它与内核 v.5.18 保持同步:(https://github.com/JamesRHarris/infinitv_pcie)。
Ubuntu Server 22.04 使用 5.19 内核,驱动程序源代码编译时会显示一些警告。我修改了代码以修复警告,但由于我的 C 语言编程技能有些生疏,我不知道这对解决问题有帮助还是有害。我能够对驱动程序进行 modprobe,据我所知,内核日志未显示驱动程序的错误。但是,我必须手动为调谐器分配静态 IP 地址,因为它不会像以前的服务器版本那样自动分配。我为它分配了 192.168.200.200。
下一步是让调谐器/驱动程序与 HTPC 软件(在我的情况下是 SageTV)对话。与上一版本的服务器操作系统一样,我安装了 OpenDCT,它使用 uPnP 检测调谐器并管理到 HTPC 软件的流式传输。问题是,尽管 OpenDCT 看到了 192.168.200.200 IP 地址,但它没有检测到调谐器的存在。在谷歌搜索之后,我针对调谐器自行设置的接口执行了“gssdp-discover”命令,发现调谐器也有一个 IP 地址 192.168.200.1,即使 ifconfig 没有看到它。由于我是从终端工作,我不得不使用 lynx(命令行浏览器)导航到 192.168.200.1,并找到调谐器提供的用于检查调谐器状态的网页。我只是无法判断调谐器是否正常工作或仅部分工作。我从 192.168.200.200 获得的唯一响应是当我 ping 它时。我还尝试在命令行上进行流式传输作为测试,并借鉴了 README 文件的建议:
cat /dev/ceton/ctn91xx_mpeg0_0
我本以为会看到数据在屏幕上滚动,但什么也没看到,不得不按 CTRL-C 中止。不过,我可能不知道自己在做什么,而且调谐器可能必须调到某个频道才能播放任何内容。
如果您一直坚持到现在,谢谢。我想我已经列出了我如何走到这一步的所有步骤。我陷入困境,越来越绝望。我正在突破我的经验和技能的极限,所以如果您对如何继续有任何建议,我愿意倾听。我不知道驱动程序是否正常工作,或者操作系统中的某些东西是否阻止了驱动程序工作。了解我,这可能是我忽略的一些简单而愚蠢的事情。