Hi all. I changed some code in the dvb_bt8xx.c to print out some debug messages (I am not familiar with kernel module programming so printing out error message and then checking them in my dmesg seems to be the quickest way to debug). The things I changed: I added some dprintk here and there to identify where dst_probe fails. And changed some dprintk statements inside write_dst function to print to dmesg instead of whatever they were writing to. int write_dst(struct dst_state *state, u8 *data, u8 len) { [..SNIP..] dprintk(verbose, DST_ERROR, 1, "writing ==> [ "); for (i = 0; i < len; i++) dprintk(verbose, DST_ERROR,int write_dst(struct dst_state *state, u8 *data, u8 len) 1, "%02x ", data[i]); dprintk(verbose, DST_ERROR, 1, "] <==\n"); for (cnt = 0; cnt < 2; cnt++) { if ((err = i2c_transfer(state->i2c, &msg, 1)) < 0) { dprintk(verbose, DST_ERROR, 1, "_write_dst error (err == %i, len == 0x%02x, b0 == 0x%02x)", err, len, data[0]); dst_error_recovery(state); continue; } else break; } if (cnt >= 2) { dprintk(verbose, DST_ERROR, 1, "RDC 8820 RESET"); dst_error_bailout(state); return -1; } [..SNIP..] } Here is what I got in my dmesg log: write_dst: writing ==> [ write_dst: 00 write_dst: 06 write_dst: 00 write_dst: 00 write_dst: 00 write_dst: 00 write_dst: 00 write_dst: fa write_dst: ] <== write_dst: _write_dst error (err == -5, len == 0x08, b0 == 0x00) write_dst: _write_dst error (err == -5, len == 0x08, b0 == 0x00) write_dst: RDC 8820 RESET dst_get_device_id: write_dst failed dst_probe: unknown device. Any idea of what is going wrong with my set up? Thanks Wei