0X8009301A

Quick fix for printer error 0x8009301A OSS OID DLL not linked

Hardware – Printers Intermediate 👁 1 views 📅 May 27, 2026

Your printer driver or Windows update broke the OSS ASN.1 OID mapping. Re-register the DLL or reinstall the printer driver to fix it.

If you're staring at error 0x8009301AOSS_OID_DLL_NOT_LINKED — when trying to print, you're not alone. It's maddening when a printer that worked yesterday suddenly refuses. Let's fix it.

The fix that works for most people

Run these two commands as Administrator. Open Command Prompt (right-click Start > Command Prompt (Admin) or Terminal (Admin)):

regsvr32 /u ossrs.dll
regsvr32 ossrs.dll

First command unregisters the OSS ASN.1 runtime DLL. Second re-registers it. You'll see a success message for each if it works.

After that, restart the Print Spooler service:

net stop spooler
net start spooler

Try printing again. Nine times out of ten, that's all you need.

Why this error happens

The error literally means your printer driver can't link to the OSS ASN.1 Object Identifier (OID) DLL — in this case, ossrs.dll. ASN.1 is the encoding standard that Windows and many network printers use to communicate printer capabilities and settings: things like supported paper sizes, duplex support, color modes. Windows Update sometimes replaces or corrupts this DLL, or a printer driver upgrade doesn't properly register it.

What's actually happening here is the registration entries in the Windows Registry (under HKEY_CLASSES_ROOT\CLSID or HKEY_LOCAL_MACHINE\SOFTWARE\Classes) point to a DLL path that no longer matches, or the DLL itself is present but not properly linked. Re-registering it rewrites those Registry entries correctly.

The reason step 3 (restarting spooler) works is because the print spooler loads the registered DLLs at startup. If it loaded the old registration into memory, you need to flush that cached state.

Less common variations of the same issue

Corrupted system files

If re-registering the DLL fails with an error like "The module 'ossrs.dll' failed to load", you might have a corrupted system file. Run:

sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth

Then reboot and try the regsvr32 steps again.

Printer driver needs a full reinstall

Some printer manufacturers — looking at you, HP and Canon — bundle their own OID mapper. If re-registering ossrs.dll doesn't help, remove the printer completely:

  1. Go to Settings > Bluetooth & devices > Printers & scanners
  2. Click your printer, then Remove device
  3. Download the latest driver from the manufacturer's site — not Windows Update's version, which can be stale
  4. Install with the printer disconnected, then connect when prompted

This forces the installer to register both the driver's custom OID DLL and the system ossrs.dll. I've seen this fix cases where a Windows 11 22H2 update broke Canon i-SENSYS drivers.

Registry corruption specific to OID mapping

Rare, but I've hit it once on a Dell Latitude running Windows 10 21H2. The Registry key for the OID mapper was missing entirely. You can check it:

reg query "HKLM\SOFTWARE\Microsoft\OID"

If nothing returns or you get errors, you can create the key manually or restore from a recent backup. I'd skip this unless you're comfortable with Registry editing — easier to just reinstall the driver, which recreates these keys.

How to prevent this from happening again

  • Pause feature updates for 30 days after a new Windows version drops. Microsoft occasionally ships buggy DLLs. Waiting a month gives them time to patch it. Go to Settings > Windows Update > Pause updates for 4 weeks (or 2 weeks on Home edition).
  • Don't install printer drivers from Windows Update. Go to the manufacturer's site. The OEM drivers are tested more thoroughly. On HP, avoid the "HP Smart" app — it's bloat and sometimes conflicts with the base driver.
  • Set a System Restore point before any major driver update. That way if 0x8009301A shows up, you can roll back in 2 minutes instead of troubleshooting.
  • If you use a network printer on a work domain, check with your IT team before updating drivers. Domain-joined machines often push drivers via Group Policy, and a broken policy can orphan OID registrations.

That's it. You're not going to see this error often — I've dealt with it maybe a dozen times in 15 years. But when you do, you now know it's almost always a registration problem, not a hardware fault.

Was this solution helpful?