Linux pages by ndrix
>Andrix Home <
 
Linux projects

Drivers
Applications
Downloads
Links

DVB drivers

Older versions
Patches by Rolf Siebrecht
Card detection problems

 

Card detection problems with Rolf's patched dvb-0.8.2 driver

Patches (level 8) created by Rolf Siebrecht for the dvb-0.8.2 drivers include a automatic detection for the card that one has in the computer.

However, some manufacturers (or maybe just some batches of cards) are improperly configured at the factory.

Each card has an onboard EEPROM which stores various information about the card.

  • subdevice ID (bytes 0, 1)
  • subvendor ID (bytes 2, 3)

(big-endian order). Some cards have an illconfigured subdevice ID :

  • a DVB-T card reported subdevice ID = 0x1002 (reported on the dvb-list, according to Rolf)
  • a Technisat SkyStar 1 PCB revision 1.3 reported subdevice ID = 0x1002 (my own card)
  • a similar pattern was found by Rolf in a Technisat MediafocusII (analogue satellite receiver)

Having the ID's wrong makes the detection of these cards impossible by the dvb-0.8.2-patch-8 although the same card works fine with the original driver.
Because of this, future releases of Rolf's patches may include a module parameter that will force detection of the card even if it has such a wierd ID.

Symptoms

  • Drivers will not load with message "Device or resource busy"
  • Check the logs! You will find :
kernel: dvb: no DVB card type detected on saa7146(0).
kernel: dvb: no (working) dvb found!
  • The following may appear with some debugging turned on: (see module parameters)
kernel: saa7146_core: ==> saa7146_core_init
saa7146_core: ==> saa7146_probe
kernel: saa7146_core: saa7146(0) @ pci 00:12.0; \
rev=1; mem=0xe1000000; irq=10; subsys=0x13c2,0x1002.

kernel: saa7146_core: saa7146(0): \
using 2 capture buffers of 1728 KBytes each (3456 KBytes total)

kernel: saa7146_core: saa7146(0): \
latency=32 clks; threshold=32 dwrds; burst=128 dwrds.

kernel: saa7146_core: 1 SAA7146 chipset(s) found. 
  • As marked above, the second word in subsys is the culprit.
    • lsmod will list some of the modules loaded, but not all.

    Workaround

  • Look in dvb.c at the definition of get_card_subtype() at the first case clause. If your subdevice ID is not in that list, add it as suggested below : (this example is for my Skystar 1 as suggested by Rolf Siebrecht.)
    switch (subdevice) {
case 0x0000:
case 0x1002:
subtype = DVB_CARD_TT_SIEMENS_S_1_3;
  • This will allow the card to be detected and the modules will load. You will also need to fix the subdevice ID in the card's EEPROM.
    Look in dvb.c at the list of device ID's and try to find the one that matches your card. Remember it.
    If you don't find anything close enough, ask on the mailing list, or Rolf Siebrecht for a suggestion.
  • Compile and load the changed drivers
  • Go into the tools directory and look at dumpee
  • Edit the last part of it like this :
 if (open_device (device, &fd)) {
exit (-1);
}
 put_ee_byte (fd, 0, 0x00);
 put_ee_byte (fd, 1, 0x00);
 dump_eeprom (fd);
 close_device (fd);
 exit (0);
  • Remember that the ID values are stored as big-endian.
  • Recompile dumpee and run it. The eeprom will be updated.
  • Edit dvb.c and from get_card_subtype() delete the original ID of your card. (undo the modifications).
  • Recompile. Everything should be working now...


© Andrei Boros 2000 - 2002
E-mail :  andrix@fx.ro