struct drxk_config config;
 
        memset(&config, 0, sizeof(config));
+       config.microcode_name = "drxk_a3.mc";
        config.adr = 0x29 + (input->nr & 1);
 
        fe = input->fe = dvb_attach(drxk_attach, &config, i2c);
 
        .adr = 0x29,
        .single_master = 1,
        .no_i2c_bridge = 0,
-       .microcode_name = "dvb-usb-terratec-h5-drxk.fw",
+       .max_size = 64,
+//     .microcode_name = "dvb-usb-terratec-h5-drxk.fw",
 };
 
 static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
        debug_dump(b, blen, deb_xfer);
 
        if (blen > 64) {
-               err("az6007: doesn't suport I2C transactions longer than 64 bytes\n");
+               err("az6007: tried to write %d bytes, but I2C max size is 64 bytes\n",
+                   blen);
                return -EOPNOTSUPP;
        }
 
        adap->fe2->tuner_priv = adap->fe->tuner_priv;
        memcpy(&adap->fe2->ops.tuner_ops,
               &adap->fe->ops.tuner_ops, sizeof(adap->fe->ops.tuner_ops));
+
        return 0;
 
 out_free:
        .num_adapters = 1,
        .adapter = {
                {
-                       /* .caps             = DVB_USB_ADAP_RECEIVES_204_BYTE_TS, */
                        .streaming_ctrl   = az6007_streaming_ctrl,
                        .frontend_attach  = az6007_frontend_attach,
 
 
                if (status < 0)
                        goto error;
 
-               if (!state->microcode_name)
-                       load_microcode(state, "drxk_a3.mc");
-               else
+               if (state->microcode_name)
                        load_microcode(state, state->microcode_name);
 
                /* disable token-ring bus through OFDM block for possible ucode upload */
 
        struct drxk_config config;
 
        memset(&config, 0, sizeof(config));
+       config.microcode_name = "drxk_a3.mc";
        config.adr = 0x29 + (chan->number ^ 2);
 
        chan->fe = dvb_attach(drxk_attach, &config, i2c);