[linux-dvb] New DigiTV USB firmware works but....

Patrick Boettcher patrick.boettcher at desy.de
Fri Dec 16 14:39:24 CET 2005


Hi,

Can you please try the attached patch and tell me if it fixes your 
segfault?

On Wed, 14 Dec 2005, Fraser White wrote:

> Hi Guy,
> Nice work patrick, the firmware now loads, however now I have new problems. 
> The fernel module still isn't loading properly. See the syslog snippet 
> below....
>
>
> Dec 14 01:08:19 localhost kernel: usb 1-1: new high speed USB device using 
> ehci_hcd and address 3
> Dec 14 01:08:20 localhost kernel: dvb-usb: found a 'Nebula Electronics 
> uDigiTV DVB-T USB2.0)' in cold state, will try to load a firmware
> Dec 14 01:08:20 localhost kernel: dvb-usb: downloading firmware from file 
> 'dvb-usb-digitv-02.fw'
> Dec 14 01:08:20 localhost kernel: Unable to handle kernel NULL pointer 
> dereference at virtual address 000002d2
> Dec 14 01:08:20 localhost kernel:  printing eip:
> Dec 14 01:08:20 localhost kernel: d0c73816
> Dec 14 01:08:20 localhost kernel: *pde = 062ce067
> Dec 14 01:08:20 localhost kernel: Oops: 0000 [#1]
> Dec 14 01:08:20 localhost kernel: Modules linked in: dvb_usb_digitv(U) 
> nxt6000(U) mt352(U) dvb_usb(U) dvb_core(U) dvb_pll(U) smbfs parport_pc lp 
> parport autofs4 rfcomm l2cap bluetooth sunrpc ipt_REJECT ipt_state 
> ip_conntrack nfnetlink iptable_filter ip_tables video button battery ac ipv6 
> ohci1394 ieee1394 ohci_hcd ehci_hcd i2c_nforce2 i2c_core shpchp emu10k1_gp 
> gameport snd_emu10k1_synth snd_emux_synth snd_seq_virmidi snd_seq_midi_emul 
> snd_emu10k1 snd_rawmidi snd_ac97_codec snd_seq_dummy snd_seq_oss 
> snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm 
> snd_timer snd_ac97_bus snd_page_alloc snd_util_mem snd_hwdep snd soundcore 
> sk98lin floppy dm_snapshot dm_zero dm_mirror ext3 jbd dm_mod sata_nv libata 
> sd_mod scsi_mod
> Dec 14 01:08:20 localhost kernel: CPU:    0
> Dec 14 01:08:20 localhost kernel: EIP:    0060:[<d0c73816>]    Not tainted 
> VLI
> Dec 14 01:08:20 localhost kernel: EFLAGS: 00010292   (2.6.14-1.1644_FC4)
> Dec 14 01:08:20 localhost kernel: EIP is at dvb_usb_generic_rw+0x16/0x184 
> [dvb_usb]
> Dec 14 01:08:20 localhost kernel: eax: 00000000   ebx: 00000266   ecx: 
> 00000007   edx: c5efcebd
> Dec 14 01:08:20 localhost kernel: esi: 00000007   edi: c5efcec4   ebp: 
> c5efcebd   esp: c5efce58
> Dec 14 01:08:20 localhost kernel: ds: 007b   es: 007b   ss: 0068
> Dec 14 01:08:20 localhost usb.agent[7525]: ... can't load module 
> dvb-usb-digitv
> Dec 14 01:08:20 localhost kernel: Process modprobe (pid: 7546, 
> threadinfo=c5efc000 task=c6b4b570)
> Dec 14 01:08:20 localhost usb.agent[7525]: missing kernel or user mode driver 
> dvb-usb-digitv
> Dec 14 01:08:20 localhost kernel: Stack: 00000000 00000000 000000ff 00000286 
> 0000d8a0 00000286 00000000 00000000
> Dec 14 01:08:20 localhost kernel:        c5efceec c5efcec4 00000000 d0c739a6 
> 00000000 00000000 00000000 d0c62098
> Dec 14 01:08:20 localhost kernel:        fffffff4 c03883a0 d0c73749 00000000 
> 00000266 c5efcec8 d0c63a00 00008600
> Dec 14 01:08:20 localhost kernel: Call Trace:
> Dec 14 01:08:20 localhost kernel:  [<d0c739a6>] 
> dvb_usb_generic_write+0x22/0x26 [dvb_usb]
> Dec 14 01:08:20 localhost kernel:  [<d0c62098>] digitv_ctrl_msg+0x98/0xef 
> [dvb_usb_digitv]
> Dec 14 01:08:20 localhost kernel:  [<d0c73749>] 
> dvb_usb_device_init+0x159/0x1bb [dvb_usb]
> Dec 14 01:08:21 localhost kernel:  [<d0c62401>] digitv_probe+0x5d/0x95 
> [dvb_usb_digitv]
> Dec 14 01:08:21 localhost kernel:  [<c0276f9f>] usb_probe_interface+0x4c/0x5e
> Dec 14 01:08:21 localhost kernel:  [<c023a8cd>] driver_probe_device+0x35/0x9e
> Dec 14 01:08:21 localhost kernel:  [<c023a9f2>] __driver_attach+0x4a/0x4c
> Dec 14 01:08:21 localhost kernel:  [<c023a164>] bus_for_each_dev+0x3d/0x5b
> Dec 14 01:08:21 localhost kernel:  [<c023aa0a>] driver_attach+0x16/0x1a
> Dec 14 01:08:21 localhost kernel:  [<c023a9a8>] __driver_attach+0x0/0x4c
> Dec 14 01:08:21 localhost kernel:  [<c023a51f>] bus_add_driver+0x63/0xa9
> Dec 14 01:08:21 localhost kernel:  [<c0277065>] usb_register+0x54/0xb0
> Dec 14 01:08:21 localhost kernel:  [<d0c65000>] digitv_module_init+0x0/0x2b 
> [dvb_usb_digitv]
> Dec 14 01:08:21 localhost kernel:  [<d0c6500e>] digitv_module_init+0xe/0x2b 
> [dvb_usb_digitv]
> Dec 14 01:08:21 localhost kernel:  [<c01344bf>] sys_init_module+0xc5/0x1c9
> Dec 14 01:08:21 localhost kernel:  [<c0102edd>] syscall_call+0x7/0xb
> Dec 14 01:08:21 localhost kernel: Code: 7a 4a ef 83 c4 08 5b c3 90 90 90 90 
> 90 90 90 90 90 90 90 90 90 55 57 56 53 83 ec 1c 89 c3 89 d5 89 ce 8b 44 24 34 
> 66 89 44 24 12 <8b> 4b 6c 85 c9 0f 84 ab 00 00 00 85 d2 74 05 66 85 f6 75 0f 
> bf
>
>
>
>
>
> _______________________________________________
> linux-dvb mailing list
> linux-dvb at linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
>

Patrick.

--
   Mail: patrick.boettcher at desy.de
   WWW:  http://www.wi-bw.tfh-wildau.de/~pboettch/
-------------- next part --------------
Index: linux/drivers/media/dvb/dvb-usb/digitv.c
===================================================================
RCS file: /cvs/video4linux/v4l-dvb/linux/drivers/media/dvb/dvb-usb/digitv.c,v
retrieving revision 1.13
diff -u -3 -p -r1.13 digitv.c
--- linux/drivers/media/dvb/dvb-usb/digitv.c	20 Nov 2005 02:05:41 -0000	1.13
+++ linux/drivers/media/dvb/dvb-usb/digitv.c	16 Dec 2005 13:33:10 -0000
@@ -175,11 +175,13 @@ static int digitv_probe(struct usb_inter
 	if ((ret = dvb_usb_device_init(intf,&digitv_properties,THIS_MODULE,&d)) == 0) {
 		u8 b[4] = { 0 };
 
-		b[0] = 1;
-		digitv_ctrl_msg(d,USB_WRITE_REMOTE_TYPE,0,b,4,NULL,0);
+		if (d != NULL) { /* do that only when the firmware is loaded */
+			b[0] = 1;
+			digitv_ctrl_msg(d,USB_WRITE_REMOTE_TYPE,0,b,4,NULL,0);
 
-		b[0] = 0;
-		digitv_ctrl_msg(d,USB_WRITE_REMOTE,0,b,4,NULL,0);
+			b[0] = 0;
+			digitv_ctrl_msg(d,USB_WRITE_REMOTE,0,b,4,NULL,0);
+		}
 	}
 	return ret;
 }
@@ -194,7 +196,7 @@ static struct dvb_usb_properties digitv_
 	.caps = DVB_USB_IS_AN_I2C_ADAPTER,
 
 	.usb_ctrl = CYPRESS_FX2,
-	.firmware = "dvb-usb-digitv-01.fw",
+	.firmware = "dvb-usb-digitv-02.fw",
 
 	.size_of_priv     = 0,
 


More information about the linux-dvb mailing list