Because there was some interest on the firmware, I've put it onto the web. The firmware is at http://home.arcor.de/efocht/dvb-usb-wt220u-fc03.fw The preprocessed usbsnoop trace is at: http://home.arcor.de/efocht/usbsnoop.hexfw The patch to v4l-dvb is attached to this email and at http://home.arcor.de/efocht/freecom_dvbt.patch One thing is strange when looking at the USB trace: There is a reset after around 1/5th of the transfers. The things written before this reset are overwritten afterwards. Any idea how to handle this in the firmware file? And: the ooops occurs allways after the third "WARNING: filter timeout pid 0x0010". Looks like the hardware PID filters are not handled properly, yet. Thanks in advance for any hints... Regards, Erich On Tuesday 04 July 2006 18:05, Erich Focht wrote: > On Tuesday 04 July 2006 00:47, hermann pitton wrote: > > it is just a few days back and was a success story. > > http://linuxtv.org/pipermail/linux-dvb/2006-June/011131.html > > Thanks for the hint! I have a firmware now which alights the LED. > > Unfortunately when trying to dvbscan, there's an ooops: > > in theoutput I'm getting lots of: > ... > WARNING: >>> tuning failed!!! > >>> tune to: 730000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE > WARNING: filter timeout pid 0x0011 > WARNING: filter timeout pid 0x0000 > WARNING: filter timeout pid 0x0010 > > > And "dmesg" shows: > > dvb-usb: found a 'WideView WT-220U PenType Receiver (Typhoon/Freecom)' in warm state. > dvb-usb: will use the device's hardware PID filter (table count: 15). > DVB: registering new adapter (WideView WT-220U PenType Receiver (Typhoon/Freecom)). > DVB: registering frontend 0 (WideView USB DVB-T)... > input: IR-receiver inside an USB DVB receiver as /class/input/input5 > dvb-usb: schedule remote query interval to 300 msecs. > dvb-usb: WideView WT-220U PenType Receiver (Typhoon/Freecom) successfully initialized and connected. > dvb-usb: recv bulk message failed: -110 > drivers/usb/input/hid-core.c: timeout initializing reports > input: Digital TV Receiver Digital TV Receiver as /class/input/input6 > input: USB HID v1.10 Keyboard [Digital TV Receiver Digital TV Receiver] on usb-0000:00:1d.7-4 > Unable to handle kernel NULL pointer dereference at virtual address 00000048 > printing eip: > efa484f7 > *pde = 00000000 > Oops: 0000 [#1] > last sysfs file: /devices/pci0000:00/0000:00:1d.7/usb3/3-4/3-4:1.1/bInterfaceProtocol > Modules linked in: dvb_usb_dtt200u dvb_usb dvb_core dvb_pll michael_mic arc4 ieee80211_crypt_tkip ipv6 cpufreq_ondemand cpufreq_userspace cpufreq_powersave speedstep_centrino freq_table snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device i915 drm af_packet edd toshiba_acpi button battery ac apparmor aamatch_pcre ext3 jbd loop usbhid dm_mod shpchp pci_hotplug pcmcia intel_agp agpgart e100 mii i2c_i801 i2c_core ehci_hcd uhci_hcd usbcore snd_intel8x0 snd_ac97_codec snd_ac97_bus snd_pcm snd_timer snd soundcore snd_page_alloc i8xx_tco ipw2200 ieee80211 ieee80211_crypt firmware_class yenta_socket rsrc_nonstatic pcmcia_core parport_pc lp parport reiserfs fan thermal processor piix ide_disk ide_core > CPU: 0 > EIP: 0060:[<efa484f7>] Tainted: G U VLI > EFLAGS: 00010007 (2.6.16.13-4-default #1) > EIP is at start_unlink_async+0x3c/0x99 [ehci_hcd] > eax: 00000000 ebx: dfedd0d0 ecx: 00000000 edx: ee343200 > esi: ee343200 edi: 00010011 ebp: dfedd000 esp: dcee7da0 > ds: 007b es: 007b ss: 0068 > Process dvbscan (pid: 5347, threadinfo=dcee6000 task=d696b570) > Stack: <0>ee343200 dfedd0d0 00000287 efa4acd1 d56526c0 d56526c0 dfedd000 00000282 > efa6ca41 00000000 00000082 dca0c140 d8616930 00000001 dcee7dfc c011415f > 00000000 00000001 d8616930 00000000 00000202 dcee7ee1 dfedd000 d56526c0 > Call Trace: > [<efa4acd1>] ehci_urb_dequeue+0x2a/0x94 [ehci_hcd] > [<efa6ca41>] unlink1+0xf6/0xfd [usbcore] > [<c011415f>] __wake_up_common+0x2e/0x4d > [<efa6d437>] hcd_unlink_urb+0xea/0x10d [usbcore] > [<efa6dcbf>] usb_kill_urb+0x5b/0xd7 [usbcore] > [<c01eb682>] n_tty_receive_buf+0xbd6/0xc22 > [<efc72e38>] dvb_usb_generic_write+0xe/0x12 [dvb_usb] > [<efc72b42>] dvb_usb_urb_kill+0x2d/0x44 [dvb_usb] > [<efc73735>] dvb_usb_ctrl_feed+0x4b/0x179 [dvb_usb] > [<efd18ea9>] dmx_section_feed_stop_filtering+0x3a/0x5c [dvb_core] > [<efd17b55>] dvb_dmxdev_feed_stop+0x33/0x41 [dvb_core] > [<efd17b8f>] dvb_dmxdev_filter_stop+0x2c/0x74 [dvb_core] > [<efd18086>] dvb_demux_do_ioctl+0xe2/0x2a4 [dvb_core] > [<efd17102>] dvb_usercopy+0xa6/0xff [dvb_core] > [<c01e6a2a>] tty_default_put_char+0x17/0x1a > [<c01ea411>] opost+0x180/0x196 > [<c01eaa98>] write_chan+0x294/0x2a8 > [<c01e6ef7>] tty_ldisc_deref+0x47/0x4d > [<efd17901>] dvb_demux_ioctl+0x0/0x11 [dvb_core] > [<efd1790f>] dvb_demux_ioctl+0xe/0x11 [dvb_core] > [<efd17fa4>] dvb_demux_do_ioctl+0x0/0x2a4 [dvb_core] > [<c0158df2>] do_ioctl+0x3a/0x49 > [<c0159000>] vfs_ioctl+0x1ff/0x216 > [<c015905f>] sys_ioctl+0x48/0x61 > [<c01029db>] sysenter_past_esp+0x54/0x79 > Code: 83 7b fc 00 74 05 83 e7 df 89 38 0f ba b3 a8 00 00 00 03 eb 6f c6 42 68 02 8d 42 60 e8 0f ac 75 d0 8b 4b 10 89 73 14 eb 02 89 c1 <8b> 41 48 39 f0 75 f7 8b 06 89 01 8b 46 48 89 41 48 83 7b fc 00 > <3>Debug: sleeping function called from invalid context at include/linux/rwsem.h:43 > in_atomic():0, irqs_disabled():1 > [<c011841b>] profile_task_exit+0x18/0x3e > [<c0119713>] do_exit+0x1c/0x63f > [<c0117c8c>] printk+0x14/0x18 > [<c01043a8>] show_stack+0x0/0xa > [<c0273add>] do_page_fault+0x382/0x53c > [<efa484f7>] start_unlink_async+0x3c/0x99 [ehci_hcd] > [<c027375b>] do_page_fault+0x0/0x53c > [<c0103bbf>] error_code+0x4f/0x60 > [<efa484f7>] start_unlink_async+0x3c/0x99 [ehci_hcd] > [<efa4acd1>] ehci_urb_dequeue+0x2a/0x94 [ehci_hcd] > [<efa6ca41>] unlink1+0xf6/0xfd [usbcore] > [<c011415f>] __wake_up_common+0x2e/0x4d > [<efa6d437>] hcd_unlink_urb+0xea/0x10d [usbcore] > [<efa6dcbf>] usb_kill_urb+0x5b/0xd7 [usbcore] > [<c01eb682>] n_tty_receive_buf+0xbd6/0xc22 > [<efc72e38>] dvb_usb_generic_write+0xe/0x12 [dvb_usb] > [<efc72b42>] dvb_usb_urb_kill+0x2d/0x44 [dvb_usb] > [<efc73735>] dvb_usb_ctrl_feed+0x4b/0x179 [dvb_usb] > [<efd18ea9>] dmx_section_feed_stop_filtering+0x3a/0x5c [dvb_core] > [<efd17b55>] dvb_dmxdev_feed_stop+0x33/0x41 [dvb_core] > [<efd17b8f>] dvb_dmxdev_filter_stop+0x2c/0x74 [dvb_core] > [<efd18086>] dvb_demux_do_ioctl+0xe2/0x2a4 [dvb_core] > [<efd17102>] dvb_usercopy+0xa6/0xff [dvb_core] > [<c01e6a2a>] tty_default_put_char+0x17/0x1a > [<c01ea411>] opost+0x180/0x196 > [<c01eaa98>] write_chan+0x294/0x2a8 > [<c01e6ef7>] tty_ldisc_deref+0x47/0x4d > [<efd17901>] dvb_demux_ioctl+0x0/0x11 [dvb_core] > [<efd1790f>] dvb_demux_ioctl+0xe/0x11 [dvb_core] > [<efd17fa4>] dvb_demux_do_ioctl+0x0/0x2a4 [dvb_core] > [<c0158df2>] do_ioctl+0x3a/0x49 > [<c0159000>] vfs_ioctl+0x1ff/0x216 > [<c015905f>] sys_ioctl+0x48/0x61 > [<c01029db>] sysenter_past_esp+0x54/0x79 > > > > Any idea how to proceed? > > Thanks, > best regards, > Erich > >
diff -ur t/v4l-dvb/linux/drivers/media/dvb/dvb-usb/dtt200u.c v4l-dvb/linux/drivers/media/dvb/dvb-usb/dtt200u.c --- t/v4l-dvb/linux/drivers/media/dvb/dvb-usb/dtt200u.c 2006-07-05 10:17:05.000000000 +0200 +++ v4l-dvb/linux/drivers/media/dvb/dvb-usb/dtt200u.c 2006-07-04 16:09:35.000000000 +0200 @@ -93,6 +93,7 @@ } static struct dvb_usb_properties dtt200u_properties; +static struct dvb_usb_properties wt220u_fc_properties; static struct dvb_usb_properties wt220u_properties; static struct dvb_usb_properties wt220u_zl0353_properties; @@ -101,6 +102,7 @@ { if (dvb_usb_device_init(intf,&dtt200u_properties,THIS_MODULE,NULL) == 0 || dvb_usb_device_init(intf,&wt220u_properties,THIS_MODULE,NULL) == 0 || + dvb_usb_device_init(intf,&wt220u_fc_properties,THIS_MODULE,NULL) == 0 || dvb_usb_device_init(intf,&wt220u_zl0353_properties,THIS_MODULE,NULL) == 0) return 0; @@ -114,6 +116,8 @@ { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_WT220U_WARM) }, { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_WT220U_ZL0353_COLD) }, { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_WT220U_ZL0353_WARM) }, + { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_WT220U_FC_COLD) }, + { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_WT220U_FC_WARM) }, { 0 }, }; MODULE_DEVICE_TABLE(usb, dtt200u_usb_table); @@ -200,6 +204,47 @@ } }; +static struct dvb_usb_properties wt220u_fc_properties = { + .caps = DVB_USB_HAS_PID_FILTER | DVB_USB_NEED_PID_FILTERING, + .pid_filter_count = 15, + + .usb_ctrl = CYPRESS_FX2, + .firmware = "dvb-usb-wt220u-fc03.fw", + + .power_ctrl = dtt200u_power_ctrl, + .streaming_ctrl = dtt200u_streaming_ctrl, + .pid_filter = dtt200u_pid_filter, + .frontend_attach = dtt200u_frontend_attach, + + .rc_interval = 300, + .rc_key_map = dtt200u_rc_keys, + .rc_key_map_size = ARRAY_SIZE(dtt200u_rc_keys), + .rc_query = dtt200u_rc_query, + + .generic_bulk_ctrl_endpoint = 0x01, + + /* parameter for the MPEG2-data transfer */ + .urb = { + .type = DVB_USB_BULK, + .count = 7, + .endpoint = 0x02, + .u = { + .bulk = { + .buffersize = 4096, + } + } + }, + + .num_device_descs = 1, + .devices = { + { .name = "WideView WT-220U PenType Receiver (Typhoon/Freecom)", + .cold_ids = { &dtt200u_usb_table[6], NULL }, + .warm_ids = { &dtt200u_usb_table[7], NULL }, + }, + { NULL }, + } +}; + static struct dvb_usb_properties wt220u_zl0353_properties = { .caps = DVB_USB_HAS_PID_FILTER | DVB_USB_NEED_PID_FILTERING, .pid_filter_count = 15, diff -ur t/v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h --- t/v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2006-07-05 10:17:05.000000000 +0200 +++ v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2006-07-01 11:05:32.000000000 +0200 @@ -84,6 +84,8 @@ #define USB_PID_DTT200U_WARM 0x0301 #define USB_PID_WT220U_COLD 0x0222 #define USB_PID_WT220U_WARM 0x0221 +#define USB_PID_WT220U_FC_COLD 0x0225 +#define USB_PID_WT220U_FC_WARM 0x0226 #define USB_PID_WT220U_ZL0353_COLD 0x022a #define USB_PID_WT220U_ZL0353_WARM 0x022b #define USB_PID_WINTV_NOVA_T_USB2_COLD 0x9300
_______________________________________________ linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb