Manjaro linux驱动HP1020 plus打印机折腾记

  Linux驱动问题应该是与Windows相比带给用户体验的一大劣势,稍复杂些,安装上解决故障难点多一些。近期用manjaro作为工作主力机,总体感觉都好,在打印机上遇到了一些挫折,搞定后分享一下,让别人少走弯路。

  关于linux打印机驱动,如果厂家提供了驱动,自行安装即可,基本上大企业都逐步在提供,比如惠普的hplip,但基于用户数量少等市场成本的原因,覆盖面还是比不过windows的;另外就是开源驱动,比如foo2zjs。但实际上都依赖于cups(Common UNIX Printing System,通用Unix打印系统),这是苹果公司对世界的贡献。

  此前安装过hp1022的驱动,用hplip很快就搞定。惯性地采取此法处理1020,碰到了拦路虎,安装后一开始可以打印,但系统重启后或打印机关机后就连接不上,总是显示暂停,激活任务也没用。解决问题中尝试过以下的方法,可以直接看第三条,最终用foo2zjs搞定。

  1.对hplip再配置。最初执行hp-setup,hp-plugins重搞一遍还行,但总不能每次都重新配置吧,而且下载也比较慢。也不是每次都能成功,最要命的是再执行hp-setup时找不到usb接口上连接的打印机,但执行sudo lsusb显示usb上明明连接的有hp 1020。浏览器打开localhost:631也连接不上,检查后并未配置防火墙,cups服务也在线,不过无论是系统设置中的打印机还是hplip的管理设置都显示有hp1020打印机,只是无法通讯,死活连不上。插拨线、换线、重启搞了无数次,差点就放弃了。

  2.试manjaro官方方法sudo pacman -S manjaro-printer。此方法与自行安装hplip在本质上是一样的,只不过打包安装更智能化,安装的依然有cups、hplip等,对我而言带来唯一的好处是可以打开localhost:631作配置了,让我第一次见到这个界面。分析此前有服务未启动,也就是cups未配置到位。关键的命令:sudo systemctl enable --now cups.servic;sudo systemctl enable --now cups.socket;sudo systemctl enable --now cups.path。此两法本质上一样,所以问题表现依然一样,首次可以打印,关机再来就连接不上。

  3.用foo2zjs驱动。依然问度娘,或找官方文档,反复试,多次卸载、重装驱动,自编译安装hplib,不成功便成仁。期间看到让Linux下的打印机hp1020、hp1008自动加载固件,发现原因所有,原来是hp1020打印机里没有常驻的固件,是现用现导的,固件未固化在打印机的存储器里,断电后无法握手,连接不上,可能是为了降低成本吧。只是还有困惑,hplip是惠普开发的,为什么不采取和windows相同的方式解决,电脑一启动一发现打印机就将固件导进去,也不是什么难事,一句代码的事,可能压根儿就没想让人免费用。本想继续基于hplip继续尝试,已从windows驱动中找来hp1020.img文件待用,准备通过arm2hpdl sihp hp1020.img >/dev/usb/lp0试试的,但考虑到我还没有正式用过foo2zjs,必须为自己创造一次学习的机会。我有一个bug,希望碰到问题,与问题斗其乐无穷,可以逼自己学习,这是我学习的一种动力,成功的喜悦比香烟还有味道。上Open Printing下载,准备自行编译安装,foo2zjs-z1对路,但foomatic中未免费提供,可花钱定制,走人。想到操作系统的源里也许有,sudo pacman -S foo2zjs,没有;继续yay -S foo2zjs,真有,一批包安装后,重启,本以为还需要手动导入固件,但在localhost:631/admin登录后直接点添加,没作选择hp1020就跳出来自己配置好了。成功,重启仍行,搞定。可能arch作过优化,用代码解决了固件导入的问题。从技术上我仍坚信,hplip驱动是可行的,编个shell开机启动时自动重写/dev/usb/lp0,cat sihp1020.dl > /dev/usb/lp0,再试。

  发博客后当天下午在kvm上的arch再试了一下。先是不考虑hplip,想研究下仅依靠cups看能否驱动,在localhost:631/中新安装打印机,上传hp1020 PPD(在此前manjaro成功安装后的相关目录中找的),可以安装,但无法打印,显示过滤器问题,后又安装了过滤器,还是不行。折腾了两个小时就放弃了。再就是检验hplip驱动下手动添加固件是否能解决重启后连接不上的问题。执行sudo pacman -S hplip先安装hplip,再执行hp-setup添加打印机,期间须下载插件(相当于执行hp-plugin)遇到问题无法执行(  error:  file does not match its checksum. File may have been corrupted or altered),便手动下载的hplip-3.21.6-plugin.run安装,成功安装,可以打印,重启又无法打印。将manjaro中安装foo2zjs时下载的固件复制过来,执行sudo cat sihp1020.dl > /dev/usb/lp0,权限不足,再用超级用户执行也权限不足,不知是arch的安全限制还是别的原因,搞不懂。查到https://wiki.archlinux.org/title/CUPS/Troubleshooting#HP_issues,其中HP issues中有一段表述指出部分打印机确实需要在使用时上传固件,给出的解决方法是执行hp-firmware -n,试验后也是权限不中。抱着试一试的想法,关闭打印机再开机,点“恢复打印”打印机响一下,等一下再点“恢复打印”打印机又响一下后就开始打印,我猜想,前一次打印机有动静可能是在上传固件。至此,暂时得出一个不知正确与否的结论,hplip能够驱动hp1020,也就是说,前面三个方法都是可行的,从本质上讲也是一样的,比如hplip也依赖Linux 基金会旗下的 OpenPrinting 工作组维护的 foomatic 为许多打印机提供的 PDD 文件,而此前我安装foo2zjs时也安装了Foomatic,因为打印机都需要PDD,都用了Foomatic收集的PDD,底层逻辑都是一样的,都离不开cups,殊途同归。但也给此文前面的有些观点带来冲击,下周再研究下。需要研究的,可从archlinux wiki CUPS (简体中文)中探索,其中的很多链接将帮助你找到你的linux打印机驱动的安装方法,不同发行版本的linux的思路都是相通的。arch wiki是真的好,如果学生教材做到这个水平,不学好都难,系统性太强了。

  也许有人嫌我啰嗦。知其所以然,授人以渔,在解决问题中学习,重思路不重方法,可能都是理由。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值