找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 794|回复: 3

openwrt下如何自主编译自己的DVB卡驱动

[复制链接]
个人特别爱折腾DVB硬件,如润祺达的USB棒子和WIFI棒子,以及T230,松下棒子等。一开始不懂编译,只能做伸手党,用人家适配好的固件。但始终耿耿于怀,于是有了下文。


openwrt下如何自主编译自己的DVB卡驱动


参考的文章如下
1.https://github.com/tmn505/openwrt-dvb。优点:项目现在都在维护,可以编译成功;缺点:只能在openwrt的sdk下编译


2.https://www.right.com.cn/forum/f ... 3&highlight=dvb 以及 https://github.com/laijainGui/DVB-For-Openwrt
为鲲翔大佬的原创,以及github项目。我就是受此启发。但年代较久不维护,部分内容已经失效,编译成功率不高


我的实验器材:松下usb棒子,采用rtl2832+mn88473+r828d组合,dvb-c(t)双模。注:润祺达的it903+avl6381+mxl603暂未收录进linux的kernel里,即linux官方暂不支持该组合,且厂家不开放源码。所以diy不了。


说明:大部分的DVB硬件已经被linux_kernel收录,只是默认情况下不被编译而已,所以openwrt识别不了咱们的硬件


方法一:源至鲲翔大佬的恩山贴子里面的第一种方法
先完整编译一遍固件,再make kernel_menuconfig,配置kernel,勾选相关配置后,dvb硬件型号即呈现在我们眼前
这里有技巧,如果不知道路径,可以/,输入咱们的硬件型号,即可显示路径以及相关的依赖
先满足这些依赖,才能看到我们的目标硬件,依赖一个都不能少!
比如RTL2832 USB界面对应的驱动为DVB_USB_RTL28XXU
Symbol: DVB_USB_RTL28XXU [=n]
  │ Type  : tristate
  │ Defined at drivers/media/usb/dvb-usb-v2/Kconfig:134
  │   Prompt: Realtek RTL28xxU DVB USB support
  │   Depends on: USB [=n] && MEDIA_SUPPORT [=n] && MEDIA_USB_SUPPORT [=n] && I2C [=y] && MEDIA_DIGITAL_TV_SUPPORT [=n] && DVB_USB_V2 [=n] && I2C_MUX [=n]
  │   Location:
  │     -> Device Drivers
  │ (1)   -> Multimedia support (MEDIA_SUPPORT [=n])
  │         -> Media drivers
  │           -> Media USB Adapters (MEDIA_USB_SUPPORT [=n])
  │             -> Support for various USB DVB devices v2 (DVB_USB_V2 [=n])
  
依赖: USB && MEDIA_SUPPORT && MEDIA_USB_SUPPORT && I2C && MEDIA_DIGITAL_TV_SUPPORT && DVB_USB_V2 && I2C_MUX 这些组件
如何勾选这些依赖?也是一个一个的搜。注意,在kernel_menuconfig界面呈现的名字和其对应的组件名不一定相同
比如:DVB_USB_RTL28XXU组件在kernel_menuconfig界面呈现的名字是第四行Prompt后面的Realtek RTL28xxU DVB USB support
勾选Realtek RTL28xxU DVB USB support就意味着DVB_USB_RTL28XXU将被自动编译


勾选完所有的依赖和对应的硬件型号后,保存,再编译一遍。DVB硬件驱动就被整合进了内核镜像,插卡即用了。
在这里更正一下鲲翔大佬的说法,他是建议M,生成KO,再MODPROBE;
我是建议勾选成*,不用生成KO,C编译成O之后自动链接进内核镜像,无需MODPROBE


方法二:
上述步骤虽然比较麻烦,但可以让你一步步接近真相
还有没有更加简单的方法?有!终极大法来了!!!
git clone完源码之后,根据你的路由器平台及DVB硬件型号,直接修改linux源码目录下的CONFIG-5.X文件
我这边的linux源码路径是 ~/immortalwrt/target/linux/ramips/mt7621
编辑CONFIG-5.X(可能是6.x或4.x,代表linux版本号)文件,在结尾处添加如下代码并保存:
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
CONFIG_USB=y
CONFIG_I2C_MUX=y
CONFIG_DVB_USB_V2=y
CONFIG_DVB_CORE=y
CONFIG_DVB_USB_RTL28XXU=y
CONFIG_DVB_RTL2832=y
CONFIG_DVB_MN88473=y
CONFIG_MEDIA_TUNER_R820T=y


提示:CONFIG_DVB_CORE=y不是必须,因为CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y了,CONFIG_DVB_CORE自动会y
以上配置因dvb硬件的不同而不同,不能完全照搬。但前七行应该都一样,仅后几行需要因地制宜。


然后开始大伙熟悉的步骤:
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
make download -j4
make -j4 V=s


编译完成后,刷机,插dvb卡
然后看日志,或者winscp进路由器,看是否有/dev/dvb/frontend
不出意外的话,日志里面即可看到DVB硬件初始化成功初始化并连接。如下:
[    6.397333] usb 1-1: dvb_usb_v2: found a 'Astrometa DVB-T2' in warm state
[    6.547600] usb 1-1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[    6.557168] dvbdev: DVB: registering new adapter (Astrometa DVB-T2)
[    6.591609] i2c i2c-0: Added multiplexed i2c bus 1
[    6.596494] rtl2832 0-0010: Realtek RTL2832 successfully attached
[    6.632346] mn88473 0-0018: Panasonic MN88473 successfully identified
[    6.639028] usb 1-1: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))...
[    6.647326] usb 1-1: DVB: registering adapter 0 frontend 1 (Panasonic MN88473)...
[    6.655106] r820t 1-003a: creating new instance
[    6.666597] r820t 1-003a: Rafael Micro r820t successfully identified
[    6.673011] r820t 1-003a: attaching existing instance
[    6.682965] r820t 1-003a: Rafael Micro r820t successfully identified
[    6.753448] usb 1-1: dvb_usb_v2: 'Astrometa DVB-T2' successfully initialized and connected


注意:部分硬件需要fw文件,比如:
[   62.281955] mn88473 0-0018: downloading firmware from file 'dvb-demod-mn88473-01.fw'
可以在鲲翔大佬的github项目下载对应的fw文件
路径:https://github.com/laijainGui/DV ... master/dvb-firmware
然后拷到lib/firmware/下面,重启路由器。没有fw文件不影响硬件的识别,但调台会失败。


祝您成功!!!




厉害!
回复

使用道具 举报

 楼主| | 显示全部楼层
注明一下,我的方法均不需要任何第三方的东西,直接打开使用linux内置的dvb驱动
回复

使用道具 举报

来自手机 | 显示全部楼层
厉害,高质量帖子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-9 17:58

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表