创建博客 登录  
 关注
   显示下一条  |  关闭

高明的博客

祈祷!父亲已逝,孝敬母亲,炒股,赚钱,买房,结婚

 
 
 

日志

 
 

DD-WRT共享打印机(打印服务器)的完整教程  

2008-08-13 16:28:31|  分类: IT备忘 |  标签: |字号 订阅

采用支持USB最新版dd-v24-9856_VINT_mini_usb

http://www.right.com.cn/forum/viewthread.php?tid=17207&extra=page%3D1

刚刚看了坛中关于打印机的文章。照做后仍无法启用我的打印机。于是我参照了官方Wiki http://www.dd-wrt.com/wiki/index.php/Printer_Sharing,重新配置了一遍,一切正常。
发觉坛中正巧没有关于支持USB设备版本的dd的教程。现将Wiki上面Mbjarland的教程做出翻译并加入自己的心得。
(不带USB支持的dd只需要拷贝相应的驱动文件并在网页上修改启动脚本,可以参照http://www.right.com.cn/forum/viewthread.php?tid=12148




新的v24稳定版 (注:不是RC版本) 在网页控制面板中的服务界面包含了对打印机共享和USB的支持,我刚刚使得我的打印机成功运行,所以我觉得我应当分享我的经验或许可以节省大家一些时间。

已经测试成功:
1. HP LaserJet 3020 + DD-WRT v24 Stable + Asus WL-500g Premium (Mbjarland的)
2. HP DeskJet 3325 + DD-WRT v24 (07/03/08) mini - build 9856M TNG Eko(目前最新版) + Belkin 7231-4p (我的)

具体方法如下

1. 在 管理界面 开启 JFFS2支持

2. 在 服务界面 开启 SSH

3. 在 服务界面 开启
"Core USB Support",
"USB 1.1 Support (UHCI)",
"USB 1.1 Support (OHCI)",
"USB 2.0 Support"(7231-4p无需开启此项),
"USB Printer Support",
(如果你和我一样用USB HUB外接了EXT2的U盘请额外开启"USB Storage Support" 和 "ext2 / ext3 File System Support"DD-WRT共享打印机(打印服务器)的完整教程 - birch - 高明的博客screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="Click here to open new window&10;CTRL+Mouse wheel to zoom in/out" src="http://cospo.kilu.de/blog/wp-content/uploads/2008/07/USB.JPG" width=716 onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0 zmxid="zoomXimageId6" resized="true">).
注意:尽管打印机支持USB 2.0,但Asus WL-500g在选择USB 2.0支持的同时也必须选择USB 1.1的支持,否则路由器无法识别打印机

4. 连接打印机至路由器

5. 重新启动路由器

6. Telnel上路由器后,确认打印机是否被识别:
输入命令

ls -la /dev/usb/

得到:

QUOTE:
drwxr-xr-x    1 root     root            0 Jan  1  1970 .
drwxr-xr-x    1 root     root            0 Jan  1  1970 ..
crw-rw----    1 root     root     180,   0 Jan  1  1970 lp0

如果在/dev/usb下没有任何文件,你可能需要为你的打印机安装其他的一些驱动

7. 安装p910nd。
步骤:Telnet上路由器,执行语句:先

ipkg update

,然后

ipkg install p910nd

8. 确认以下文件的内容(可以用vi命令,用法"vi 文件名",需要修改文件的话点i,保存并退出先按ESC然后输入:wq回车):

  /jffs/etc/default/p910nd 包含了打印服务器启动时的配置文件
  /jffs/etc/init.d/p910nd 包含了启动打印服务器用到的启动脚本

在v24版dd下,启动脚本(/jffs/etc/init.d/p910nd)的第三行默认如下:

DEFAULT=/etc/default/p910nd

这个默认配置对于Mbjarland和我的打印机都不能生效,
我们需要将他修改为

DEFAULT=/jffs/etc/default/p910nd

这里有两个命令你可以运行来检查你的打印服务器是否运行:
命令1

netstat -an

返回如下信息:

QUOTE:
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address           Foreign Address         State
  tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN

命令2

ps | grep p9100d

返回如下信息:

QUOTE:
561 root        680 S   p9100d -b -f /dev/usb/lp0 0

如果你在netstat返回的信息中看到91XX端口并且你在ps返回的信息中看到p9100d正在运行,你的打印服务器应该已经成功运行。

如果你的服务器仍没有成功运行,
(1). 尝试手动运行代码:

/jffs/etc/init.d/p910nd start

然后再次确认以上两条命令的返回信息,手动启动仍无法运行的原因是你需要将上面第8条的/jffs/etc/init.d/p910nd按上面提到的内容修改。
(2). 有可能你需要删除/jffs/etc/default/p910nd中的-b参数。修改该文件删除其中的-b参数,然后再试。

现在,你已经可以成功打印了。

9. 把

/jffs/etc/init.d/p910nd start

这一行命令添加到 管理->诊断中的输入框内 并点击保存启动命令(英文版:Administration->Commands edit box and click "Save Startup").
这使得你不用每次启动后都需要再手动运行这条命令来开启打印服务器。


XP下的配置(其他工作站Ubuntu Linux、Mac OS X请参照http://www.dd-wrt.com/wiki/index ... g#Workstation_setup

先直接把打印机连接到电脑并装好驱动。然后将打印机插回路由器
在控制面板 - 打印机和传真 中找到你安装好的打印机。右键 - 属性 - 端口。
点选 添加端口 -  Standard TCP/IP Port 然后点击 新端口,下一步,输入路由器IP地址,点下一步后稍等片刻
选 自定义 - 设置,确认协议是RAW并且RAW端口是9100, 确定-下一步-完成。
确认你已经选择了你刚刚新建的端口然后确定。


关于无线:
如果你需要通过无线网络共享你的打印机,
在网页界面进入 管理 - 诊断 (英文:Administration - Commands) 在输入框内键入

/usr/sbin/iptables -I INPUT 1 -p tcp --dport 9100:9102 -j logaccept

然后点击保存防火墙命令(英文:Save Firewall)

你的路由器现在将重新启动,然后你就可以通过无线网络使用你的打印机

注意: 如果你的无线网能直接被因特网访问到那么基于安全问题并不推荐这样做, 但是在公司或学校内部的私有子网这样做很有用。



希望能有帮助,
Cospo 7月21日
&&
Mbjarland 07:33, 27 June 2008 (CEST)
 
 
明一下,看到ASUS的能用打印共享功能,belkin的不能用,觉得很不爽,研究了两个小时,终于搞定打印驱动

这个帖子参考kasimir版主挂u盘的教程,改了下,变成了挂打印机的,这个教程基于mini版的dd-wrt

路由端设置:

首先,确认你的dd的SSH管理功能打开了,并且要开启jffs2功能,确认你的flash剩余空间足够。
打开SSH的菜单有两处:
1) Services-->Secure Shell-->SSHd打开-->Password Login打开,端口可以选默认的22,如果觉得危险,也可以选别的,但是在Winscp中要设置好对应的端口。

2)菜单-->Administration-->Remote Access-->SSH Management


我刷的是rc4 mini,大概还有700KB的空间,足够装下驱动了
开启JFFS2的菜单-->Administration-->JFFS2 Support-->JFFS2选Enable / Clear第一次使用选Enable,之后选Disable(好像会自动变成Disable)

然后安装一个名叫Winscp的软件,以便可以直接存取ddwrt的jffs系统
下载地址: http://veronica.9966.org/software/winscp370setup.exe
见图:
DD-WRT共享打印机(打印服务器)的完整教程 - birch - 高明的博客screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://veronica.9966.org/otherfile/winscp.PNG" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

设置见下图,其中的用户名就是root,IP请根据自己的路由更改,密码就是自设的密码,连接以后有几个警告和Group等等错误,不用理他
DD-WRT共享打印机(打印服务器)的完整教程 - birch - 高明的博客screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://veronica.9966.org/otherfile/winscpsetting.PNG" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

下一步,左边是你电脑上的文件,右边是你DD上的文件夹,如果jffs2安装正确的话,应该已经往/jffs目录写入东西了,好,把我附件中的压缩包里面的东西解压,写进/jffs
(只有两个目录的东西,etc和lib)

下一步,在dd的start up命令里面,加入以下语句
注意,红色字体部分根据路由器机型的不同而不同。我的只支持USB1.1,所以只加载了usb-ohci的驱动。
一般来说,USB1.1的芯片,都不用加载ehci的驱动,但是uhci和ohci具体需要加载哪个,就看不同的机种了。

打印机驱动是print.o 如果还要加载u盘的存储设备要加入相应的文件系统驱动
因为我只用到了打印机,所以其他驱动都没有加载


insmod /jffs/lib/modules/2.4.30/usbcore.o
insmod /jffs/lib/modules/2.4.30/usb-ohci.o
insmod /jffs/lib/modules/2.4.30/scsi_mod.o
insmod /jffs/lib/modules/2.4.30/usb-storage.o
insmod /jffs/lib/modules/2.4.30/sd_mod.o
#insmod /jffs/lib/modules/2.4.30/ext2.o
#insmod /jffs/lib/modules/2.4.30/ext3.o
#insmod /jffs/lib/modules/2.4.30/fat.o
#insmod /jffs/lib/modules/2.4.30/vfat.o
insmod /jffs/lib/modules/2.4.30/printer.o
/jffs/usr/sbin/p910nd -b -f /dev/usb/lp0 0


最后telnet进路由,执行这两条语句
ipkg update
ipkg install p910nd


都弄好后,重启路由
在telnet里面,输入dmesg,应该能看到如下的字样:

hub.c: new USB device 00:04.0-1, assigned address 5
printer.c: usblp0: USB Bidirectional printer dev 5 if 0 alt 0 proto 2 vid 0x4348
pid 0x5584

代表着你的系统已经识别了USB打印机




使用共享打印机的电脑设置:

以XP Professional为例,进入控制面板,打印机和传真机,选择添加打印机,选择”连接到此计算机的本地打印机“

勾去自动检测,选择下一步,创建新端口,选择Standard TCP/IP Port,下一步,下一步,第一行输入路由ip地址

下一步,选择自定义,点击设置,确保协议是RAW,端口是9100,下一步,完成

然后选择你的USB打印机型号,完成安装

至此,USB打印机就可以使用了
这种情况应该是打印机驱动的问题,我的解决方法是先将打印机usb口插到电脑上,然后运行官方的安装程序安装驱动,驱动安装好了以后确保单机可以打印,然后将打印机查到路由上,在打印机的属性里更改端口。方法是右键点击打印机,选择属性,选择端口标签栏,

[attach]10400[/attach]

点击添加端口,

[attach]10401[/attach]

选择Standard TCP/IP Port,下一步,下一步,第一行输入路由ip地址

下一步,选择自定义,点击设置,确保协议是RAW,端口是9100,下一步,完成

然后将打印机的端口改成新增加的端口,确定即可。

以上操作在HP PSC 1400系列一体机上试验成功,说实话,到目前为止我还没有碰到用不了的打印机呢,包括一体机,包括并口转usb口的打印机。
  评论这张
转发至微博
转发至微博
0   分享到:        
阅读(7868)| 评论(0)| 引用 (0) |举报
<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--相关文章--> <#--历史上的今天--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012