memset(&si2157_config, 0, sizeof(si2157_config));
        si2157_config.fe = adap->fe[0];
+
+       /*
+        * HACK: The Logilink VG0022A has a bug: when the si2157
+        * firmware that came with the device is replaced by a new
+        * one, the I2C transfers to the tuner will return just 0xff.
+        *
+        * Probably, the vendor firmware has some patch specifically
+        * designed for this device. So, we can't replace by the
+        * generic firmware. The right solution would be to extract
+        * the si2157 firmware from the original driver and ask the
+        * driver to load the specifically designed firmware, but,
+        * while we don't have that, the next best solution is to just
+        * keep the original firmware at the device.
+        */
+       if (le16_to_cpu(d->udev->descriptor.idVendor) == USB_VID_DEXATEK &&
+           le16_to_cpu(d->udev->descriptor.idProduct) == 0x0100)
+               si2157_config.dont_load_firmware = true;
+
        si2157_config.if_port = it930x_addresses_table[state->it930x_addresses].tuner_if_port;
        ret = af9035_add_i2c_dev(d, "si2157",
                                 it930x_addresses_table[state->it930x_addresses].tuner_i2c_addr,
                &it930x_props, "ITE 9303 Generic", NULL) },
        { DVB_USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_TD310,
                &it930x_props, "AVerMedia TD310 DVB-T2", NULL) },
+       { DVB_USB_DEVICE(USB_VID_DEXATEK, 0x0100,
+               &it930x_props, "Logilink VG0022A", NULL) },
        { }
 };
 MODULE_DEVICE_TABLE(usb, af9035_id_table);