我的机器上有一个连接到并行端口的“哑”打印机,在同一台机器上的“其他”常驻操作系统(来自 Redmond)下运行良好。我最近在机器上添加了 Ubuntu 12.04 作为双启动,但 Ubuntu 似乎根本无法识别并行端口。我设置打印机所需的只是一个普通的固定间距纯文本通用驱动程序,它存在,但没有显示并行端口。(其他打印机,都在 USB 端口上,似乎工作正常)。
根据网络上众多相互矛盾的建议中我认为最合理的建议,我采取了以下措施:
我添加了以下几行/etc/模块
parport_pc
ppdev
parport
然后,重新启动后,我检查这些线条是否仍然存在,事实确实如此。
我跑了
dmesg | grep par
并在输出中得到以下似乎与并行端口有关的引用:
[ 14.169511] parport_pc 0000:03:07.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21
[ 14.169516] PCI parallel port detected: 9710:9805, I/O at 0xce00(0xcd00), IRQ 21
[ 14.169577] parport0: PC-style at 0xce00 (0xcd00), irq 21, using FIFO [PCSPP,TRISTATE,COMPAT,ECP]
[ 14.354254] lp0: using parport0 (interrupt-driven).
[ 14.571358] ppdev: user-space parallel port driver
[ 16.588304] type=1400 audit(1347226670.386:5): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=964 comm="apparmor_parser"
[ 16.588756] type=1400 audit(1347226670.386:6): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=964 comm="apparmor_parser"
[ 16.673679] type=1400 audit(1347226670.470:7): apparmor="STATUS" operation="profile_load" name="/usr/lib/lightdm/lightdm/lightdm-guest-session-wrapper" pid=1010 comm="apparmor_parser"
[ 16.675252] type=1400 audit(1347226670.470:8): apparmor="STATUS" operation="profile_load" name="/usr/lib/telepathy/mission-control-5" pid=1014 comm="apparmor_parser"
[ 16.675716] type=1400 audit(1347226670.470:9): apparmor="STATUS" operation="profile_load" name="/usr/lib/telepathy/telepathy-*" pid=1014 comm="apparmor_parser"
[ 16.676636] type=1400 audit(1347226670.474:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/cups/backend/cups-pdf" pid=1015 comm="apparmor_parser"
[ 16.677124] type=1400 audit(1347226670.474:11): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid=1015 comm="apparmor_parser"
[ 1545.725328] parport0: ppdev0 forgot to release port
我不知道这些是什么意思,但是“ parport0: ppdev0 forgot to release port
”这一行看起来不寻常。
我仍然无法为我的旧车添加打印机,所以我尝试了直接的方法,输入
echo “Hello” > /dev/lp0
并收到一条Permission denied
消息。然后我尝试
echo “Hello” > /dev/parport0
它根本没有给我任何消息,但仍然没有打印任何东西。
运行该命令sudo /usr/lib/cups/backend/parallel
得到以下结果:
direct parallel:/dev/lp0 "unknown" "LPT #1" "" ""
检查 /dev/parport0、所有者、组和其他的权限都设置为读写。
crw-rw---- 1 root lp 6, 0 Sep 9 16:37 /dev/lp0
crw-rw-rw- 1 root lp 99, 0 Sep 9 16:37 /dev/parport0
该命令的输出lpinfo -v
包括以下行:direct parallel:/dev/lp0
我读过几篇网络帖子,它们似乎表明这个问题已经存在好几年了,但是由于没有足够的信息来解决这个问题(微软的阴影!),错误报告都被关闭了。
关于我可能遗漏了什么,有什么建议吗?
答案1
我不太确定,但是因为您对 lpt 的权限设置为 root,所以我认为可能有以下原因:
a) 将您的用户添加到 lp 用户组。使用以下命令完成任务:
gpasswd -a [user] lp
阅读 ArchWiki 中有关用户和群组的文章,了解有关如何使用群组访问某些系统硬件的更多信息。
事实证明 Launchpad 上有多个与此问题相关的错误。以下这些可能有帮助:
https://bugs.launchpad.net/hplip/+bug/802780
https://bugs.launchpad.net/hplip/+bug/718092
https://answers.launchpad.net/hplip/+question/161346
来自:(在另一篇文章中阅读)
b) 您可以将 parport 权限更改为每个用户。但我不确定这是否是一个更好的主意。
sudo chmod 666 /dev/parport0
答案2
此行为是由启用 FIFO 选项引起的。如果您重新编译内核并禁用 FIFO,您的打印机将像以前一样打印。
此处存在一个与此相关的错误:https://bugs.launchpad.net/ubuntu/raring/+source/linux/+bug/339752
然而糟糕的是我不知道他们什么时候会修复它:-(
答案3
简单方法。默认情况下,root 权限被禁用,请按照以下问答操作:(https://superuser.com/questions/301753/how-do-i-print-directly-to-lpt-port-in-ubuntu),希望能有所帮助。
答案4
删除 libsane-hpaio。此软件包抓取并保存并行端口。此软件包适用于连接到 LPT1 的 HP 扫描仪。
真让人头疼!!我不敢相信这种情况持续了这么长时间。