打印机无线改造

无华0871 无华进化论 2023年04月08日 23:41

我电脑桌上东西太多了,放不下打印机了,一直想着给它找个地方放,能够方便地打印东西,打印机不用来回搬。但尴尬的是我打印机是普通打印机,不是插个网线就能远程打印那种,而且我电脑还是个台式机,不搬打印机就只能搬电脑了,更麻烦。

不死心嘛,就上网查了一些资料。查下来发现,其实我可以把要求提高一点,直接把家里的这个古董盘成一个可以手机、电脑无线打印的家伙,扫描功能也可以保证。

于是马上整起来。

机顶盒安装armbian

系统安装和启动

我用的机顶盒是网上收的的移动魔百盒,已破解,可以从优盘启动,芯片是晶辰的S905L。整个打印机改造就是以它为基础的。

把下载好的armbian64镜像烧录到tf卡,完成后弹出一次。再次插入读卡器,进入启动分区,修改\extlinux\extlinux.conf文件:如下:

  1. 去掉# aml S9xxx后面#FDT /dtd/amlogic/meson-gxl-s905x-p212.dtd及最后一行#APPEND root=前面的#

  2. 注释文件内所有其余行内容(即在所有行首没有#的,添加一个#号),然后保存。
    把根目录下的u-boot-s905x-s912文件复制一份,改名为u-boot.ext。修改时记得显示出扩展名,一起修改。

稍等个一两分钟,弹出读卡器。把内存卡插入机顶盒,上电等开机。(这里最好准备好控制器,确保机器是从tf卡启动的)

给机顶盒设置开机密码和固定ip

开机后会让修改root密码,一定修改一下。完了会让添加普通用户账号,这个可以跳过(Ctrl+C)。

接着我们来设置固定ip。打开/etc/network/interfaces文件,添加如下内容:

auto eth0
allow-hotplug eth0 # 添加这条配置
iface eth0 inet static
address XXX.XXX.XXX.XXX
netmask 255.255.255.0

address XXX.XXX.XXX.XXX这是记得修改为你想要的ip,并且保证所设置的ip与你的路由器在同一子网下。

退出保存。重启机顶盒。

现在有了固定,剩下的操作就可以远程登录进行了。就是说 现在机顶盒上只要连个电源和网线就可以了,其他东西都可以撤了。

安装cups及hp私有驱动

安装和部署cups

等机顶盒开机后(我这款机顶盒的指示灯会由黄变绿,但不一定每个型号的机顶盒都会这样),ssh远程登录。然后执行下面的命令:

apt-get -y update&& upgrade
sudo apt-get install cups

如果你是在运行了其他服务的Linux主机上安装,最好不要执行upgrade

换源

如果更新和安装太慢的话,可以更换国内的源。我下的系统是基于debian的,更换了中科大的源。

过程其实很简单,就是编辑/etc/apt/sources.list文件,把里面东西清空,然后粘贴下面的内容:

deb http://mirrors.ustc.edu.cn/debian buster main contrib non-free
deb http://mirrors.ustc.edu.cn/debian buster-updates main contrib non-free
deb http://mirrors.ustc.edu.cn/debian buster-backports main contrib non-free
deb http://mirrors.ustc.edu.cn/debian-security/ buster/updates main contrib non-free

保险起见,修改前可以用下面的命令备份一下原文件

cp /etc/apt/sources.list /etc/apt/sources.list.bak

这样即使出现问题了,也还有后悔药可以吃。

修改cupsd.conf,启动cups,添加打印机

安装完成后,要先修改一下配置文件,CUPS才可以使用。
配置文件存放在这里/etc/cups/cupsd.conf。整个配置文件很长,只要修改这么几处就可以:

  1. 把监听地址

# Only listen for connections from the local machine.
Listen localhost:631

修改为0.0.0.0
2. 这4个地方修改为下面的样子:

# Restrict access to the server...
<Location />
Allow @LOCAL
Order allow,deny
</Location>

# Restrict access to the admin pages...
<Location /admin>
Allow @LOCAL
Encryption Required
Order allow,deny
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
Allow @LOCAL
AuthType Default
Require user @SYSTEM
Order allow,deny
</Location>

# Restrict access to log files...
<Location /admin/log>
#AuthType Default
#Require user @SYSTEM
#Order allow,deny
Allow @LOCAL
</Location>

然后保存退出。

这里有个地方要注意一下,因为我的打印机是只想在家里使用,所以使用的是Allow @LOCAL,如果你是想人在外面也要管理和使用打印机的话,记得把上面所有的Allow @LOCAL替换为Allow all

接下来重启一下cups:

servive cups restart

这样cups就部署完成了。

安装hplip和hp-plugin

因为我的是hp打印机,接下来我们用下面的命令安装hp的通用驱动:

apt-get install hplip

hp打印机除了通用驱动外,不少机型都还需要安装hp专用驱动才能使用,我的打印机就是这种情况。安装专用驱动用下面的命令进行:

hp-plugin

安装过程中会到hp官网下载私有驱动,我这边试过好多次都失败了。后来我是把驱动下载到本地来安装的。下载前我们要先确认自己所安装的hplip版本,每次安装过程中都有显示:

------------------------------------------
| PLUG-IN INSTALLATION FOR HPLIP 3.18.12 |
------------------------------------------

里面这个3.18.12就是我所安装的hplip版,现在我要下载对应的驱动:

wget https://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/hplip-3.18.12-plugin.run
wget https://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/hplip-3.18.12-plugin.run.asc

下载好两个文件后,就可以本地安装了。

一样的 执行下面命令:

hp-plugin

弹出下面三个选项后:

Option      Description
---------- --------------------------------------------------
d Download plug-in from HP (recommended)
p Specify a path to the plug-in (advanced)
q Quit hp-plugin (skip installation)

Enter option (d=download*, p=specify path, q=quit) ?

选择p,然后基本上回车或者输入yes一路到底就可以了。直到最后显示安装成功,所有软件上的准备工作也就完了了。

添加打印机

现在就可以登录后台添加和管理打印机了。

在浏览器输入这个地址:XXX.XXX.XXX.XXX:631,回车就进入后台了。(这里的XXX.XXX.XXX.XXX记得修改为你设置的机顶盒ip哈)

图片

点击Administration选项卡,这时会要你登录,cups的默认账户是admin,密码是password,但是刚才我们的配置文件里面写的是要机器的管理员才有权限,所以我们账号要输入root,密码是第一次登录所修改的密码。
进入后点击Add Printer添加打印机。

图片

把打印机上电开机,数据线插到机顶盒上,在这个界面选择你自己的打印机,点击Continue

图片

下面这步一定记得钩选上红框位置的共享该打印机

图片

在下一步给打印机选择一个驱动,一般默认的就可以了,点击确定,至此,打印机就添加完成了。

电脑端的操作就省略不写了,无非就是添加打印机,安装驱动这些。需要提醒一下的是,在cups后台添加完打印机之后,点击添加后的打印机会进入一个网址,这个就是我们电脑端添加打印机的地址了。

手机端打印开启无线

安卓手机安装cups print

安卓端添加cups打印机还是很方便的,我手机已经整好了,就不一一截图了,仅用文字描述的方式进行。

首先在市场其他地方安装好cups printapp,然后打开手机设置->连接->更多连接设置->打印->Android CUPS Print(我用的是三星S9,安卓10的系统,其他牌子或者系统版本的手机,位置可能不太一样,大家自己找一下吧),然后点右上角三个点,添加打印机,粘贴上前面一章提到的打印机地址,点击下面的ADD PRINTER

这时需要回到桌面,然后打开CUPS Print,这时会出现一个提示框,连点两次左侧按钮。

然后随便打个文件点打印,选择刚刚添加的打印机,会显示打印机不可用,并且屏幕下方会显示一行小字。这时再回到CUPS Print,这时又会出现个提示框,老规矩,点击左侧按键两次。这下再回到打印界面,打印机已经可以使用了。

之所以会出现这种情况,是因为从安卓9起,默认禁用了无ssl保护的非加密连接,而我们的打印机是运行在hppt下的,无加密,所以会多出这么个步骤。

好消息是这个操作是永久的,添加好了之后,只要你不删除打印机,以后就都不需要重复操作了。

启用ios端的ariprint

安卓端的事情说清楚了,下面我们来搞定ios端,也就是苹果手机和ipad上的无线打印。这个整起来更方便。

先执行下面的命令:

sudo apt-get -y install avahi-daemon avahi-discover libnss-mdns
sudo service avahi-daemon restart

然后在手机上打开一个图片什么的,点左下角的分享按钮,再找到打印选项,选择我们前面添加的打印机,再点击右上角的打印,就可以完成打印了。

整个过程可谓非常简洁、高效,这或许是因为苹果公司把cups收购了原因吧,所以用才会这么丝滑。一个多余的步骤都没有呢。

启用扫描

扫描功能我们是通过virtualHere这个软件实现的,它在多个平台上都有服务端和客户端,而且都是免安装的,使用非常方便。

下面我们开始。
下载virtualHere的arm64版服务端,给予执行权限,并后台进行:

cd 
wget https://www.virtualhere.com/sites/default/files/usbserver/vhusbdarm64
chmod +x vhusbdarm64
sudo ./vhusbdarm64-b

为VirtualHere服务添加开机启动,编辑/etc/rc.local文件,在exit 0语句,在之前添加如下语句

/root/vhusbdarm64

保存退出即可。

电脑端下载virtualhere的客户端,打开后即可看到我们共享的打印机,打开自动启用选项

图片

这时,远程打印机后面将显示in use by you,这就表示这个打印机现在就相当于通过usb连到你电脑一样,可以进行扫描等操作了。

图片

到这时,所有折腾就都结束了。电脑远程打印和扫描、手机无线打印这些功能也都全部实现。

写在最后

今天折腾这个机顶盒,就是之前刷怀旧游戏系统那个。这机子我两年前一百多购入的,现在二手好像也就几十块钱了。现在游戏玩儿得少了,就让它下岗再就业吧(怎么感觉它比我强?)。

网上不少cups的方案都是用的docker实现的,我一开始也是用的docker。但是因为打印机型号的问题,必须要安装hp的私有驱动。但是那些docker镜像的Linux内核,都是精简的或者魔改的,我试了几个,hp-pugin始终无法安装,所以才最终放弃了docker的方案。用docker部署的话,会方便得多。如果你手上的不是hp打印机,强烈推荐用docker的方式来折腾。

如果你也有台老打印机,不妨像我一样折腾起来,让打印文件不再麻烦。


折腾 · 目录
上一篇手把手教你搭建自己专属的Anki服务器

微信扫一扫
关注该公众号