Hi Shivani, thank you for looking into the issue! > Could you please provide the printer model name you are using? HP LaserJet M1536dnf MFP > HPLIP does not need to install plugin in order to print. It only requires plugin in order to > scan. Unfortunately, it is not true for several devices, e.g.: hp laserjet cp 1025nw hp laserjet professional p 1102w Their PDL is zjstream, which is supported only by binary blob downloaded via hp-plugin. > Previously, few entities in models.dat had remained as plugin=1 , which has been removed in > 3.20.6 release. Actually, 'plugin=1' doesn't mean the plugin is needed for printing, but it means whether it is needed or not. The reason why the plugin is needed is covered by 'plugin-reason' (e.g. plugin-reason=64 means the plugin is needed for scanning). So when all 'plugin=1' entries were removed, all those devices think they don't need a plugin (for printing, or scanning, or both) and fail to print/scan anything if the plugin wasn't installed previously (common use case when installing a printer on freshly installed OS). If I look into current upstream models.dat, it seems only scanjet models are marked as they need plugin. Multi-function devices are not taken into account. Ad previous 'plugin=0/1' settings - I'm not sure how many HP devices you have at hand for testing, but at least when I look into scan/sane/hpaio.c: if ((ma.scantype == HPMUD_SCANTYPE_MARVELL) || (ma.scantype == HPMUD_SCANTYPE_MARVELL2)) return marvell_open(devicename, pHandle); if (ma.scantype == HPMUD_SCANTYPE_SOAP) return soap_open(devicename, pHandle); if (ma.scantype == HPMUD_SCANTYPE_SOAPHT) return soapht_open(devicename, pHandle); if (ma.scantype == HPMUD_SCANTYPE_LEDM) return ledm_open(devicename, pHandle); if ((ma.scantype == HPMUD_SCANTYPE_SCL) || (ma.scantype == HPMUD_SCANTYPE_SCL_DUPLEX) ||(ma.scantype == HPMUD_SCANTYPE_PML)) return sclpml_open(devicename, pHandle); if (ma.scantype == HPMUD_SCANTYPE_ESCL) return escl_open(devicename, pHandle); if (ma.scantype == HPMUD_SCANTYPE_ORBLITE) return orblite_open(devicename, pHandle); else return SANE_STATUS_UNSUPPORTED; all device types except for SCL and PML call bb_load() function, which loads symbols from binary plugins downloaded via hp-plugin. To sum it up, I would say most devices which are able to scan and didn't have 'plugin=1' and 'plugin-reason=64' had bad entries in models.dat and supposed to require a binary plugin for scanning. > Also plugin has nothing to do with python version. It will work on python3 as well. I wasn't the one who thought it is a python issue. > Please install plugin via , > $sh hplip-3.20.6.plugin.run This will certainly help, but you are missing the point. Before hplip-3.20.6, hp-setup (with models.dat help) was able to install the plugin automatically, when it recognized that found device needs it. models.dat is used as a database about device features, including plugin. After hplip-3.20.6, models.dat lost info for several models regarding plugin, making them unusable unless you manually install the plugin. IMO making a device work, which your suggestion does, is quite different from 'making a device work in user-friendly way', which hp-setup offered (for those devices, which plugin/plugin-reason were set correctly) before version 3.20.6 and which should be preferred for a long-term solution.