LoginSignup
1
3

More than 5 years have passed since last update.

LinuxTVのDVBドライバをビルド

Posted at

概要

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---」に修正します。

v4l/Kconfig
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ドライバになります。

v4l/Kconfig
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.
v4l/Kconfig
 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」を有効にしてビルドしてください。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3