Mantis with DKMS

From LinuxTVWiki
Revision as of 22:32, 31 August 2009 by Rho (Talk | contribs)

Jump to: navigation, search

Installing the Mantis Driver using DKMS

DKMS provides an easy way to automatically upgrade modules when installing new kernel versions.

The following installation example works under Ubuntu, it should be easily adaptable to other distributions.

Step 1: Get the Mantis Drivers

cd /usr/src
sudo apt-get install mercurial linux-headers-$(uname -r) build-essential
sudo hg clone http://mercurial.intuxication.org/hg/s2-liplianin
sudo mv s2-liplianin mantis-mercurial

Step 2: Create a DKMS Configuration

Create file /usr/src/mantis-mercurial/dkms.conf and paste the following content:

PACKAGE_NAME="mantis"
PACKAGE_VERSION="mercurial"
CLEAN="rm -f *.*o"
BUILT_MODULE_NAME[0]="mantis"
BUILT_MODULE_LOCATION[0]="v4l"
BUILT_MODULE_NAME[1]="lnbp21"
BUILT_MODULE_LOCATION[1]="v4l"
BUILT_MODULE_NAME[2]="mb86a16"
BUILT_MODULE_LOCATION[2]="v4l"
BUILT_MODULE_NAME[3]="stb6100"
BUILT_MODULE_LOCATION[3]="v4l"
BUILT_MODULE_NAME[4]="tda10021"
BUILT_MODULE_LOCATION[4]="v4l"
BUILT_MODULE_NAME[5]="tda10023"
BUILT_MODULE_LOCATION[5]="v4l"
BUILT_MODULE_NAME[6]="ir-common"
BUILT_MODULE_LOCATION[6]="v4l"
BUILT_MODULE_NAME[7]="stb0899"
BUILT_MODULE_LOCATION[7]="v4l"
BUILT_MODULE_NAME[8]="stv0299"
BUILT_MODULE_LOCATION[8]="v4l"
BUILT_MODULE_NAME[9]="dvb-core"
BUILT_MODULE_LOCATION[9]="v4l"
MAKE[0]="pushd ${dkms_tree}/mantis/mercurial/build; make KSRC=$kernel_source_dir KVER=$kernelver; popd"
DEST_MODULE_LOCATION[0]="/kernel/drivers/media/dvb/mantis"
DEST_MODULE_LOCATION[1]="/kernel/drivers/media/dvb/frontends"
DEST_MODULE_LOCATION[2]="/kernel/drivers/media/dvb/frontends"
DEST_MODULE_LOCATION[3]="/kernel/drivers/media/dvb/frontends"
DEST_MODULE_LOCATION[4]="/kernel/drivers/media/dvb/frontends"
DEST_MODULE_LOCATION[5]="/kernel/drivers/media/dvb/frontends"
DEST_MODULE_LOCATION[6]="/kernel/drivers/media/common"
DEST_MODULE_LOCATION[7]="/kernel/drivers/media/dvb/frontends"
DEST_MODULE_LOCATION[8]="/kernel/drivers/media/dvb/frontends"
DEST_MODULE_LOCATION[9]="/kernel/drivers/media/dvb/dvb-core"
AUTOINSTALL="yes"

Step 3: Create a V4L Kernel Configuration

Create a V4L Kernel config with the necessary drivers:

cd /usr/src/mantis-mercurial
make menuconfig

Select the necessary kernel modules (especially the Mantis driver) and save the configuration.

You can alternatively paste the following content to /usr/src/mantis-mercurial/v4l/.config: (config made with s2-liplianin revision ecdc9c389f8a)

CONFIG_INPUT=y
CONFIG_USB=y
CONFIG_PARPORT=m
# CONFIG_ARCH_DAVINCI_DM644x is not set
# CONFIG_SPARC64 is not set
# CONFIG_PLAT_M32700UT is not set
CONFIG_NET=y
# CONFIG_ARCH_DAVINCI is not set
CONFIG_FB_CFB_COPYAREA=y
CONFIG_SND_FM801=m
# CONFIG_PXA27x is not set
# CONFIG_SGI_IP22 is not set
CONFIG_I2C=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_GPIO_PCA953X=m
# CONFIG_ARCH_DAVINCI_DM355 is not set
# CONFIG_HAVE_CLK is not set
# CONFIG_FIQ is not set
CONFIG_SND=m
CONFIG_MODULES=y
CONFIG_MT9M001_PCA9536_SWITCH=y
CONFIG_HAS_IOMEM=y
# CONFIG_ARCH_OMAP2 is not set
CONFIG_PROC_FS=y
# CONFIG_SPARC32 is not set
# CONFIG_MACH_DAVINCI_DM6467_EVM is not set
CONFIG_I2C_ALGOBIT=m
CONFIG_HAS_DMA=y
CONFIG_INET=y
CONFIG_FB=y
CONFIG_CRC32=y
# CONFIG_ARCH_MX1 is not set
CONFIG_SYSFS=y
# CONFIG_ISA is not set
CONFIG_PCI=y
CONFIG_SONY_LAPTOP=m
# CONFIG_MX3_IPU is not set
CONFIG_SND_PCM=m
CONFIG_PARPORT_1284=y
CONFIG_EXPERIMENTAL=y
# CONFIG_M32R is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_IEEE1394=m
CONFIG_MT9V022_PCA9536_SWITCH=y
CONFIG_VIRT_TO_BUS=y
# CONFIG_VIDEO_KERNEL_VERSION is not set
CONFIG_MEDIA_SUPPORT=m 

#
# Multimedia core support
#
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_VIDEO_ALLOW_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_DVB_CORE=m
CONFIG_VIDEO_MEDIA=m 

#
# Multimedia drivers
#
CONFIG_MEDIA_ATTACH=y
CONFIG_MEDIA_TUNER=m
CONFIG_MEDIA_TUNER_CUSTOMISE=y
CONFIG_MEDIA_TUNER_SIMPLE=m
CONFIG_MEDIA_TUNER_TDA8290=m
CONFIG_MEDIA_TUNER_TDA827X=m
CONFIG_MEDIA_TUNER_TDA18271=m
CONFIG_MEDIA_TUNER_TDA9887=m
CONFIG_MEDIA_TUNER_TEA5761=m
CONFIG_MEDIA_TUNER_TEA5767=m
CONFIG_MEDIA_TUNER_MT20XX=m
CONFIG_MEDIA_TUNER_MT2060=m
CONFIG_MEDIA_TUNER_MT2266=m
CONFIG_MEDIA_TUNER_MT2131=m
CONFIG_MEDIA_TUNER_QT1010=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_MEDIA_TUNER_MXL5007T=m
CONFIG_MEDIA_TUNER_MC44S803=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L1=m
# CONFIG_VIDEO_CAPTURE_DRIVERS is not set
# CONFIG_RADIO_ADAPTERS is not set
CONFIG_DVB_DYNAMIC_MINORS=y
CONFIG_DVB_CAPTURE_DRIVERS=y 

#
# Supported SAA7146 based PCI Adapters
#
# CONFIG_TTPCI_EEPROM is not set
# CONFIG_DVB_AV7110 is not set
# CONFIG_DVB_BUDGET_CORE is not set 

#
# Supported USB Adapters
#
# CONFIG_DVB_USB is not set
# CONFIG_DVB_TTUSB_BUDGET is not set
# CONFIG_DVB_TTUSB_DEC is not set
# CONFIG_DVB_SIANO_SMS1XXX is not set

#
# Supported FlexCopII (B2C2) Adapters
#
# CONFIG_DVB_B2C2_FLEXCOP is not set 

#
# Supported BT878 Adapters
# 

#
# Supported Pluto2 Adapters
#
# CONFIG_DVB_PLUTO2 is not set 

#
# Supported SDMC DM1105 Adapters
#
# CONFIG_DVB_DM1105 is not set  

#
# Supported Mantis Adapters
#
CONFIG_DVB_MANTIS=m

#
# Supported FireWire (IEEE 1394) Adapters
#
# CONFIG_DVB_FIREDTV is not set 

#
# Supported DVB Frontends
#
CONFIG_DVB_FE_CUSTOMISE=y

#
# Customise DVB Frontends
#

#
# Multistandard (satellite) frontends
#
CONFIG_DVB_STB0899=m
CONFIG_DVB_STB6100=m
CONFIG_DVB_STV090x=m
CONFIG_DVB_STV6110x=m

#
# DVB-S (satellite) frontends
#
CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_MT312=m
CONFIG_DVB_ZL10036=m
CONFIG_DVB_ZL10039=m
CONFIG_DVB_S5H1420=m
CONFIG_DVB_STV0288=m
CONFIG_DVB_STB6000=m
CONFIG_DVB_STV0299=m
CONFIG_DVB_STV6110=m
CONFIG_DVB_STV0900=m
CONFIG_DVB_TDA8083=m
CONFIG_DVB_TDA10086=m
CONFIG_DVB_TDA8261=m
CONFIG_DVB_VES1X93=m
CONFIG_DVB_TUNER_ITD1000=m
CONFIG_DVB_TUNER_CX24113=m
CONFIG_DVB_TDA826X=m
CONFIG_DVB_TUA6100=m
CONFIG_DVB_CX24116=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_MB86A16=m
CONFIG_DVB_CU1216=m
CONFIG_DVB_DS3000=m

#
# DVB-T (terrestrial) frontends
#
CONFIG_DVB_SP8870=m
CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22700=m
CONFIG_DVB_CX22702=m
CONFIG_DVB_DRX397XD=m
CONFIG_DVB_L64781=m
CONFIG_DVB_TDA1004X=m
CONFIG_DVB_NXT6000=m
CONFIG_DVB_MT352=m
CONFIG_DVB_ZL10353=m
CONFIG_DVB_DIB3000MB=m
CONFIG_DVB_DIB3000MC=m
CONFIG_DVB_DIB7000M=m
CONFIG_DVB_DIB7000P=m
CONFIG_DVB_TDA10048=m
CONFIG_DVB_AF9013=m

#
# DVB-C (cable) frontends
#
CONFIG_DVB_VES1820=m
CONFIG_DVB_TDA10021=m
CONFIG_DVB_TDA10023=m
CONFIG_DVB_STV0297=m

#
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
CONFIG_DVB_NXT200X=m
CONFIG_DVB_OR51211=m
CONFIG_DVB_OR51132=m
CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
CONFIG_DVB_LGDT3304=m
CONFIG_DVB_LGDT3305=m
CONFIG_DVB_S5H1409=m
CONFIG_DVB_AU8522=m
CONFIG_DVB_S5H1411=m

#
# ISDB-T (terrestrial) frontends
#
CONFIG_DVB_S921=m

#
# Digital terrestrial only tuners/PLL
#
CONFIG_DVB_PLL=m
CONFIG_DVB_TUNER_DIB0070=m

#
# SEC control devices for DVB-S
#
CONFIG_DVB_LNBP21=m
CONFIG_DVB_LNBP22=m
CONFIG_DVB_ISL6405=m
CONFIG_DVB_ISL6421=m
CONFIG_DVB_ISL6423=m
CONFIG_DVB_LGS8GL5=m
CONFIG_DVB_LGS8GXX=m

#
# Tools to develop new frontends
#
CONFIG_DVB_DUMMY_FE=m
# CONFIG_DAB is not set

#
# Audio devices for multimedia
#

#
# ALSA sound
#
# CONFIG_SND_BT87X is not set
# CONFIG_SND_FM801_TEA575X is not set

Please note that the config can change with each new v4l source. It is recommended to create a valid configuration with make menuconfig

Step 4: Install the Mantis Module

sudo dkms add -m mantis -v mercurial
sudo dkms build -m mantis -v mercurial
sudo dkms install -m mantis -v mercurial

When installing a new kernel, the DKMS build system should automatically compile the mantis driver and install the resulting modules.

Notes

  • Updating the Mantis source directly in the /usr/src/mantis-mercurial directory with mercurial is possible, the DKMS config needs to be removed, readded, rebuilt and reinstalled afterwards.
  • Naming the directory mantis-<version> instead of mantis-mercurial might be more appropriate. Adjust the dkms.conf entries as well.