[linux-dvb] How to compile the firmware into the driver?

Klaus Schmidinger Klaus.Schmidinger at cadsoft.de
Sun Dec 4 15:59:55 CET 2005

Gerald Raaf wrote:
> Am Sonntag, 4. Dezember 2005 15:28 schrieb Klaus Schmidinger:
>>Klaus Schmidinger wrote:
>>>I have downloaded the latest driver snapshot from
>>>  http://linuxtv.org/downloads/snapshots/v4l-dvb-20051202.tar.gz
>>>and the latest firmware from
>>>  http://linuxtv.org/downloads/firmware/dvb-ttpci-01.fw-2622
>>>and expanded the driver source into
>>>  /home/kls/vdr/DVB-v4l-dvb.2005-12-02
>>>What is the simplest method to build this driver and have
>>>it compile the firmware into it?
>>>I tried writing
>>>into /usr/src/linux/.config and create a symlink in
>>>-rw-r--r--   1 kls users 239956 Dec  4 13:13 dvb-ttpci-01.fw-2622
>>>lrwxrwxrwx   1 kls users     20 Dec  4 13:13 dvb-ttpci-01.fw ->
>>>but apparently that doesn't impress the make process.
>>>Is there a simple trick to do this?
>>Ok, so I think I've managed to do this, by editing some source files.
>>I'm still hoping there is a clean way to do this, though.
>>So now I have all the *.ko files in
>>/home/kls/vdr/DVB-v4l-dvb.2005-12-02/v4l, but I can't seen to find out how
>>to properly load them. There used to be an 'insmod.sh' script before the
>>v4l/dvb merge, but that's no
>>longer there.
>>Does anybody know how to properly load the *.ko files?
>>Note that I do _not_ want to do "make install", because I
>>want to be able to have several driver versions in their
>>own directories, and want to switch between these by simply
>>placing a symlink. Therefore I need a way to load and unload
>>the modules from a given driver directory, without copying anything
>>to /lib/modules/...
> go to the directory where the *.ko files are.
> insmod *.ko

This didn't work...

> I think you can use an insmod.sh from old directory.

...but this did - the sequence is important.
I wonder why this script isn't part of the driver source any more...

> What did you change to create the firmware (av7110_firm.h)? Because i didn't 
> manage to do this.

--- /home/kls/vdr/DVB.head/v4l-dvb/v4l/Make.config      2005-11-29 14:36:59.000000000 +0100
+++ Make.config 2005-12-04 14:43:03.919359189 +0100
@@ -19,7 +19,7 @@

  # doesn't build on kernels older than 2.6.12

-CONFIG_VIDEO_BUF_DVB           := n
+CONFIG_VIDEO_BUF_DVB           := m
  CONFIG_VIDEO_CX88_DVB          := n
  CONFIG_VIDEO_SAA7134_DVB       := n

@@ -90,5 +90,7 @@
   CONFIG_DVB_TTUSB_DEC          := m
   CONFIG_VIDEO_SAA7146          := m
   CONFIG_VIDEO_SAA7146_VV       := m
+ CONFIG_DVB_AV7110_FIRMWARE_FILE := ./dvb-ttpci-01.fw

--- /home/kls/vdr/DVB.head/v4l-dvb/linux/drivers/media/dvb/ttpci/av7110.c       2005-11-27 00:46:56.000000000 +0100
+++ av7110.c    2005-12-04 14:54:58.478392378 +0100
@@ -1461,6 +1461,7 @@
         return 0;

  #include "av7110_firm.h"
  static void put_firmware(struct av7110* av7110)

Don't know why I had to also change av7110.c, because I would have
expected the CONFIG_DVB_AV7110_FIRMWARE_FILE macro to be set in
Make.config, but at least that way it worked.

Maybe (hopefully!) there is a simpler method of doing this,
but then at least it wasn't obvious to me...


More information about the linux-dvb mailing list