Hi again, i made a small change in mt352.c in the function mt352_attach: struct dvb_frontend* mt352_attach(const struct mt352_config* config, struct i2c_adapter* i2c) { struct mt352_state* state = NULL; /* allocate memory for the internal state */ state = kmalloc(sizeof(struct mt352_state), GFP_KERNEL); if (state == NULL) goto error; memset(state,0,sizeof(*state)); /* setup the state */ state->i2c = i2c; memcpy(&state->config,config,sizeof(struct mt352_config)); memcpy(&state->ops, &mt352_ops, sizeof(struct dvb_frontend_ops)); /**/ /* hard reset */ state->frontend.ops = &state->ops; state->frontend.demodulator_priv = state; if (&state->frontend != NULL) { static u8 mt352_reset_attach [] = { RESET, 0xC0 }; mt352_write(&state->frontend, mt352_reset_attach, sizeof(mt352_reset_attach)); } else { printk("frontend is NULL\n"); } /**/ /* check if the demod is there */ if (mt352_read_register(state, CHIP_ID) != ID_MT352) goto error; /* create dvb_frontend */ state->frontend.ops = &state->ops; state->frontend.demodulator_priv = state; return &state->frontend; error: kfree(state); return NULL; } The change is within the /**/. I tried to do a hard-reset with this additions but it only lead to the following error: mt352_write() to reg 50 failed (err = -5)! mt352_read_register: readreg error (reg=127, ret==-5) dvb-bt8xx: A frontend driver was not found for device 109e/0878 subsystem 1461/0771 After digging into mt352_write and mt352_single_write i can see that it uses i2c_transfer for writing the proper values into the regs. Maybe there is something wrong with i2c_transfer? Has anybody an idea how i could dig deeper in this issue or how to debug it more properly? Thanks for any hint.