}
 
        state->rc_repeat = buf[6];
+       state->rc_failed = false;
 
 error:
-       if (ret)
+       if (ret) {
                err("%s: failed:%d", __func__, ret);
 
+               /* allow random errors as dvb-usb will stop polling on error */
+               if (!state->rc_failed)
+                       ret = 0;
+
+               state->rc_failed = true;
+       }
+
        return ret;
 }
 
                return 0;
 
        /* try to load remote based module param */
-       rc->map_name = af9015_rc_setup_match(dvb_usb_af9015_remote,
-                       af9015_rc_setup_modparam);
+       if (!rc->map_name)
+               rc->map_name = af9015_rc_setup_match(dvb_usb_af9015_remote,
+                               af9015_rc_setup_modparam);
 
        /* try to load remote based eeprom hash */
        if (!rc->map_name)