以Canon PIXMA iP2780为例。

  1. 到这里http://support-cn.canon-asia.com/下载对应型号的驱动。对于iP2780,直接点http://pdisp01.c-wss.com/gdl/WWUFORedirectTarget.do?id=MDEwMDAwMjcxNjAx&cmp=ACB&lang=ZH即可。

  2. 安装rpmextract

    pacman -S rpmextract
    
  3. 解压刚才下载的那个tar.gz文件,进入packages目录,运行

    rpmextract.sh cnijfilter-common-3.30-1.i386.rpm
    rpmextract.sh cnijfilter-ip2700series-3.30-1.i386.rpm
    
  4. 将该目录下生成的usr目录中的所有文件复制到/usr下

    cp -r usr/* /usr/
    
  5. 安装cups

    pacman -S cups
    
  6. 启动cups

    /etc/rc.d/cups start
    
  7. 用浏览器登录localhost:631,点击Administration -> Add Printer -> 选择要添加的打印机 -> Name/Description/Location随便填 -> Continue -> 提供PPD文件/usr/share/cups/model/canonip2700.ppd

几个问题:

  1. 是否禁用usblp?ArchWiki的说法是存在着uncertainty(http://wiki.archlinux.org/index.php/Cups)。经本人2.6.34内核测试无需禁用。

  2. AUR里的cups-usblp?最初调试时曾一度安装了这个。后来更换到extra/cups才工作正常。这两者的不同尚没有搞清楚。如果extra/cups不work,可以考虑cups-usblp。

  3. http://support-cn.canon-asia.com/提供的源代码编译不过,提示

    /usr/bin/ld: cannot find -lbscc2sts
    

    此问题没有被解决。本文通过解压编译好的版本绕过此问题。

Update. 命令行配置方法

首先如上安装驱动和配置文件,启动CUPS,然后使用下列命令配置

lpstat -t #查看当前cups打印机配置
lpinfo -v #查看当前可用设备
lpadmin -p Canon_iP2780 -E -v cnijusb:/dev/usb/lp2 -P /usr/share/cups/model/canonip2700.ppd #添加打印机Canon_iP2780/启用/设置device URI(from lpinfo -v)/设置ppd文件
lpadmin -d Canon_iP2780 #设置Canon_iP2780为默认打印机

打印文件时可以使用

lp [file]