summaryrefslogtreecommitdiff
path: root/linux/Documentation/dvb/firmware.txt
diff options
context:
space:
mode:
Diffstat (limited to 'linux/Documentation/dvb/firmware.txt')
-rw-r--r--linux/Documentation/dvb/firmware.txt116
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.