一、交叉编译
交叉编译的过程不赘述,跟其他开源软件类似。编译后将安装路径里的cups文件夹(后用[cups]代替)拷贝到板子上
二、配置并启动服务
首先注意编译内核时需要选择usb printer surpport,支持usb打印机。
把
[cups]
/bin和
[cups]
/sbin添加到环境变量
ARM下没有安装程序,不会自动启动,所以一定注意手动启动:
>cupsd
(可以把启动指令cuped写入rcS,开机自动启动cups服务)
启动时最好先连接打印机
其他配置:
可以在板子上编辑
[cups]
/etc/cups/cupsd.conf
将LogLevel info
改为LogLevel debug
就可以在[cups]/var/log/cups/error_log中看到详细的debug信息
更多其他配置都在
[cups]
/etc/cups/cupsd.conf中进行,对其进行编辑即可。
三、三星系列打印机使用
在官网上下载三星打印机驱动uld
将三星的uld中(下用[uld]代替)的[uld]/arm/rastertospl
拷贝到:
板子
[cups]/lib/cups/filter/ 下
将[uld]/arm/libscmssc.so 拷贝到
板子的/lib下
在[uld]/arm/noarch/share/ppd下找到自己打印机型号对应的ppd
我的ML-2166W用的ppd是:Samsung_ML-2160_Series.ppd
将ppd拷贝至板子的
[cups]/share/cups/model下
将已连接的ML-2166W打印机添加至CUPS配置,执行指令:
lpadmin -p [NAME] -E -v [DEVICE] -m [PPD]
例如:进入
[cups]
/share/cups/model下执行
>
lpadmin -p ML-2166W -E -v /dev/lp0 -m
Samsung_ML-2160_Series.ppd
然后执行
>lpstat -t
(查看打印机状态)
我的输出是:
scheduler is running
no system default destination
device for ML-2166W: ///dev/lp0
ML-2166W accepting requests since Sun Oct 3 18:57:08 2004
printer ML-2166W is idle. enabled since Sun Oct 3 18:57:08 2004
说明配置成功,同时可以在
[cups]
/etc/cups/printer.conf中看到响应的配置
设置默认打印机,执行
>lpoptions -d ML-2166W
把ML-2166W设为默认打印机
然后就可以打印ppm的图像文件了
例如打印SD卡上的report.pbm文件:
>lp /mnt/sdcard/report.pbm
注意png jpg等图像文件还不能打印,如果需要打印,则要安装ghostScript
通过GS把png等转换为pbm,再打印
四、部分错误解决方式:
报错:
lpadmin: File device URIs have been disabled! To enable, see the FileDevice directive in "/etc/cups/cupsd.conf".
解决:
编辑cupsd.conf,加入一行:
... # Allow new printers to be added using device URIs "file:/filename" FileDevice Yes ...
五、直接使用foo2zjs搞定部分型号打印机
如果你使用的打印机foo2zjs已支持,可以不使用cups,直接用foo2zjs将ppm文件转换成打印机支持的流,传入打印机即可打印。
1、交叉编译foo2zjs
2、如果你的打印机需要固件,通过getweb下载固件,并转换成dl文件
(以上两步只说思路,具体内容太多,可以自己搜索)
3、将固件刷入打印机(以惠普的hp1020为例)
> cp sihp1020.dl /dev/lp0
4、将ppm格式转换为打印机支持的流进行打印
>./foo2zjs -p9 -r600x600 test.pbm > /dev/lp0
注意:
部分由foo2xqx支持的型号,参数与foo2zjs不同,例如惠普的p1007
需要通过-z来选择型号
>./foo2xqx -z1 -p9 -r600x600 test.pbm > /dev/lp0
具体的参数可以通过
> ./foo2zjs -h
查看
http://blog.sina.com.cn/s/blog_9da24f3b0101otng.html