概要
LinuxTVのDVBドライバや、それをforkしたサードパーティ製ドライバをビルドする際、デフォルトの状態だと不要なドライバ等もコンパイルするので、ビルドにかなり時間がかかってしまいます。
そこで、DVBドライバのビルドの設定や目的のDVBドライバが使用するtunerとfrontendドライバの調べ方を記載します。
ビルド環境
項目 | 詳細 |
---|---|
OS | Gentoo Linux |
Kernel | 4.4.26-gentoo |
準備
DVBドライバをビルドするのに必要なツールをインストールします。
# emerge patchutils Proc-ProcessTable
ビルド
LinuxTVからmedia_buildとDVBドライバのソースコードを取得します
# git clone git://linuxtv.org/media_build.git
# git clone -b fixes --depth=1 git://linuxtv.org/media_tree.git ./media
media_buildにビルドするDVBドライバのソースコードディレクトリを設定します。
# cd media_build
# make dir DIR=../media
# make distclean
DVBドライバの設定を行います。
# make menuconfig
実行すると下記のエラーが発生します。(2016/12/29現在)
/lib/modules/4.4.26-gentoo/build/scripts/kconfig/mconf ./Kconfig
./Kconfig:7211: syntax error
./Kconfig:7210: unknown option "---"
./Kconfig:7211:warning: ignoring unsupported character ','
./Kconfig:7211: unknown option "Say"
./Kconfig:7212: unknown option "compilation"
Makefile:379: ターゲット 'menuconfig' のレシピで失敗しました
make[1]: *** [menuconfig] エラー 1
make[1]: ディレクトリ '/tmp/dvb/media_build/v4l' から出ます
Makefile:26: ターゲット 'menuconfig' のレシピで失敗しました
make: *** [menuconfig] エラー 2
「v4l/Kconfig」ファイルの7210行目の「--- help ---」を「---help---」に修正します。
if STAGING
menu "Media devices in staging"
config STAGING_BROKEN
bool "Enable drivers that are known to not compile"
default n
--- help --- # ここを「---help---」に修正
Say N here, except if you will be fixing the drivers
compilation.
menuconfig STAGING_MEDIA
もう一度、
# make menuconfig
ここでは、PT1/2とPT3のDVBドライバをビルドする設定で、「*」もしく「M」にした項目のみ記します。その他の項目はすべてOFFで構いません。
また、「Autoselect ancillary drivers」項目をOFFにしないと、「Customize TV tuners」と「Customise DVB Frontends」の項目が出現しません。
<M> Multimedia support --->
[*] Digital TV support
[*] Dynamic DVB minor allocation
[*] Enable DVB demux section packet loss log
[*] Media PCI Adapters --->
<M> PT1 cards
<M> Earthsoft PT3 cards
[ ] Autoselect ancillary drivers (tuners, sensors, i2c, spi, frontends)
Customize TV tuners --->
<M> MaxLinear MxL301RF tuner
<M> Sharp QM1D1C0042 tuner
Customise DVB Frontends --->
<M> Toshiba TC90522
あとは、ビルドとインストールです。
# make
# make install
# reboot
PT2ではDVBドライバのロードが成功すると下記のようなログが出力されました。
WARNING: You are using an experimental version of the media stack.
As the driver is backported to an older kernel, it doesn't offer
enough quality for its usage in production.
Use it with care.
Latest git patches (needed if you report a bug to linux-media@vger.kernel.org):
6f60a5ece0cc130380277f2118cdaf2e1f768cf7 gx1503: fixed some mistake
earth-pt1 0000:03:00.0: enabling device (0000 -> 0002)
dvbdev: DVB: registering new adapter (earth-pt1)
dvbdev: DVB: registering new adapter (earth-pt1)
dvbdev: DVB: registering new adapter (earth-pt1)
dvbdev: DVB: registering new adapter (earth-pt1)
earth-pt1 0000:03:00.0: DVB: registering adapter 0 frontend 0 (VA1J5JF8007/VA1J5JF8011 ISDB-S)...
earth-pt1 0000:03:00.0: DVB: registering adapter 1 frontend 0 (VA1J5JF8007/VA1J5JF8011 ISDB-T)...
earth-pt1 0000:03:00.0: DVB: registering adapter 2 frontend 0 (VA1J5JF8007/VA1J5JF8011 ISDB-S)...
earth-pt1 0000:03:00.0: DVB: registering adapter 3 frontend 0 (VA1J5JF8007/VA1J5JF8011 ISDB-T)...
DVBドライバが使用するtuner及びfrontendドライバの探し方
PT1/2とPT3用のDVBドライバでは「MaxLinear MxL301RF tuner」、「Sharp QM1D1C0042 tuner」、「Toshiba TC90522」を有効にしましたが、全てPT3用です。PT1/2用DVBドライバはtunerとfrontendドライバは必要ありません。
このtunerとfrontendドライバは「make menuconfig」を実行したあとに作成される「v4l/Kconfig」内のDVBドライバ設定部分に記載されているので必要なtunerとfrontendドライバのみを有効にすることが可能です。
下記はPT1/2とPT3のDVBドライバ設定部分で、「select」の項目が必要なtunerとfrontendドライバになります。
config DVB_PT1
tristate "PT1 cards"
depends on DVB_CORE && PCI && I2C
help
Support for Earthsoft PT1 PCI cards.
Since these cards have no MPEG decoder onboard, they transmit
only compressed MPEG data over the PCI bus, so you need
an external software decoder to watch TV on your computer.
config DVB_PT3
tristate "Earthsoft PT3 cards"
depends on DVB_CORE && PCI && I2C
select DVB_TC90522 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_QM1D1C0042 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_MXL301RF if MEDIA_SUBDRV_AUTOSELECT
help
Support for Earthsoft PT3 PCIe cards.
サードパーティ製ドライバでは「select」項目がなくtunerとfrontendドライバを必要とするものがありますが、そのときはDVBドライバのソースコードを読んで必要なtunerとfrontendドライバを探すか、もしくは「Autoselect ancillary drivers」を有効にしてビルドしてください。