Re: dibusb-common.c FE_HAS_LOCK problem
Hi Mario, On Sat, 21 Nov 2009, grafgrim...@gmx.de wrote: Am Thu, 19 Nov 2009 16:37:18 +0100 (CET) schrieb Patrick Boettcher pboettc...@kernellabs.com: On Sat, 7 Nov 2009, Mario Bachmann wrote: Hi there, I tried linux-2.6.31.5 and tuning still does not work: tuning to 73800 Hz video pid 0x0131, audio pid 0x0132 status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 04 | signal | snr | ber 001f | unc | With some changes for the following file it works again: /usr/src/linux/drivers/media/dvb/dvb-usb/dibusb-common.c diff -Naur dibusb-common.c-ORIGINAL dibusb-common.c --- dibusb-common.c-ORIGINAL2009-11-07 10:30:43.705344308 +0100 +++ dibusb-common.c 2009-11-07 10:33:49.969345253 +0100 @@ -133,17 +133,14 @@ for (i = 0; i num; i++) { /* write/read request */ - if (i+1 num (msg[i].flags I2C_M_RD) == 0 - (msg[i+1].flags I2C_M_RD)) { + if (i+1 num (msg[i+1].flags I2C_M_RD)) { if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len, msg[i+1].buf,msg[i+1].len) 0) break; i++; - } else if ((msg[i].flags I2C_M_RD) == 0) { + } else if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len,NULL,0) 0) break; - } else - break; } Doing it is reverting a fix which avoids that uncontrolled i2c-access from userspace is destroying the USB-eeprom. I understand that this is breaking the tuning for your board. I'm just not understanding why. If you have some time to debug this issue, could you please try the following: One of the devices for your board is trying to do an I2c access which is falling into the last 'else'-branch - can you add a printk to find out which one it is? The access must be wrongly constructed and must be fixed in that driver. thanks, PS: if you don't have time to do it, please tell so. -- Patrick http://www.kernellabs.com/ I do not understand exactly. printk what? Could you please give me a complete piece of code with the printk command? Would be great! My printk-tries ends up in an Oops. There is a } else break; sequence in dibusb_i2c_xfer instead of break, please add something like printk(KERN_ERR - hello stupid I2C access \n); recompile and load the new module, then check whether the line is appearing in /var/log/messages or /var/log/syslog when you tune the board. If this is the case, try to identify which device is issuing the access by printing the i2c-address of struct i2c_msg. HTH, -- Patrick http://www.kernellabs.com/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: dibusb-common.c FE_HAS_LOCK problem
Am Mon, 23 Nov 2009 10:01:36 +0100 (CET) schrieb Patrick Boettcher pboettc...@kernellabs.com: Hi Mario, On Sat, 21 Nov 2009, grafgrim...@gmx.de wrote: Am Thu, 19 Nov 2009 16:37:18 +0100 (CET) schrieb Patrick Boettcher pboettc...@kernellabs.com: On Sat, 7 Nov 2009, Mario Bachmann wrote: Hi there, I tried linux-2.6.31.5 and tuning still does not work: tuning to 73800 Hz video pid 0x0131, audio pid 0x0132 status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 04 | signal | snr | ber 001f | unc | With some changes for the following file it works again: /usr/src/linux/drivers/media/dvb/dvb-usb/dibusb-common.c diff -Naur dibusb-common.c-ORIGINAL dibusb-common.c --- dibusb-common.c-ORIGINAL 2009-11-07 10:30:43.705344308 +0100 +++ dibusb-common.c 2009-11-07 10:33:49.969345253 +0100 @@ -133,17 +133,14 @@ for (i = 0; i num; i++) { /* write/read request */ - if (i+1 num (msg[i].flags I2C_M_RD) == 0 -(msg[i+1].flags I2C_M_RD)) { + if (i+1 num (msg[i+1].flags I2C_M_RD)) { if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len, msg[i+1].buf,msg[i+1].len) 0) break; i++; - } else if ((msg[i].flags I2C_M_RD) == 0) { + } else if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len,NULL,0) 0) break; - } else - break; } Doing it is reverting a fix which avoids that uncontrolled i2c-access from userspace is destroying the USB-eeprom. I understand that this is breaking the tuning for your board. I'm just not understanding why. If you have some time to debug this issue, could you please try the following: One of the devices for your board is trying to do an I2c access which is falling into the last 'else'-branch - can you add a printk to find out which one it is? The access must be wrongly constructed and must be fixed in that driver. thanks, PS: if you don't have time to do it, please tell so. -- Patrick http://www.kernellabs.com/ I do not understand exactly. printk what? Could you please give me a complete piece of code with the printk command? Would be great! My printk-tries ends up in an Oops. There is a } else break; sequence in dibusb_i2c_xfer instead of break, please add something like printk(KERN_ERR - hello stupid I2C access \n); recompile and load the new module, then check whether the line is appearing in /var/log/messages or /var/log/syslog when you tune the board. If this is the case, try to identify which device is issuing the access by printing the i2c-address of struct i2c_msg. HTH, -- Patrick http://www.kernellabs.com/ Hello Patrick, I tried it with Kernel 2.6.31.6 (same as before). I made the printk-change, recompiled and reloaded the modules and pluged in my Twinhan Magic Box... It definately jumps in the last else-branch and shows hello stupid I2C access, but no KERN_ERR ?! dmesg usb 4-2: new full speed USB device using ohci_hcd and address 4 usb 4-2: configuration #1 chosen from 1 choice dvb-usb: found a 'TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device' in cold state, will try to load a firmware usb 4-2: firmware: requesting dvb-usb-dibusb-5.0.0.11.fw dvb-usb: downloading firmware from file 'dvb-usb-dibusb-5.0.0.11.fw' usbcore: registered new interface driver dvb_usb_dibusb_mb usb 4-2: USB disconnect, address 4 dvb-usb: generic DVB-USB module successfully deinitialized and disconnected. usb 4-2: new full speed USB device using ohci_hcd and address 5 usb 4-2: configuration #1 chosen from 1 choice dvb-usb: found a 'TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device' in warm state. dvb-usb: will use the device's hardware PID filter (table count: 16). DVB: registering new adapter (TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device) DVB: registering adapter 0 frontend 0 (DiBcom 3000M-B DVB-T)... dibusb: This device has the Thomson Cable onboard. Which is default. - hello stupid I2C access input: IR-receiver inside an USB DVB receiver as /devices/pci:00/:00:04.0/usb4/4-2/input/input5 dvb-usb: schedule remote query interval to 150 msecs. dvb-usb: TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device successfully initialized and connected. tail -30 /var/log/messages Nov 23 11:49:46 x2 kernel: usb 4-2: new full speed USB device using ohci_hcd and address 4 Nov 23 11:49:46 x2 kernel: usb 4-2: configuration #1 chosen from 1 choice Nov 23 11:49:46 x2 kernel: dvb-usb:
Re: dibusb-common.c FE_HAS_LOCK problem
On Mon, 23 Nov 2009, Mario Bachmann wrote: sequence in dibusb_i2c_xfer instead of break, please add something like printk(KERN_ERR - hello stupid I2C access \n); recompile and load the new module, then check whether the line is appearing in /var/log/messages or /var/log/syslog when you tune the board. If this is the case, try to identify which device is issuing the access by printing the i2c-address of struct i2c_msg. HTH, -- Patrick http://www.kernellabs.com/ Hello Patrick, I tried it with Kernel 2.6.31.6 (same as before). I made the printk-change, recompiled and reloaded the modules and pluged in my Twinhan Magic Box... It definately jumps in the last else-branch and shows hello stupid I2C access, but no KERN_ERR ?! KERN_ERR is a prefix for printk to define the message priority to high. (to have it in syslog or messages) dibusb: This device has the Thomson Cable onboard. Which is default. - hello stupid I2C access Hmm... where is this coming from: can you write it like that: else { printk(...); dump_stack(); } Hey, without the break-command, tuning seems to work: $ tzap pro7 -r using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' reading channels from file '/home/grafrotz/.tzap/channels.conf' tuning to 73800 Hz video pid 0x0131, audio pid 0x0132 status 00 | signal | snr | ber 001f | unc | status 1f | signal 0b20 | snr 008d | ber 001f | unc | FE_HAS_LOCK status 1f | signal f4dd | snr 0077 | ber 0770 | unc | FE_HAS_LOCK status 1f | signal | snr 008c | ber 0770 | unc | FE_HAS_LOCK We are close to identify the drivers in charge for the stupid I2c access. -- Patrick Boettcher - Kernel Labs http://www.kernellabs.com/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: dibusb-common.c FE_HAS_LOCK problem
Am Mon, 23 Nov 2009 12:11:40 +0100 (CET) schrieb Patrick Boettcher pboettc...@kernellabs.com: On Mon, 23 Nov 2009, Mario Bachmann wrote: sequence in dibusb_i2c_xfer instead of break, please add something like printk(KERN_ERR - hello stupid I2C access \n); recompile and load the new module, then check whether the line is appearing in /var/log/messages or /var/log/syslog when you tune the board. If this is the case, try to identify which device is issuing the access by printing the i2c-address of struct i2c_msg. HTH, -- Patrick http://www.kernellabs.com/ Hello Patrick, I tried it with Kernel 2.6.31.6 (same as before). I made the printk-change, recompiled and reloaded the modules and pluged in my Twinhan Magic Box... It definately jumps in the last else-branch and shows hello stupid I2C access, but no KERN_ERR ?! KERN_ERR is a prefix for printk to define the message priority to high. (to have it in syslog or messages) dibusb: This device has the Thomson Cable onboard. Which is default. - hello stupid I2C access Hmm... where is this coming from: can you write it like that: else { printk(...); dump_stack(); } Hey, without the break-command, tuning seems to work: $ tzap pro7 -r using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' reading channels from file '/home/grafrotz/.tzap/channels.conf' tuning to 73800 Hz video pid 0x0131, audio pid 0x0132 status 00 | signal | snr | ber 001f | unc | status 1f | signal 0b20 | snr 008d | ber 001f | unc | FE_HAS_LOCK status 1f | signal f4dd | snr 0077 | ber 0770 | unc | FE_HAS_LOCK status 1f | signal | snr 008c | ber 0770 | unc | FE_HAS_LOCK We are close to identify the drivers in charge for the stupid I2c access. -- Patrick Boettcher - Kernel Labs http://www.kernellabs.com/ I use this code now: } else printk(KERN_ERR - hello stupid I2C access \n); dump_stack(); } dmesg dvb-usb: TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device successfully deinitialized and disconnected. usbcore: deregistering interface driver dvb_usb_dibusb_mb usb 4-2: new full speed USB device using ohci_hcd and address 6 usb 4-2: configuration #1 chosen from 1 choice dvb-usb: found a 'TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device' in cold state, will try to load a firmware usb 4-2: firmware: requesting dvb-usb-dibusb-5.0.0.11.fw dvb-usb: downloading firmware from file 'dvb-usb-dibusb-5.0.0.11.fw' usbcore: registered new interface driver dvb_usb_dibusb_mb usb 4-2: USB disconnect, address 6 dvb-usb: generic DVB-USB module successfully deinitialized and disconnected. usb 4-2: new full speed USB device using ohci_hcd and address 7 usb 4-2: configuration #1 chosen from 1 choice dvb-usb: found a 'TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device' in warm state. dvb-usb: will use the device's hardware PID filter (table count: 16). DVB: registering new adapter (TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device) Pid: 255, comm: khubd Tainted: P A 2.6.31.6 #1 Call Trace: [a0042292] ? dibusb_i2c_xfer+0xe2/0x130 [dvb_usb_dibusb_common] [81341dc1] ? i2c_transfer+0x91/0xe0 [a0059c23] ? dib3000_read_reg+0x63/0x80 [dib3000mb] [a005ad52] ? dib3000mb_attach+0x52/0xd4 [dib3000mb] [a0073268] ? dibusb_dib3000mb_frontend_attach+0x28/0x50 [dvb_usb_dibusb_mb] [a0034ef3] ? dvb_usb_adapter_frontend_init+0x13/0x100 [dvb_usb] [a0034837] ? dvb_usb_device_init+0x357/0x630 [dvb_usb] [81314021] ? usb_match_one_id+0x31/0xb0 [a0073050] ? dibusb_probe+0x20/0xa0 [dvb_usb_dibusb_mb] [81314962] ? usb_probe_interface+0xa2/0x170 [812b0e40] ? __device_attach+0x0/0x60 [812b0ca0] ? driver_probe_device+0x80/0x180 [812b0e69] ? __device_attach+0x29/0x60 [812b0e40] ? __device_attach+0x0/0x60 [812b013c] ? bus_for_each_drv+0x5c/0x90 [812b0f55] ? device_attach+0x85/0x90 [812aff45] ? bus_probe_device+0x25/0x40 [812ae879] ? device_add+0x4d9/0x5a0 [81313af0] ? usb_set_configuration+0x4a0/0x670 [812b0e40] ? __device_attach+0x0/0x60 [8131c1cf] ? generic_probe+0x2f/0xb0 [812b0ca0] ? driver_probe_device+0x80/0x180 [812b0e69] ? __device_attach+0x29/0x60 [812b0e40] ? __device_attach+0x0/0x60 [812b013c] ? bus_for_each_drv+0x5c/0x90 [812b0f55] ? device_attach+0x85/0x90 [812aff45] ? bus_probe_device+0x25/0x40 [812ae879] ? device_add+0x4d9/0x5a0 [8130ceda] ? usb_new_device+0x5a/0xd0 [8130e220] ? hub_thread+0x7e0/0x1040 [810564c6] ? dequeue_task_fair+0x46/0x190 [81074e70] ?
Re: dibusb-common.c FE_HAS_LOCK problem
On Mon, 23 Nov 2009, grafgrim...@gmx.de wrote: [..] - hello stupid I2C access Pid: 255, comm: khubd Tainted: P A 2.6.31.6 #1 Call Trace: [a0042292] ? dibusb_i2c_xfer+0xe2/0x130 [dvb_usb_dibusb_common] [81341dc1] ? i2c_transfer+0x91/0xe0 [a0059081] ? dib3000_write_reg+0x51/0x70 [dib3000mb] [a00855c9] ? dvb_pll_attach+0xa9/0x238 [dvb_pll] [..] Voila. This is the access with makes the dvb-pll-driver not create the tuner driver. This is (I forgot the correct name) read-without-write-i2caccess. It is bad handled by the dibusb-driver and it can destroy the eeprom on the USB side. Please try whether the attached patch fixes the whole situation for you. If so, please send back a line like this: Tested-by: Your name email thanks, -- Patrick http://www.kernellabs.com/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: dibusb-common.c FE_HAS_LOCK problem
On Mon, 23 Nov 2009, Patrick Boettcher wrote: On Mon, 23 Nov 2009, grafgrim...@gmx.de wrote: [..] - hello stupid I2C access Pid: 255, comm: khubd Tainted: P A 2.6.31.6 #1 Call Trace: [a0042292] ? dibusb_i2c_xfer+0xe2/0x130 [dvb_usb_dibusb_common] [81341dc1] ? i2c_transfer+0x91/0xe0 [a0059081] ? dib3000_write_reg+0x51/0x70 [dib3000mb] [a00855c9] ? dvb_pll_attach+0xa9/0x238 [dvb_pll] [..] Voila. This is the access with makes the dvb-pll-driver not create the tuner driver. This is (I forgot the correct name) read-without-write-i2caccess. It is bad handled by the dibusb-driver and it can destroy the eeprom on the USB side. Please try whether the attached patch fixes the whole situation for you. If so, please send back a line like this: Tested-by: Your name email The patch attached. -- Patrick Boettcher - Kernel Labs http://www.kernellabs.com/diff -r 52da57b5e800 linux/drivers/media/dvb/dvb-usb/dibusb-common.c --- a/linux/drivers/media/dvb/dvb-usb/dibusb-common.c Thu Nov 19 17:15:37 2009 +0100 +++ b/linux/drivers/media/dvb/dvb-usb/dibusb-common.c Mon Nov 23 13:20:10 2009 +0100 @@ -142,8 +142,13 @@ } else if ((msg[i].flags I2C_M_RD) == 0) { if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len,NULL,0) 0) break; - } else - break; + } else if (msg[i].addr != 0x50) { + /* 0x50 is the address of the eeprom - we need to protect it +* from dibusb's bad i2c implementation: reads without +* writing the offset before are forbidden */ + if (dibusb_i2c_msg(d, msg[i].addr, NULL, 0, msg[i].buf, msg[i].len) 0) + break; + } } mutex_unlock(d-i2c_mutex);
Re: dibusb-common.c FE_HAS_LOCK problem
Am Mon, 23 Nov 2009 14:19:10 +0100 (CET) schrieb Patrick Boettcher pboettc...@kernellabs.com: On Mon, 23 Nov 2009, Patrick Boettcher wrote: On Mon, 23 Nov 2009, grafgrim...@gmx.de wrote: [..] - hello stupid I2C access Pid: 255, comm: khubd Tainted: P A 2.6.31.6 #1 Call Trace: [a0042292] ? dibusb_i2c_xfer+0xe2/0x130 [dvb_usb_dibusb_common] [81341dc1] ? i2c_transfer+0x91/0xe0 [a0059081] ? dib3000_write_reg+0x51/0x70 [dib3000mb] [a00855c9] ? dvb_pll_attach+0xa9/0x238 [dvb_pll] [..] Voila. This is the access with makes the dvb-pll-driver not create the tuner driver. This is (I forgot the correct name) read-without-write-i2caccess. It is bad handled by the dibusb-driver and it can destroy the eeprom on the USB side. Please try whether the attached patch fixes the whole situation for you. If so, please send back a line like this: Tested-by: Your name email The patch attached. -- Patrick Boettcher - Kernel Labs http://www.kernellabs.com/ Hi Patrick, your patch [dibusb-common-fix text/PLAIN (1054 bytes)] works here. Tested-by: Mario Bachmann grafgrim...@gmx.de Mario -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: dibusb-common.c FE_HAS_LOCK problem
Am Thu, 19 Nov 2009 16:37:18 +0100 (CET) schrieb Patrick Boettcher pboettc...@kernellabs.com: On Sat, 7 Nov 2009, Mario Bachmann wrote: Hi there, I tried linux-2.6.31.5 and tuning still does not work: tuning to 73800 Hz video pid 0x0131, audio pid 0x0132 status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 04 | signal | snr | ber 001f | unc | With some changes for the following file it works again: /usr/src/linux/drivers/media/dvb/dvb-usb/dibusb-common.c diff -Naur dibusb-common.c-ORIGINAL dibusb-common.c --- dibusb-common.c-ORIGINAL2009-11-07 10:30:43.705344308 +0100 +++ dibusb-common.c 2009-11-07 10:33:49.969345253 +0100 @@ -133,17 +133,14 @@ for (i = 0; i num; i++) { /* write/read request */ - if (i+1 num (msg[i].flags I2C_M_RD) == 0 - (msg[i+1].flags I2C_M_RD)) { + if (i+1 num (msg[i+1].flags I2C_M_RD)) { if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len, msg[i+1].buf,msg[i+1].len) 0) break; i++; - } else if ((msg[i].flags I2C_M_RD) == 0) { + } else if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len,NULL,0) 0) break; - } else - break; } Doing it is reverting a fix which avoids that uncontrolled i2c-access from userspace is destroying the USB-eeprom. I understand that this is breaking the tuning for your board. I'm just not understanding why. If you have some time to debug this issue, could you please try the following: One of the devices for your board is trying to do an I2c access which is falling into the last 'else'-branch - can you add a printk to find out which one it is? The access must be wrongly constructed and must be fixed in that driver. thanks, PS: if you don't have time to do it, please tell so. -- Patrick http://www.kernellabs.com/ I do not understand exactly. printk what? Could you please give me a complete piece of code with the printk command? Would be great! My printk-tries ends up in an Oops. Thank you. Mario -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: dibusb-common.c FE_HAS_LOCK problem
On Sat, 7 Nov 2009, Mario Bachmann wrote: Hi there, I tried linux-2.6.31.5 and tuning still does not work: tuning to 73800 Hz video pid 0x0131, audio pid 0x0132 status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 04 | signal | snr | ber 001f | unc | With some changes for the following file it works again: /usr/src/linux/drivers/media/dvb/dvb-usb/dibusb-common.c diff -Naur dibusb-common.c-ORIGINAL dibusb-common.c --- dibusb-common.c-ORIGINAL2009-11-07 10:30:43.705344308 +0100 +++ dibusb-common.c 2009-11-07 10:33:49.969345253 +0100 @@ -133,17 +133,14 @@ for (i = 0; i num; i++) { /* write/read request */ - if (i+1 num (msg[i].flags I2C_M_RD) == 0 - (msg[i+1].flags I2C_M_RD)) { + if (i+1 num (msg[i+1].flags I2C_M_RD)) { if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len, msg[i+1].buf,msg[i+1].len) 0) break; i++; - } else if ((msg[i].flags I2C_M_RD) == 0) { + } else if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len,NULL,0) 0) break; - } else - break; } Doing it is reverting a fix which avoids that uncontrolled i2c-access from userspace is destroying the USB-eeprom. I understand that this is breaking the tuning for your board. I'm just not understanding why. If you have some time to debug this issue, could you please try the following: One of the devices for your board is trying to do an I2c access which is falling into the last 'else'-branch - can you add a printk to find out which one it is? The access must be wrongly constructed and must be fixed in that driver. thanks, PS: if you don't have time to do it, please tell so. -- Patrick http://www.kernellabs.com/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
dibusb-common.c FE_HAS_LOCK problem
Hi there, I tried linux-2.6.31.5 and tuning still does not work: tuning to 73800 Hz video pid 0x0131, audio pid 0x0132 status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 00 | signal | snr | ber 001f | unc | status 04 | signal | snr | ber 001f | unc | With some changes for the following file it works again: /usr/src/linux/drivers/media/dvb/dvb-usb/dibusb-common.c diff -Naur dibusb-common.c-ORIGINAL dibusb-common.c --- dibusb-common.c-ORIGINAL2009-11-07 10:30:43.705344308 +0100 +++ dibusb-common.c 2009-11-07 10:33:49.969345253 +0100 @@ -133,17 +133,14 @@ for (i = 0; i num; i++) { /* write/read request */ - if (i+1 num (msg[i].flags I2C_M_RD) == 0 - (msg[i+1].flags I2C_M_RD)) { + if (i+1 num (msg[i+1].flags I2C_M_RD)) { if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len, msg[i+1].buf,msg[i+1].len) 0) break; i++; - } else if ((msg[i].flags I2C_M_RD) == 0) { + } else if (dibusb_i2c_msg(d, msg[i].addr, msg[i].buf,msg[i].len,NULL,0) 0) break; - } else - break; } mutex_unlock(d-i2c_mutex); With this patch, tuning works again: tuning to 73800 Hz video pid 0x0131, audio pid 0x0132 status 00 | signal | snr | ber 001f | unc | status 1f | signal | snr 008d | ber 001f | unc | FE_HAS_LOCK status 1f | signal | snr 00a1 | ber 05a4 | unc 0043 | FE_HAS_LOCK status 1f | signal | snr 00a3 | ber 05a4 | unc 0043 | FE_HAS_LOCK status 1f | signal | snr 009d | ber | unc | FE_HAS_LOCK This is my DVB-T-Box (dmesg): usb 4-2: new full speed USB device using ohci_hcd and address 6 usb 4-2: configuration #1 chosen from 1 choice dvb-usb: found a 'TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device' in warm state. dvb-usb: will use the device's hardware PID filter (table count: 16). DVB: registering new adapter (TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device) DVB: registering adapter 0 frontend 0 (DiBcom 3000M-B DVB-T)... dibusb: This device has the Thomson Cable onboard. Which is default. input: IR-receiver inside an USB DVB receiver as /devices/pci:00/:00:04.0/usb4/4-2/input/input6 dvb-usb: schedule remote query interval to 150 msecs. dvb-usb: TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device successfully initialized and connected. Mario -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html