}
        bix->last_full_charg_capacity = ret;
 
-       /* get serial number */
+       /*
+        * Get serial number, on some devices (with unofficial replacement
+        * battery?) reading any of the serial number range addresses gets
+        * nacked in this case just leave the serial number empty.
+        */
        ret = i2c_smbus_read_i2c_block_data(client, MSHW0011_BAT0_REG_SERIAL_NO,
                                            sizeof(buf), buf);
-       if (ret != sizeof(buf)) {
+       if (ret == -EREMOTEIO) {
+               /* no serial number available */
+       } else if (ret != sizeof(buf)) {
                dev_err(&client->dev, "Error reading serial no: %d\n", ret);
                return ret;
+       } else {
+               snprintf(bix->serial, ARRAY_SIZE(bix->serial), "%3pE%6pE", buf + 7, buf);
        }
-       snprintf(bix->serial, ARRAY_SIZE(bix->serial), "%3pE%6pE", buf + 7, buf);
 
        /* get cycle count */
        ret = i2c_smbus_read_word_data(client, MSHW0011_BAT0_REG_CYCLE_CNT);