# [solved] Problem loading Hauppauge HVR4000 firmware

## boppen

Hi!

I'm building a new HTPC, so I've installed 2008.0, kernel 2.6.29 and everything works fine, I'm using the S2API drivers for my DVB card that's included in kernel 2.6.29, and I get a /dev/dvb/adapter0, but when I'm trying to use the card for the first time it tries to load the firmware, and it fails, see the end of the post for a dmesg output.

I have the correct firmware in /lib/firmware (I've used the card on another machine earlier and copied the firmware from that machine).

As I've understood it is udev that does the firmware loading stuff, I don't need hotplug or coldplug? I'm running udev-140. I've also tried to use the V4L drivers from linuxtv.org but I get the exact same result.

Maybe there i something wrong with my kernel configuration? Or I need some more software?

Thanks for any hint what I've done wrong  :Wink: 

Regards, Boppen

dmesg when the modules load:

```
[    5.793492] cx88[0]/0: registered device video0 [v4l2]

[    5.793513] cx88[0]/0: registered device vbi0

[    5.793531] cx88[0]/0: registered device radio0

[    5.967378] cx88/2: cx2388x dvb driver version 0.0.6 loaded

[    5.967382] cx88/2: registering cx8802 driver, type: dvb access: shared

[    5.967387] cx88[0]/2: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=68]

[    5.967391] cx88[0]/2: cx2388x based DVB/ATSC card

[    5.967393] cx8802_alloc_frontends() allocating 2 frontend(s)

[    6.034774] nvidia: module license 'NVIDIA' taints kernel.

[    6.305928] ACPI: PCI Interrupt Link [APC8] enabled at IRQ 16

[    6.305935] nvidia 0000:02:00.0: PCI INT A -> Link[APC8] -> GSI 16 (level, low) -> IRQ 16

[    6.305942] nvidia 0000:02:00.0: setting latency timer to 64

[    6.307272] NVRM: loading NVIDIA UNIX x86 Kernel Module  180.41  Thu Mar 19 00:03:09 PST 2009

[    6.312337] tuner-simple 2-0061: attaching existing instance

[    6.312342] tuner-simple 2-0061: couldn't set type to 63. Using 78 (Philips FMD1216MEX MK3 Hybrid Tuner) instead

[    6.314413] DVB: registering new adapter (cx88[0])

[    6.314417] DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)...

[    6.314711] DVB: registering adapter 0 frontend 1 (Conexant CX22702 DVB-T)...
```

/dev:

```
kanelbulle / # ls /dev/dvb/adapter0/

demux0  demux1  dvr0  dvr1  frontend0  frontend1  net0  net1

```

dmesg when it tries to load the firmware:

```
[   95.546913] cx24116_firmware_ondemand: Waiting for firmware upload (dvb-fe-cx24116.fw)...

[   95.546920] i2c-adapter i2c-2: firmware: requesting dvb-fe-cx24116.fw

[   95.546939] ------------[ cut here ]------------

[   95.546941] WARNING: at fs/sysfs/dir.c:462 sysfs_add_one+0x2a/0x36()

[   95.546944] Hardware name: M61SME-S2L

[   95.546945] sysfs: duplicate filename 'i2c-2' can not be created

[   95.546947] Modules linked in: cx22702 isl6421 cx24116 nvidia(P) cx88_dvb cx88_vp3054_i2c videobuf_dvb dvb_core wm8775 tuner_simple tuner_types tda9887 tda8290 tuner cx8800 cx8802 cx88_alsa cx88xx ir_common v4l2_common videodev tveeprom v4l1_compat videobuf_dma_sg videobuf_core btcx_risc

[   95.546966] Pid: 4587, comm: kdvb-ad-0-fe-0 Tainted: P        W  2.6.29-gentoo #6

[   95.546968] Call Trace:

[   95.546974]  [<c1025c33>] warn_slowpath+0x74/0x8a

[   95.546981]  [<c114b189>] ? idr_get_empty_slot+0x155/0x230

[   95.546984]  [<c114b33a>] ? ida_get_new_above+0xd6/0x153

[   95.546989]  [<c108f34b>] ? wait_on_inode+0x24/0x2a

[   95.546992]  [<c108f406>] ? ifind+0x45/0x57

[   95.546995]  [<c10bc011>] sysfs_add_one+0x2a/0x36

[   95.546998]  [<c10bc480>] create_dir+0x43/0x68

[   95.547011]  [<c10bc4d2>] sysfs_create_dir+0x2d/0x41

[   95.547014]  [<c114bcae>] ? kobject_get+0x12/0x17

[   95.547016]  [<c114bd63>] kobject_add_internal+0xb0/0x154

[   95.547019]  [<c114beb2>] kobject_add_varg+0x35/0x41

[   95.547022]  [<c114c224>] kobject_add+0x49/0x4f

[   95.547027]  [<c11d5939>] device_add+0x73/0x40d

[   95.547030]  [<c114bade>] ? kobject_init_internal+0x12/0x28

[   95.547032]  [<c114bb46>] ? kobject_init+0x35/0x5a

[   95.547035]  [<c11d5ce5>] device_register+0x12/0x15

[   95.547040]  [<c11dafc3>] _request_firmware+0x177/0x346

[   95.547045]  [<c11db20b>] request_firmware+0xa/0xc

[   95.547051]  [<f7df0525>] cx24116_cmd_execute+0xa5/0x528 [cx24116]

[   95.547058]  [<c12a22b9>] ? bit_xfer+0x391/0x39c

[   95.547062]  [<f7df10fd>] cx24116_sleep+0x40/0x82 [cx24116]

[   95.547066]  [<f7df60b6>] ? isl6421_set_voltage+0x5f/0x6c [isl6421]

[   95.547079]  [<f7d5e3bd>] dvb_frontend_thread+0x44c/0x480 [dvb_core]

[   95.547085]  [<c1035835>] ? autoremove_wake_function+0x0/0x33

[   95.547094]  [<f7d5df71>] ? dvb_frontend_thread+0x0/0x480 [dvb_core]

[   95.547097]  [<c1035761>] kthread+0x3b/0x62

[   95.547100]  [<c1035726>] ? kthread+0x0/0x62

[   95.547104]  [<c10036cb>] kernel_thread_helper+0x7/0x10

[   95.547106] ---[ end trace f6e92b375342d9f4 ]---

[   95.547111] kobject_add_internal failed for i2c-2 with -EEXIST, don't try to register things with the same name in the same directory.

[   95.547114] Pid: 4587, comm: kdvb-ad-0-fe-0 Tainted: P        W  2.6.29-gentoo #6

[   95.547116] Call Trace:

[   95.547119]  [<c114bdcf>] kobject_add_internal+0x11c/0x154

[   95.547122]  [<c114beb2>] kobject_add_varg+0x35/0x41

[   95.547124]  [<c114c224>] kobject_add+0x49/0x4f

[   95.547127]  [<c11d5939>] device_add+0x73/0x40d

[   95.547130]  [<c114bade>] ? kobject_init_internal+0x12/0x28

[   95.547133]  [<c114bb46>] ? kobject_init+0x35/0x5a

[   95.547136]  [<c11d5ce5>] device_register+0x12/0x15

[   95.547139]  [<c11dafc3>] _request_firmware+0x177/0x346

[   95.547144]  [<c11db20b>] request_firmware+0xa/0xc

[   95.547148]  [<f7df0525>] cx24116_cmd_execute+0xa5/0x528 [cx24116]

[   95.547152]  [<c12a22b9>] ? bit_xfer+0x391/0x39c

[   95.547156]  [<f7df10fd>] cx24116_sleep+0x40/0x82 [cx24116]

[   95.547160]  [<f7df60b6>] ? isl6421_set_voltage+0x5f/0x6c [isl6421]

[   95.547168]  [<f7d5e3bd>] dvb_frontend_thread+0x44c/0x480 [dvb_core]

[   95.547172]  [<c1035835>] ? autoremove_wake_function+0x0/0x33

[   95.547181]  [<f7d5df71>] ? dvb_frontend_thread+0x0/0x480 [dvb_core]

[   95.547184]  [<c1035761>] kthread+0x3b/0x62

[   95.547187]  [<c1035726>] ? kthread+0x0/0x62

[   95.547190]  [<c10036cb>] kernel_thread_helper+0x7/0x10

[   95.547193] i2c-adapter i2c-2: fw_register_device: device_register failed

[   95.547195] cx24116_firmware_ondemand: Waiting for firmware upload(2)...

[   95.547198] cx24116_firmware_ondemand: No firmware uploaded (timeout or file not found?)

[   95.547200] cx24116_cmd_execute(): Unable initialise the firmware

[   95.547209] kdvb-ad-0-fe-0 used greatest stack depth: 6112 bytes left
```

----------

## boppen

My problem was that I've had compiled the kernel with I2C_CHARDEV=y - changing that to n and everything works!

----------

