Archived:How to install DVB device drivers: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
m (Reverted edits by Specto (Talk); changed back to last version by CityK)
(some reworking)
Line 1: Line 1:
This page contains information to help an "end user" install DVB device drivers in a GNU/Linux system.
This page contains information to help an "end user" install DVB device drivers in a GNU/Linux system.


'''Note''': This article assumes you have already physically installed or connected the hardware device into your system. (Refer to the manufacturer's instructions for details).
{{Note|This article assumes you have already physically installed or connected the hardware device into your system. (Refer to the manufacturer's instructions for such details)}}.


== Solution for new kernels (2.6) ==
==Case 1: Out of the Box Support==
If you have a new Linux kernel, and it's been compiled with many driver [[Wikipedia:Loadable_kernel_module|modules]] (as is normally the case with most [[Wikipedia:Linux_distribution|Linux "distros"]]), then there is a chance that drivers for your device are already included. In such a case, upon boot-up, your device should be "automagically" detected and will have the appropriate driver modules loaded into memory. Which modules are required? Well, the answer to that question depends entirely upon the chipsets used by your device -- see the relevant wiki article for your device for a listing of such components and required drivers. If you are aware of which driver modules are required for your device, you can see if they were loaded by running the following command in a terminal:
: <code>lsmod</code>
Provided that the drivers were loaded, you should now have a non-empty ''/dev/dvb'' directory. (Note: this directory is created automatically by udev, so you do not need to create it yourself). You can check on whether this is true for you with the following command:
: <code>ls -l /dev/dvb/</code>
(alternatively, you can browse your directory sturcture with the graphical file mangager of your choice). If you have a single DVB device installed in your system, then the output of the above command should reveal that /dev/dvb/ is populated by adapter0. Digging further,
: <code>ls -l /dev/dvb/adapter0 </code>
reveals the devices associated with adapter0 for which the drivers have control. If you have more then one DVB device, you can see the same for all with
: <code>ls -l /dev/dvb/adapter* </code>
Now, if you don't have a populated /dev/dvb/ directory, then something has failed. There could be several reasons for such.
* If a module was not loaded but you know you have it configured on your system, you can load it with the appropriate ''modprobe'' command.
* If, on the other hand, you have all the modules active (listed in lsmod) but no /dev/dvb/ directories to be found, check dmesg for any errors, ie:<br>
:: <code>dmesg | grep dvb</code>
: The problem may be as simple as the firmware for the device not being loaded. For example, for many TechnoTrend & Hauppauge (and other similar "premium" cards), if the dvb-ttpci firmware is not available you will observe an error such as:
<pre> dvb-ttpci: could not load firmware, file not found: dvb-ttpci-01.fw
dvb-ttpci: usually this should be in /usr/lib/hotplug/firmware or /lib/firmware
dvb-ttpci: and can be downloaded from http://www.linuxtv.org/download/dvb/firmware/</pre>
: Resolving that missing firmware issue should then result in proper detection and configuration of your device.
* The kernel used by your distro does not have recent enough drivers to support your device (in which case, see Case 2 below)


If you have a new Linux kernel and it's compiled with many modules installed (as normal Linux distros ship it), then chances are good that a driver for your device has been included. In that case, upon boot-up of Linux, your device should be detected and the driver modules loaded. Use
lsmod
to see if the required modules are installed with your kernel. Which are the required ones? That depends on the chipsets used by your device (See [[TwinhanDTV Digital Terrestrial TV Card Ter]] as an example).


==Case 2: Installation of LinuxTV Drivers Required==
If the drivers were loaded automagically, you should now have a non-empty directory
The LinuxTV project hosts the latest set of drivers for v4l-dvb devices; see http://linuxtv.org/repo
ls -l /dev/dvb/adapter*
If you don't see such a directory, then something has failed. (Note: this directory is created automatically by udev, so you do not need to create it yourself).

If a module was not loaded but you know you have it configured on your system, you can load it with the appropriate
modprobe

If you have all the modules active (listed in lsmod) but no /dev/dvb/ directories to be found, check dmesg for any errors, ie:
dmesg | grep dvb

The problem may be as simple as the firmware for the device not being loaded. For example, for many TechnoTrend & Hauppauge (and other similar "premium" cards), if the dvb-ttpci firmware is not available you will observe an error such as:
dvb-ttpci: could not load firmware, file not found: dvb-ttpci-01.fw
dvb-ttpci: usually this should be in /usr/lib/hotplug/firmware or /lib/firmware
dvb-ttpci: and can be downloaded from http://www.linuxtv.org/download/dvb/firmware/
Resolving that missing firmware issue should then result in proper detection and configuration of your device.

== Solution for old kernels (2.4.x) ==

The linux DVB drivers work on only reasonably new kernels (>= 2.6.12) and so you should upgrade your kernel to a 2.6 kernel
before attempting to use DVB. You should also investigate installing the "udev" package (for kernels >= 2.6.15) which automatically populates the /dev directory when devices are found.

==The LinuxTV drivers==
The LinuxTV project hosts the latest set of drivers for v4l-dvb devices.

See http://linuxtv.org/repo


'''1. Acquire the necessary software'''<BR>
'''1. Acquire the necessary software'''<BR>
Line 76: Line 68:
Some devices also require a firmware (which is uploaded from the host PC to the card) in order operate.
Some devices also require a firmware (which is uploaded from the host PC to the card) in order operate.


In some cases, when the device is correctly recognized, the associated drivers will provide information as to which firmware file is required -- have a look in your system log or use the command ''dmesg | grep dvb'' (see an example of this in the [[How to install DVB device drivers#Solution for new kernels (2.6)|Solution for new kernels (2.6)]] section above).
In some cases, when the device is correctly recognized, the associated drivers will provide information as to which firmware file is required -- have a look in your system log or use the command ''dmesg | grep dvb'' (see an example of this in the "[[How to install DVB device drivers#Case_1:_Out_of_the_Box_Support|Out of the Box Support]]" section above).


In other cases, obtaining the correct firmware is not so straight forward of a task. The very first thing you will need to know is what device you're using. Normally the device name and model are written somewhere on either the device itself, its box/packaging or, at the very least, listed in its manual. That may seem obvious enough, but a surprising number of devices are available with no or next to little in the way of model identification. In those latter cases, the output of the following tools may be able to aide you in making a determination. For PCI or PCIe devices, use
In other cases, obtaining the correct firmware is not so straight forward of a task. The very first thing you will need to know is what device you're using. Normally the device name and model are written somewhere on either the device itself, its box/packaging or, at the very least, listed in its manual. That may seem obvious enough, but a surprising number of devices are available with no or next to little in the way of model identification. In those latter cases, the output of the following tools may be able to aide you in making a determination. For PCI or PCIe devices, use
Line 87: Line 79:
* http://linuxtv.org/downloads/firmware
* http://linuxtv.org/downloads/firmware
* http://abraham.manu.googlepages.com/fw.tar.bz2
* http://abraham.manu.googlepages.com/fw.tar.bz2
In addition, information in wiki articles (eg. such as [[DVB-T USB Devices]]) will cite the appropriate firmware required. If your still at a lost, its likely a Google search will shed light on what file you need. Note, however, that not all supported devices have a firmware that is easily available (eg. Hauppauge HVR 1100 & 1300). Firmware for such cards could be loaded via temporary installation in an MS Windows System with the Manufacturer supplied drivers.
In addition, information in wiki articles (eg. such as [[DVB-T USB Devices]]) will cite the appropriate firmware required. If you're still at a lost, its likely a Google search will shed light on what file you need. Note, however, that not all supported devices have a firmware that is easily available (eg. Hauppauge HVR 1100 & 1300). Firmware for such cards could be loaded via temporary installation in an MS Windows System with the Manufacturer supplied drivers.


In any regard, once you find and obtain the necessary firmware for your device, copy it into the appropriate hotplug directory. The location of this directory depends on your distribution, but normally it's one of these:
In any regard, once you find and obtain the necessary firmware for your device, copy it into the appropriate hotplug directory. The location of this directory depends on your distribution, but normally it's one of these:
* /lib/firmware
* /lib/firmware
*/usr/lib/hotplug/firmware
*/usr/lib/hotplug/firmware


== Solution for 2.4.x kernels ==
The Linux DVB drivers work on only reasonably new kernels (>= 2.6.12) and so you should upgrade your kernel to a 2.6 kernel
before attempting to use DVB. You should also investigate installing the "udev" package (for kernels >= 2.6.15) which automatically populates the /dev directory when devices are found.



==Further documentation==
==Further documentation==

Revision as of 01:33, 28 January 2008

This page contains information to help an "end user" install DVB device drivers in a GNU/Linux system.

Note: This article assumes you have already physically installed or connected the hardware device into your system. (Refer to the manufacturer's instructions for such details)

.

Case 1: Out of the Box Support

If you have a new Linux kernel, and it's been compiled with many driver modules (as is normally the case with most Linux "distros"), then there is a chance that drivers for your device are already included. In such a case, upon boot-up, your device should be "automagically" detected and will have the appropriate driver modules loaded into memory. Which modules are required? Well, the answer to that question depends entirely upon the chipsets used by your device -- see the relevant wiki article for your device for a listing of such components and required drivers. If you are aware of which driver modules are required for your device, you can see if they were loaded by running the following command in a terminal:

lsmod

Provided that the drivers were loaded, you should now have a non-empty /dev/dvb directory. (Note: this directory is created automatically by udev, so you do not need to create it yourself). You can check on whether this is true for you with the following command:

ls -l /dev/dvb/

(alternatively, you can browse your directory sturcture with the graphical file mangager of your choice). If you have a single DVB device installed in your system, then the output of the above command should reveal that /dev/dvb/ is populated by adapter0. Digging further,

ls -l /dev/dvb/adapter0

reveals the devices associated with adapter0 for which the drivers have control. If you have more then one DVB device, you can see the same for all with

ls -l /dev/dvb/adapter*

Now, if you don't have a populated /dev/dvb/ directory, then something has failed. There could be several reasons for such.

  • If a module was not loaded but you know you have it configured on your system, you can load it with the appropriate modprobe command.
  • If, on the other hand, you have all the modules active (listed in lsmod) but no /dev/dvb/ directories to be found, check dmesg for any errors, ie:
dmesg | grep dvb
The problem may be as simple as the firmware for the device not being loaded. For example, for many TechnoTrend & Hauppauge (and other similar "premium" cards), if the dvb-ttpci firmware is not available you will observe an error such as:
  dvb-ttpci: could not load firmware, file not found: dvb-ttpci-01.fw
  dvb-ttpci: usually this should be in /usr/lib/hotplug/firmware or /lib/firmware
  dvb-ttpci: and can be downloaded from http://www.linuxtv.org/download/dvb/firmware/
Resolving that missing firmware issue should then result in proper detection and configuration of your device.
  • The kernel used by your distro does not have recent enough drivers to support your device (in which case, see Case 2 below)


Case 2: Installation of LinuxTV Drivers Required

The LinuxTV project hosts the latest set of drivers for v4l-dvb devices; see http://linuxtv.org/repo

1. Acquire the necessary software
Before you can start you need the following:

  • mercurial: needed to download the latest source
  • kernel-headers, make, gcc: needed to compile the the driver

The following provides examples of how to install the Mercurial software package for some distributions (Note that [sudo] means that you only have to specify "sudo" if you aren't root, otherwise omit it.):

  • On Debian-based distributions you can use the following command to install all required software:
$ [sudo] apt-get install mercurial linux-headers-$(uname -r) build-essential
  • On Gentoo-based distributions you can use the following command to install mercurial. Other dependancies are installed in main system tree.
$ [sudo] emerge mercurial
  • On Fedora is just as easy:
$ [sudo] yum install mercurial
$ [sudo] urpmi mercurial

2. Obtain latest v4l-dvb source code from LinuxTV
After we have installed all required software you should be able to download the latest source code with the following command:

 $ hg clone http://linuxtv.org/hg/v4l-dvb

This should create a directory called v4l-dvb in the current working directory.

3. Compile the v4l-dvb source code
Let's go inside the directory that contains the previously downloaded source:

 $ cd v4l-dvb

Then compile the source:

 $ make

If you run into any problems here, you should contact the developers via irc.freenode.net on #linuxtv or on #dvb.

4. Install the drivers
The next step is to install the driver by executing:

 $ sudo make install

5. Remove any old modules from memory
Perhaps the most straight forward thing to do at this point for the newbie would be just to restart your system.

More experienced users might appreciate using "sudo make unload" (which essentially will remove all modules (rmmod) for the device that might be currently loaded in memory from the running kernel) and then "modprobe" the appropriate driver modules for your device.

Either way, the end result should be the same.

6. A note on firmware
Some devices also require a firmware (which is uploaded from the host PC to the card) in order operate.

In some cases, when the device is correctly recognized, the associated drivers will provide information as to which firmware file is required -- have a look in your system log or use the command dmesg | grep dvb (see an example of this in the "Out of the Box Support" section above).

In other cases, obtaining the correct firmware is not so straight forward of a task. The very first thing you will need to know is what device you're using. Normally the device name and model are written somewhere on either the device itself, its box/packaging or, at the very least, listed in its manual. That may seem obvious enough, but a surprising number of devices are available with no or next to little in the way of model identification. In those latter cases, the output of the following tools may be able to aide you in making a determination. For PCI or PCIe devices, use

 $ lspci -v

For USB devices, use

 $ lsusb -v

Once you have sorted out the device's identity, you can then move on to obtaining the correct firmware.

Most firmware can be found at:

In addition, information in wiki articles (eg. such as DVB-T USB Devices) will cite the appropriate firmware required. If you're still at a lost, its likely a Google search will shed light on what file you need. Note, however, that not all supported devices have a firmware that is easily available (eg. Hauppauge HVR 1100 & 1300). Firmware for such cards could be loaded via temporary installation in an MS Windows System with the Manufacturer supplied drivers.

In any regard, once you find and obtain the necessary firmware for your device, copy it into the appropriate hotplug directory. The location of this directory depends on your distribution, but normally it's one of these:

  • /lib/firmware
  • /usr/lib/hotplug/firmware


Solution for 2.4.x kernels

The Linux DVB drivers work on only reasonably new kernels (>= 2.6.12) and so you should upgrade your kernel to a 2.6 kernel before attempting to use DVB. You should also investigate installing the "udev" package (for kernels >= 2.6.15) which automatically populates the /dev directory when devices are found.


Further documentation