David Lodeiro
2003-Aug-13 10:34 UTC
[Samba] Printing to FreeBSD server from XP using samba
A couple of days ago I set up my printer on my FreeBSD server and set it up so I could print from my FreeBSD client. This all works very well, printing from botht the server and the FBSD client. However, I also have samba set up for file serving with an XP box. I have been trying for quite some time now to set samba up to enable me to print from the XP client. My situation at the moment is that the XP client can detect the printer in explorer, I can set up a printer using a wizard to print to it without any errors, however when I go to print a test page, nothing happens. No errors, no printout, and the wierdest part is that nothing shows up in either the que on my xp box or on the lpq on the server. I started the smbd and nmbd demons with debugger set to 10 to see if I could find something out Firstly the relevant part of my printcap file Canoni850|bjc800:\ :lp=/dev/lpt0:\ :sd=/var/spool/lpd/Canoni850:\ :lf=/var/spool/lpd/Canoni850/log:\ :mx#0:\ :sh: To handle all the raw printing ( ie. from windows ) And the relevent art of my smb.con [printers] comment = Printers path = /var/spool/lpd browseable = no printable = yes public = yes # create mode = 4777 [Canoni850] comment = Canoni850 path = /var/spool/lpd/Canoni850 browseable = yes printable = yes # printer driver = Canon i850 [lp] comment = FreeBSD printer browseable = no printable = yes Here is what I got in log.smbd with log level at 10 [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) socket option SO_SNDLOWAT = 2048 [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) socket option SO_RCVLOWAT = 1 [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) socket option SO_SNDTIMEO = 0 [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) socket option SO_RCVTIMEO = 0 [2003/08/12 23:40:55, 10] printing/nt_printing.c:update_c_setprinter(368) update_c_setprinter: c_setprinter = 0 [2003/08/12 23:40:55, 6] param/loadparm.c:lp_file_list_changed(2302) lp_file_list_changed() file /usr/local/etc/smb.conf -> /usr/local/etc/smb.conf last mod_time: Tue Au [2003/08/12 23:40:55, 3] smbd/oplock.c:init_oplocks(1214) open_oplock_ipc: opening loopback UDP socket. [2003/08/12 23:40:55, 3] lib/util_sock.c:open_socket_in(813) bind succeeded on port 0 [2003/08/12 23:40:55, 3] smbd/oplock.c:init_oplocks(1245) open_oplock ipc: pid = 9747, global_oplock_port = 49804 [2003/08/12 23:40:55, 4] lib/time.c:get_serverzone(114) Serverzone is -36000 [2003/08/12 23:40:55, 10] lib/util_sock.c:read_smb_length_return_keepalive(559) got smb length of 68 [2003/08/12 23:40:55, 10] lib/access.c:check_access(304) check_access: allow = , deny [2003/08/12 23:40:55, 6] smbd/process.c:process_smb(845) got message type 0x81 of len 0x44 [2003/08/12 23:40:55, 3] smbd/process.c:process_smb(846) Transaction 0 of length 72 [2003/08/12 23:40:55, 2] smbd/reply.c:reply_special(92) netbios connect: name1=DAVESSERVER name2=JOSE [2003/08/12 23:40:55, 2] smbd/reply.c:reply_special(111) netbios connect: local=davesserver remote=jose Jose is the name of the XP client, davesserver is the name of the FreeBSD box. Sorry about the long post Any help is appreciated Thankyou David
I don't know anything about BSD and you don't say which printing system you use (cups, lprng, whatever), but: Printing with samba is simple. Your client transfers the job to the print server spool directory. Then, the print command on the sever is invoked to print that file. Then, the file is removed. SO: Have you verified that the print job has been transferred to your print server? I do this by changing my printing command in smb.conf to something like print command = echo %s was transferred > /tmp/junk. That way the job is never printed and it just stays in your spool directory with that funny long smb name. (Using cups, you can't change the print commands in smb.conf, they tell me.) Then, if the job got transferred, try to print the job using the print command that your system is supposed to use for this file. This file will have been filtered by the XP client before being sent, so, you have to send it to a raw queue, likely. Or, maybe your client is sending postscript formatted jobs. You don't say in your post. If you can print a file like this, then you just have to set up a queue with the appropriate printing commands to get it done. I leave nothing to chance, and specify all the printing commands in my print queue, like so: [lp] comment = Raw Printer for Z53 # max print jobs = 1 path = /tmp create mask = 0700 guest ok = yes hosts allow = 192.168. printable = Yes printing = lprng # print command = echo "Tried to print %s" > /SPOOL/junk.%s # print command = echo %J %p %s >> /tmp/junkJ; /usr/bin/lpr -Plp -J'%J' %s; rm %s # print command = echo %J %p %s >> /tmp/junkJ; j=`echo %J | sed "s/^.*-//"`; /usr/bin/lpr -Plp -J'$j' %s; rm %s # print command = echo %J %p %s >> /tmp/junkJ; /usr/bin/lpr -Plp -J'%J' %s; rm %s print command = echo %J %p %s >> /tmp/junkJ;\ a="`echo '%J' | sed "s/^.*- //"`" ;\ echo This is truncated $a >> /tmp/junkJ;\ /usr/bin/lpr -Plp -J"$a" %s;\ rm %s lpq command = /usr/bin/lpq -Plp lprm command = /usr/bin/lprm -Plp %j lppause command = /usr/sbin/lpc hold -Plp %j lpresume command = /usr/sbin/lpc release -Plp %j printer name = lp # printer driver = Lexmark Z53 Series ColorFine # printer driver location = \\HAMMER2\AllFiles\usr\local\samba\printer share modes = No My printcap file for lp is as follows: lp|LP|z53-outfiles:\ :sd=/var/spool/lpd/lp:\ :mx#0:\ :lp=/dev/lp0:\ :sh:rw: There is also another complication. The testpage that is generated by the printer setup program may not be sent through the usual filtering mechanism as a regular print job. Thus, if you are sending postscript formatted files to your printserver with a printer that can handle postscript files, this same queue may not be able to handle the raw format in which the test page is sent. Note: All this information is what I have gleaned by much trial and error. I don't know how much will apply to your setup. One more thing, you have a [printers] share and then a share written for your particular printer. You might consider getting rid of the [printers] share. Then, add a few things to the [lp] share, like a path, printable, etc. Joel On Wed, Aug 13, 2003 at 08:34:05PM +1000, David Lodeiro wrote:> A couple of days ago I set up my printer on my FreeBSD server and set it > up so I could print from my FreeBSD client. This all works very well, > printing from botht the server and the FBSD client. However, I also have > samba set up for file serving with an XP box. I have been trying for > quite some time now to set samba up to enable me to print from the XP > client. My situation at the moment is that the XP client can detect the > printer in explorer, I can set up a printer using a wizard to print to it > without any errors, however when I go to print a test page, nothing happens. > No errors, no printout, and the wierdest part is that nothing shows up in > either the que on my xp box or on the lpq on the server. > > I started the smbd and nmbd demons with debugger set to 10 to see if I > could find something out > > Firstly the relevant part of my printcap file > > Canoni850|bjc800:\ > :lp=/dev/lpt0:\ > :sd=/var/spool/lpd/Canoni850:\ > :lf=/var/spool/lpd/Canoni850/log:\ > :mx#0:\ > :sh: > > > To handle all the raw printing ( ie. from windows ) > > And the relevent art of my smb.con > [printers] > comment = Printers > path = /var/spool/lpd > browseable = no > printable = yes > public = yes > # create mode = 4777 > > [Canoni850] > comment = Canoni850 > path = /var/spool/lpd/Canoni850 > browseable = yes > printable = yes > # printer driver = Canon i850 > > [lp] > comment = FreeBSD printer > browseable = no > printable = yes > > > Here is what I got in log.smbd with log level at 10 > > [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) > socket option SO_SNDLOWAT = 2048 > [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) > socket option SO_RCVLOWAT = 1 > [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) > socket option SO_SNDTIMEO = 0 > [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) > socket option SO_RCVTIMEO = 0 > [2003/08/12 23:40:55, 10] printing/nt_printing.c:update_c_setprinter(368) > update_c_setprinter: c_setprinter = 0 > [2003/08/12 23:40:55, 6] param/loadparm.c:lp_file_list_changed(2302) > lp_file_list_changed() > file /usr/local/etc/smb.conf -> /usr/local/etc/smb.conf last mod_time: Tue > Au > > [2003/08/12 23:40:55, 3] smbd/oplock.c:init_oplocks(1214) > open_oplock_ipc: opening loopback UDP socket. > [2003/08/12 23:40:55, 3] lib/util_sock.c:open_socket_in(813) > bind succeeded on port 0 > [2003/08/12 23:40:55, 3] smbd/oplock.c:init_oplocks(1245) > open_oplock ipc: pid = 9747, global_oplock_port = 49804 > [2003/08/12 23:40:55, 4] lib/time.c:get_serverzone(114) > Serverzone is -36000 > [2003/08/12 23:40:55, 10] > lib/util_sock.c:read_smb_length_return_keepalive(559) > got smb length of 68 > [2003/08/12 23:40:55, 10] lib/access.c:check_access(304) > check_access: allow = , deny > [2003/08/12 23:40:55, 6] smbd/process.c:process_smb(845) > got message type 0x81 of len 0x44 > [2003/08/12 23:40:55, 3] smbd/process.c:process_smb(846) > Transaction 0 of length 72 > [2003/08/12 23:40:55, 2] smbd/reply.c:reply_special(92) > netbios connect: name1=DAVESSERVER name2=JOSE > [2003/08/12 23:40:55, 2] smbd/reply.c:reply_special(111) > netbios connect: local=davesserver remote=jose > > Jose is the name of the XP client, davesserver is the name of the FreeBSD box. > Sorry about the long post > > Any help is appreciated > > Thankyou > > David > > -- > To unsubscribe from this list go to the following URL and read the > instructions: http://lists.samba.org/mailman/listinfo/samba
I haved been using this parameter (rw) since I began using linux. I forget why I use it. This link is the lprng howto. http://www.lprng.com/LPRng-HOWTO/LPRng-HOWTO.html#AEN3105 If you seach for "rw " (don't use the quotes in your search string) you will see this is used only for serial printers. Although, I don't see why other printers wouldn't need to be rw. Oh well. It works. Good. Joel On Thu, Aug 14, 2003 at 08:29:50PM +1000, David Lodeiro wrote:> On Wed, 13 Aug 2003 10:30 pm, you wrote: > Firstly, I can not thankyou enough for your help as I have spent the last 6 or > so days trying to figure this out. I'm using lprng. The thing I was missing > was in my printcap file, and it wasnt till I read your email that I saw what > was the problem. > I had > :sh: > > you had > > :sh:rw: > > And that was it. > > Im assuming thats read write? correct me if Im wrong. > I didnt find that anywhere in any documentations, howtos, that I had read. > > Now it works perfectly. Thankyou again > > David > > I don't know anything about BSD and you don't say which printing system you > > use (cups, lprng, whatever), but: > > Printing with samba is simple. Your client transfers the job to the print > > server spool directory. Then, the print command on the sever is invoked to > > print that file. Then, the file is removed. SO: > > Have you verified that the print job has been transferred to your print > > server? I do this by changing my printing command in smb.conf to something > > like print command = echo %s was transferred > /tmp/junk. That way the job > > is never printed and it just stays in your spool directory with that funny > > long smb name. > > (Using cups, you can't change the print commands in smb.conf, they tell > > me.) Then, if the job got transferred, try to print the job using the print > > command that your system is supposed to use for this file. This file will > > have been filtered by the XP client before being sent, so, you have to send > > it to a raw queue, likely. Or, maybe your client is sending postscript > > formatted jobs. You don't say in your post. > > If you can print a file like this, then you just have to set up a queue > > with the appropriate printing commands to get it done. I leave nothing to > > chance, and specify all the printing commands in my print queue, like so: > > > > [lp] > > comment = Raw Printer for Z53 > > # max print jobs = 1 > > path = /tmp > > create mask = 0700 > > guest ok = yes > > hosts allow = 192.168. > > printable = Yes > > printing = lprng > > # print command = echo "Tried to print %s" > /SPOOL/junk.%s > > # print command = echo %J %p %s >> /tmp/junkJ; /usr/bin/lpr -Plp > > -J'%J' %s; rm %s # print command = echo %J %p %s >> /tmp/junkJ; > > j=`echo %J | sed "s/^.*-//"`; /usr/bin/lpr -Plp -J'$j' %s; rm %s # > > print command = echo %J %p %s >> /tmp/junkJ; /usr/bin/lpr -Plp -J'%J' %s; > > rm %s print command = echo %J %p %s >> /tmp/junkJ;\ > > a="`echo '%J' | sed "s/^.*- //"`" ;\ > > echo This is truncated $a >> /tmp/junkJ;\ > > /usr/bin/lpr -Plp -J"$a" %s;\ > > rm %s > > lpq command = /usr/bin/lpq -Plp > > lprm command = /usr/bin/lprm -Plp %j > > lppause command = /usr/sbin/lpc hold -Plp %j > > lpresume command = /usr/sbin/lpc release -Plp %j > > printer name = lp > > # printer driver = Lexmark Z53 Series ColorFine > > # printer driver location > > \\HAMMER2\AllFiles\usr\local\samba\printer share modes = No > > > > My printcap file for lp is as follows: > > lp|LP|z53-outfiles:\ > > > > :sd=/var/spool/lpd/lp:\ > > :mx#0:\ > > :lp=/dev/lp0:\ > > :sh:rw: > > > > There is also another complication. The testpage that is generated by > > the printer setup program may not be sent through the usual filtering > > mechanism as a regular print job. Thus, if you are sending postscript > > formatted files to your printserver with a printer that can handle > > postscript files, this same queue may not be able to handle the raw format > > in which the test page is sent. > > > > Note: All this information is what I have gleaned by much trial and error. > > I don't know how much will apply to your setup. > > > > One more thing, you have a [printers] share and then a share written for > > your particular printer. You might consider getting rid of the [printers] > > share. Then, add a few things to the [lp] share, like a path, printable, > > etc. > > > > Joel > > > > On Wed, Aug 13, 2003 at 08:34:05PM +1000, David Lodeiro wrote: > > > A couple of days ago I set up my printer on my FreeBSD server and set it > > > up so I could print from my FreeBSD client. This all works very well, > > > printing from botht the server and the FBSD client. However, I also have > > > samba set up for file serving with an XP box. I have been trying for > > > quite some time now to set samba up to enable me to print from the XP > > > client. My situation at the moment is that the XP client can detect the > > > printer in explorer, I can set up a printer using a wizard to print to it > > > without any errors, however when I go to print a test page, nothing > > > happens. No errors, no printout, and the wierdest part is that nothing > > > shows up in either the que on my xp box or on the lpq on the server. > > > > > > I started the smbd and nmbd demons with debugger set to 10 to see if I > > > could find something out > > > > > > Firstly the relevant part of my printcap file > > > > > > Canoni850|bjc800:\ > > > > > > :lp=/dev/lpt0:\ > > > :sd=/var/spool/lpd/Canoni850:\ > > > :lf=/var/spool/lpd/Canoni850/log:\ > > > :mx#0:\ > > > :sh: > > > > > > To handle all the raw printing ( ie. from windows ) > > > > > > And the relevent art of my smb.con > > > [printers] > > > comment = Printers > > > path = /var/spool/lpd > > > browseable = no > > > printable = yes > > > public = yes > > > # create mode = 4777 > > > > > > [Canoni850] > > > comment = Canoni850 > > > path = /var/spool/lpd/Canoni850 > > > browseable = yes > > > printable = yes > > > # printer driver = Canon i850 > > > > > > [lp] > > > comment = FreeBSD printer > > > browseable = no > > > printable = yes > > > > > > > > > Here is what I got in log.smbd with log level at 10 > > > > > > [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) > > > socket option SO_SNDLOWAT = 2048 > > > [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) > > > socket option SO_RCVLOWAT = 1 > > > [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) > > > socket option SO_SNDTIMEO = 0 > > > [2003/08/12 23:40:55, 5] lib/util_sock.c:print_socket_options(111) > > > socket option SO_RCVTIMEO = 0 > > > [2003/08/12 23:40:55, 10] printing/nt_printing.c:update_c_setprinter(368) > > > update_c_setprinter: c_setprinter = 0 > > > [2003/08/12 23:40:55, 6] param/loadparm.c:lp_file_list_changed(2302) > > > lp_file_list_changed() > > > file /usr/local/etc/smb.conf -> /usr/local/etc/smb.conf last mod_time: > > > Tue Au > > > > > > [2003/08/12 23:40:55, 3] smbd/oplock.c:init_oplocks(1214) > > > open_oplock_ipc: opening loopback UDP socket. > > > [2003/08/12 23:40:55, 3] lib/util_sock.c:open_socket_in(813) > > > bind succeeded on port 0 > > > [2003/08/12 23:40:55, 3] smbd/oplock.c:init_oplocks(1245) > > > open_oplock ipc: pid = 9747, global_oplock_port = 49804 > > > [2003/08/12 23:40:55, 4] lib/time.c:get_serverzone(114) > > > Serverzone is -36000 > > > [2003/08/12 23:40:55, 10] > > > lib/util_sock.c:read_smb_length_return_keepalive(559) > > > got smb length of 68 > > > [2003/08/12 23:40:55, 10] lib/access.c:check_access(304) > > > check_access: allow = , deny > > > [2003/08/12 23:40:55, 6] smbd/process.c:process_smb(845) > > > got message type 0x81 of len 0x44 > > > [2003/08/12 23:40:55, 3] smbd/process.c:process_smb(846) > > > Transaction 0 of length 72 > > > [2003/08/12 23:40:55, 2] smbd/reply.c:reply_special(92) > > > netbios connect: name1=DAVESSERVER name2=JOSE > > > [2003/08/12 23:40:55, 2] smbd/reply.c:reply_special(111) > > > netbios connect: local=davesserver remote=jose > > > > > > Jose is the name of the XP client, davesserver is the name of the FreeBSD > > > box. Sorry about the long post > > > > > > Any help is appreciated > > > > > > Thankyou > > > > > > David > > > > > > -- > > > To unsubscribe from this list go to the following URL and read the > > > instructions: http://lists.samba.org/mailman/listinfo/samba >