diff options
Diffstat (limited to 'linux/Documentation/dvb/firmware.txt')
-rw-r--r-- | linux/Documentation/dvb/firmware.txt | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/linux/Documentation/dvb/firmware.txt b/linux/Documentation/dvb/firmware.txt new file mode 100644 index 000000000..8cb3e71cd --- /dev/null +++ b/linux/Documentation/dvb/firmware.txt @@ -0,0 +1,116 @@ +Some DVB cards and many newer frontends require proprietary, +binary-only firmware. + +The DVB drivers will be converted to use the request_firmware() +hotplug interface (see linux/Documentation/firmware_class/). +(CONFIG_FW_LOADER) + +The firmware can be loaded automatically via the hotplug manager +or manually with the steps described below. + +Currently the drivers still use various different methods +to load their firmwares, so here's just a short list of the +current state: + +- dvb-ttpci: driver uses firmware hotplug interface +- ttusb-budget: firmware is compiled in (dvb-ttusb-dspbootcode.h) +- sp887x: firmware is compiled in (sp887x_firm.h) +- alps_tdlb7: firmware is loaded from path specified by + "mcfile" module parameter; the binary must be + extracted from the Windows driver (Sc_main.mc). +- tda1004x: firmware is loaded from path specified in + DVB_TDA1004X_FIRMWARE_FILE kernel config + variable (default /etc/dvb/tda1004x.bin); the + firmware binary must be extracted from the windows + driver +- ttusb-dec: see "ttusb-dec.txt" for details + +1) Automatic firmware loading + +You need to install recent hotplug scripts if your distribution did not do it +for you already, especially the /etc/hotplug/firmware.agent. +http://linux-hotplug.sourceforge.net/ (Call /sbin/hotplug without arguments +to find out if the firmware agent is installed.) + +The firmware.agent script expects firmware binaries in +/usr/lib/hotplug/firmware/. To avoid naming and versioning +conflicts we propose the following naming scheme: + + /usr/lib/hotplug/firmware/dvb-{driver}-{ver}.fw for MPEG decoders etc. + /usr/lib/hotplug/firmware/dvb-fe-{driver}-{ver}.fw for frontends + + {driver} name is the basename of the driver kernel module (e.g. dvb-ttpci) + {ver} is a version number/name that should change only when the + driver/firmware internal API changes (so users are free to install the + latest firmware compatible with the driver). + +2) Manually loading the firmware into a driver + (currently only the dvb-ttpci / av7110 driver supports this) + +Step a) Mount sysfs-filesystem. + +Sysfs provides a means to export kernel data structures, their attributes, +and the linkages between them to userspace. + +For detailed informations have a look at Documentation/filesystems/sysfs.txt +All you need to know at the moment is that firmware loading only works through +sysfs. + +> mkdir /sys +> mount -t sysfs sysfs /sys + +Step b) Exploring the firmware loading facilities + +Firmware_class support is located in +/sys/class/firmware + +> dir /sys/class/firmware + +The "timeout" values specifies the amount of time that is waited before the +firmware upload process is cancelled. The default values is 10 seconds. If +you use a hotplug script for the firmware upload, this is sufficient. If +you want to upload the firmware by hand, however, this might be too fast. + +> echo "180" > /sys/class/firmware/timeout + +Step c) Getting a usable firmware file for the dvb-ttpci driver/av7110 card. + +You can download the firmware files from +http://www.linuxtv.org/download/dvb/ + +Please note that in case of the dvb-ttpci driver this is *not* the "Root" +file you probably know from the 2.4 DVB releases driver. + +> wget http://www.linuxtv.org/download/dvb/dvb-ttpci-1_21.fw +gets you the version "1.21" of the firmware fot the ttpci driver. + +Step d) Loading the dvb-ttpci driver and loading the firmware + +"modprobe" will take care that every needed module will be loaded +automatically (except the frontend driver) + +> modprobe dvb-ttpci + +The "modprobe" process will hang until +a) you upload the firmware or +b) the timeout occurs. + +Change to another terminal and have a look at + +> dir /sys/class/firmware/ + +total 0 +drwxr-xr-x 2 root root 0 Jul 29 11:00 0000:03:05.0 +-rw-r--r-- 1 root root 0 Jul 29 10:41 timeout + +"0000:03:05.0" is the id for my dvb-c card. It depends on the pci slot, +so it changes if you plug the card to different slots. + +You can upload the firmware like that: + +> export DEVDIR=/sys/class/firmware/0000\:03\:05.0 +> echo 1 > $DEVDIR/loading +> cat dvb-ttpci-01.fw > $DEVDIR/data +> echo 0 > $DEVDIR/loading + +That's it. The driver should be up and running now. |