It seems that there are many people coming to this page looking for one of the printer driver files. Through a comment at the bottom or an e-mail, let me know what exactly you are looking for. I will see if I can post some information on this page; this might save other searchers some time. Thanks, Farhan.

Printer temporarily sitting beside the server

The day before yesterday I finally took out a few hours to setup the HP Office 5150 on the server so everyone on the home network would be able to print to it. Surprisingly, I was able to print from the server in about fifteen minutes, most of which were spent reading up on all the different technologies: CUPS Samba printer sharing, HPLIP, etc. But the part that took next hour and a half was setting up the printer drivers on the server for Windows to auto-install when someone tries to access the printer.

Most of the delay was because Windows was not able to detect the printer correctly. Add to that the fact that HP packaged most of the files in MSIs and other compressed file formats. So I had to query the windows machine for the list of drivers and then copy those over to the print$ share on the server. This also involved understanding the RPC commands and the new ACLs on Samba. Unfortunately I wasted quite some time only to figure out that the root user on Samba isn’t really a root user. When I would add the printer driver using the adddriver rpc command as the root user it would keep saying result was WERR_UNKNOWN_PRINTER_DRIVER when the problem really was a permission problem and not a print detection. After I realized that it was a permission issue I was able to easily install the drivers.

To sum up the steps, here is what I had to do.

1. Get the drivers from windows

$ rpcclient -c “getdriver \“hp officejet 5500 series\” 3” visionary
Password:

[Windows NT x86]
Printer Driver Info 3: Version: [3] Driver Name: [hp officejet 5500 series] Architecture: [Windows NT x86] Driver Path: [\\VISIONARY\print$\W32X86\3\hpz2ku09.dll] Datafile: [\\VISIONARY\print$\W32X86\3\hpop5509.dat] Configfile: [\\VISIONARY\print$\W32X86\3\hpzpm309.dll] Helpfile: [\\VISIONARY\print$\W32X86\3\hpfmom09.hlp]

Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzimc09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzstw09.exe] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzslk09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzr3209.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzrm309.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzcon09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzcfg09.exe] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzeng09.exe] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzflt09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzime09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzrer09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzjui09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzpre09.exe] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzres09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzstc09.exe] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpztbi09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpztbu09.exe] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpztbx09.exe] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzlnt09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzsnt09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzcoi09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpzvip09.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpofax08.dll] Dependentfiles: [\\VISIONARY\print$\W32X86\3\hpof5509.dat] Monitorname: [hpzsnt09] Defaultdatatype: []

2. Setup the print$ and printers in Samba, and copy the drivers from Windows to a new print$.

Here is how I have the printers section setup. You can refer to the resources at the bottom for more detailed info about this section.

[printers]
   comment = All Printers
   path = /var/spool/samba
   browseable = no
   public = yes
   guest ok = yes
   writable = no
   printable = yes

The print$ is just another normal shared directory. Here is how I have it setup.

# Share for print drivers
[print$]
   path = /storage/important/printer_drivers
   comment = Printer driver download area.
   guest ok = yes
   browseable = no
   read only = yes
   write list = @admins

Once you have the share setup, then you have to copy the drivers from Windows to the server. In my case the drivers were all neatly put in the C:\Windows\System32\spool\drivers\w32×86\3. I opened the shared print$ from the Windows machine, created the W32X86 folder and copied the files to it.

3. Add the drivers on the server using the adddriver rpc command.

Once you have the drivers in the correct place from step 2 above, you just have to add the drivers through the rpc client so that all the appropriate Samba databases are correctly updated. Using the information from step 1, here is how to do that.

[aficionado@dreamer site]$ rpcclient -Uaficionado dreamer
Password:
rpcclient $> adddriver help
Usage: adddriver \ :::\ :::\ : \ [version]

rpcclient $> adddriver “Windows NT x86” “officejet_5510:hpz2ku09.dll:hpop5509.dat:hpzpm309.dll:hpfmom09.hlp:’:RAW:hpzimc09.dll,hpzstw09.exe,hpzslk09.dll,hpzr3209.dll,hpzrm309.dll,hpzcon09.dll,hpzcfg09.exe,hpzeng09.exe,hpzflt09.dll,hpzime09.dll,hpzrer09.dll,hpzjui09.dll,hpzpre09.exe,hpzres09.dll,hpzstc09.exe,hpztbi09.dll,hpztbu09.exe,hpztbx09.exe,hpzlnt09.dll,hpzsnt09.dll,hpzcoi09.dll,hpzvip09.dll,hpofax08.dll,hpof5509.dat”
Printer Driver officejet_5510 successfully installed.

Dialog box showing the installed drivers

4. Verify that the drivers installed correctly.

Once you have the drivers installed, you can verify this by running the following command from the Windows machine.

rundll32 printui.dll,PrintUIEntry /s /t2 /n\\dreamer

Resources

Here are some good links that you can use for troubleshooting and further reading.

Back to blog...