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 >