某讯N1刷Armbian后安装打印机,变身AirPrinter
本日志文中摘录了大量的网友内容,如有原创者异议,请及时通知我修改,谢谢!
本篇日志摘录内容网址无规则排序如下:
https://tohot.top/posts/53788.html
https://www.right.com.cn/forum/thread-510423-1-1.html
https://www.right.com.cn/forum/thread-703919-1-1.html
https://www.cnblogs.com/leaven/archive/2010/10/20/1856482.html
https://www.xuxiaobo.com/?p=2777
家中闲置惠普P1106打印机一台,长期以来都是插路由器,然后电脑连路由器,使用LPR协议进行打印。自17年使用MacBook Air后,家里的苹果设备越来越多,苹果设备有毒!!!特别是IPhone和IPad也成了标配~老婆有时候手机接收打印文档后还需要传送到电脑上,感觉太麻烦了,Google了一把,发现居然有AirPrinter这种神奇的东东,好像只要配合Linux就可以实现。我去,咱也实现吧!
话说某讯真是坑爹,坑了我几万块买了一些高价货!N1就是其中之一!但是N1这个产品还真是不错,虽然设计是当云盘这种坑爹功能,但是在广大网友智慧下变成了电视盒子,下载宝,蓝牙音箱,游戏机,linux服务器!本次使用的是linux服务器Armbian功能!
1、降级过程此处参考学习原文链接:https://www.right.com.cn/forum/thread-336545-1-1.html (如果你的版本小于等于2.19 则无需降级,切记第一次开机先不要联网,否则会自动升级)
1.开启N1的adb调试功能:
将N1连显示器和鼠标,进入天天链界面后查看IP,版本号,如果版本号不高于2.19则可跳过降级步,否则无法线刷。四连击版本号,显示adb打开。
2.准备工作:
①软件:
下载adb工具、USB burning tool、降版本用的3个低版本关键分区img文件(boot.img、bootloader.img、recovery.img ,已放到adb文件夹中)、将镜像写入U盘的工具(balenaEtcher、Win32DiskImager、USB image tool等之类的)、Armbian镜像等、SSL连接工具(如PUTTY,这样就不用将N1接显示器及鼠标键盘了);
②硬件:
好用的U盘一个(比较挑U盘,部分U盘引导armbian时进入不了U盘系统,会进入recovery界面)、双公头USB线一根、网线一根
3.降级:
①安装USB burning tool,安装时会提示安装驱动,必须安装;
②在进行步骤1后,将电脑接入与N1同一网络下(下面均如此),CMD命令行环境进入adb安装目录,运行 adb connect N1的ip地址 ; 用双公头USB线将电脑和N1连接(N1端插到HDMI接口那个USB口上);
③CMD环境中输入: adb
shell reboot fastboot,重启后N1进入fashtboot模式,此时电脑会提示有新硬件并自动安装(一般为:Android
Phone – Android ADB Interface),如果没有自动安装驱动,可能时USB线有问题;
④CMD环境按CTRL+C,可以中止当前操作,输入fastboot devices -l ,正常情况下会显示N1的序列号;
⑤将盒子对应的boot.img、bootloader.img、recovery.img放到adb文件夹内,分别执行fastboot
flash bootloader bootloader.img、 fastboot flash boot boot.img、
fastboot flash recovery recovery.img
命令,将低版本分区镜像刷入N1,等待三秒,断电,完成降级(降级后连接显示器后看版本号并不会变化,实际上已经降级了,恢复了线刷功能)。
4.刷入官改版本
①用USB线连接N1和电脑,打开USB burning tool,准备好官改镜像文件(如N1_mod_by_webpad_v2.2_20180920.img);
②adb connect ip ,连接成功后,adb reboot update ,此时N1会重启,重启后USB burning tool节目显示连接成功后,文件→导入烧录包,导入后,去掉右边“擦除flash”和“擦除bootloader”选项前面的勾,点击开始,即开始进行录入,完成后拔线,停止烧录。
③此时断电重启的话,则N1已经变成了官改版本。
二、刷入armbian系统
二、刷入armbian系统
1.制作armbian启动U盘
①使用USB image tool等之类的软件,将armbian镜像写入U盘(U盘中原文件全部会丢失,提前备份):
这儿使用的是balenaEtcher,比较推荐
官方下载:https://www.balena.io/etcher/ (可能会比较慢)
孤岛下载:http://cloud.feiji.work/s/46p6ns9y (也可能很慢啦,但可以用工具下载!)
这里使用的是Armbian_5.77_Aml-s905_Debian_stretch_default_5.0.2_20190318.img,写入后再插入会发现有2个磁盘,其中一个是以“BOOT”为卷标的,另一个在Windows环境下无法查看,提示需格式化,这里不要格式化。
②修改U盘文件:
然后重新插拔一次硬盘,这时电脑上会多出一个分区“BOOT”
进入到目录:/boot/dtb
替换为恩山论坛大佬的dtb文件(注:我在写这篇文章的时候基于5.77版,这个版本的内核虽然已经很不错,但是空闲时负载较高,所以还是换为大佬的dtb)
下载地址:https://www.right.com.cn/forum/thread-510423-1-1.html
据说由于原镜像空闲时负载较高,要将BOOT盘下dtb\meson-gxl-s905d-phicomm-n1.dtb替换为恩山无线大佬的dtb文件,返回BOOT盘根目录,编辑文件:uEnv.in,
替换第一行内容为: dtb_name=/dtb/meson-gxl-s905d-phicomm-n1.dtb
据说如果不进行配置很可能出现无网络的情况。(有一点请注意,替换dtb文件后,修改uEnv.ini文件时,请用notepad++打开。不要用win自带的记事本工具之类。这个ini文件时linux环境的编码,用win自带的会改变编码,出现问题)
2.将armbian刷入N1
①将写入后并改好的U盘插入N1靠近HDMI接口的U口,断电重启N1,如果U盘是天选之U盘,则N1会从U盘启动进入armbian系统(否则可能会进入安卓的recovery界面),此时可以N1接显示器和键盘,或者直接用putty连接(ip正常情况还是上面那个ip)。界面会提示输入登录账号,默认为root,密码是1234,注意,输入密码时不会有任何显示,输入后直接回车即可,如果正确则会进入root目录。首次登陆要求更改root密码,注意开始是要输入原密码的!同时需要创建一个新用户,随便创建一个即可,后面基本都是用root账号反正。
不建立新用户也OK
②将armbian系统从U盘写入N1的emmc,保证以后无需U盘启动:输入 /root/install.sh 回车,运行完毕后,拔掉U盘,断电重启,N1可以不插U盘自行进入armbian系统了。
如果重启没有自动进入armbian,则可以尝试, 用adb connect 盒子IP 回车 然后 输入:adb shell reboot update 此时盒子会从U盘启动Linux。
以上完成N1刷入Armbian系统;下面开始安装打印机:
首先使用ssh登录某讯N1
1.更新
sudo apt-get update
2.安装HPLIP
sudo apt-get install hplip
3.安装CUPS
sudo apt-get install cups
安装HPLIP时,CUPS已经安装上了,这里安装时会看到已经安装过的提示。
4.将N1默认用户root添加到用户组lpadmin里
sudo usermod -a -G lpadmin root
5.配置cupsd.conf
cupsd.conf路径:/etc/cups/cupsd.conf /etc/cups/cupsd.conf
这里我修改的时候偷懒了,使用SFTP和root账号登录了Armbian系统,下载了文件,修改后再上传回去!
cupsd.conf默认的配置文件只能本地访问,所以需要修改一些内容使局域网的电脑访问
配置不成功时,访问http://树莓派ip:634/会出现forbidden的界面
首先需要将
Listen localhost:631
改成
Listen 0.0.0.0:631
将<Location /> <Location /admin> <Location /admin/conf>三个节点添加
Allow from @LOCAL
可能有的教程给的配置是Allow @Local,这是旧版的兼容写法,在CUPS官网和ARCH LINUX的教程中给出都有from
此时再重启CUPS服务即可生效
sudo service cups restart
6.安装P1106特殊驱动:
HP Laserjet Professional P1106,在CUPS中选择驱动的阶段会明确注明requires proprietary plugin,即需要专有插件支持。虽然在使用hp-setup安装驱动的时候已经自动下载并安装插件,并且也没有提示任何错误异常。但是在测试打印的时候却始终提示错误: /usr/lib/cups/filter/hpcups fails 查看错误日志发现造成该错误的原因是: [23/Jul/2013:15:44:41 +0000] [Job 3] STATE: +hplip.plugin-error 在谷歌该错误之后发现,导致该问题的原因是由于HP并没有提供支持ARM架构的插件,其所有插件都只是针对x86平台。因此这驱动是怎么都装不上的。也在此希望HP能早日推出支持ARM的插件。
使用开源foo2zjs驱动
经过一番搜索之后,发现了一款开源的打印驱动foo2zjs。该驱动支持部分打印机,其中包括HP LaserJet Professional P1100系列。安装该驱动需要下载其官方网站上的源码包进行编译安装。
wget http://foo2zjs.rkkda.com/foo2zjs.tar.gz tar -xvf foo2zjs.tar.gz cd foo2zjs make sudo make install sudo make cups
如此,该驱动也就安装好了。
上面一段代码在Armbian中可能无法执行,具体原因不明。
于是,我又开始折腾了,把上述命令拆分开来:
下载:
wget -O foo2zjs.tar.gz
解压缩:
tar zxf foo2zjs.tar.gz
进入相应的目录:
cd foo2zjs
编译foo2zjs:
make
取得打印机的韧件(firmware):
./getweb 1020
安装:
sudo make install
安装热插拔系统支持:
sudo make install-hotplug
安装到CUPS系统:
sudo make cups
好吧,折腾了半天终于搞定了特殊驱动,最后重新启动一下打印服务:
sudo service cups restart
7.打开网页配置打印机共享
驱动安装完成之后即可使用CUPS添加打印机。CUPS自有一套WEB管理界面,监听终端的631接口。使用浏览器访问该管理界面后点击上访导航栏的Administration -> Add Printer可见如下界面:
选中自动发现的本地打印机带USBXXX的那个,点击继续按钮进入打印机设置界面。
这里填写打印机的名称与注释,可以保持默认不变。下面有个“共享该打印机”的复选框要确认选中。然后点击继续按钮进入驱动选择界面。
在列表中选择对应的驱动(这里我的P1106选择的是: HP LaserJet Pro P1102w Foomatic/foo2zjs-z2 (recommended)),所有foo2zjs驱动会注明footmatic/foo2zjs字样。再点击“添加打印机”按钮即完成了打印机的添加。
AirPrint打印共享
已添加的打印机会自动加入Avahi广播列表,使用苹果Bonjour协议向网络进行广播。所有苹果设备,包括手机、平板电脑和笔记本电脑均可直接发现打印机设备
添加桌面打印机
OS X
OS X支持IPP网络打印服务,因此添加CUPS打印服务只需要选择相应打印机即可,系统自动下载安装相应驱动。在系统偏好设置中选择打印机,在添加打印机按钮中会自动显示附近的IPP打印机,点击安装即可。
Windows
使用控制面板
CUPS默认对外提供IPP打印接口,在Windows上可以直接输入打印机的http地址进行安装。具体步骤如下:
- 首先在控制面板找到添加打印机选项,由于CUPS默认采用Bonjour协议进行服务广播,而Windows并不原生支持该协议,因此在列表中无法自动找到打印机,在此选择“打印机不在列表中”选项。
- 在手动添加打印机面板中手动输入打印机的http地址如以下格式 http://server_name:port/printers/printer_name其中CUPS的默认端口为631。输入打印机地址如下。
使用Bonjour Printer Services
- 由于CUPS系统默认使用Bonjour协议进行服务广播。在Windows下可以安装苹果官方的Bonjour打印机安装程序进行设置。Bonjour打印机安装向导自动发现网络中的打印机服务:
- 选择相应打印机之后安装对应的驱动程序即可:
关于打印速度的讨论
在实际使用中,发现Windows PC打印速度快,即提交打印任务后打印立即开始,而使用iOS设备发送打印任务之后存在较长的等待时间才会开始打印。在研究造成该问题的原因之前,我们需要知道CUPS共享打印机的原理是什么。 CUPS使用原生驱动,可将多种类型的文件,如PDF,PostScript文件直接渲染成打印机支持的二进制文件。CUPS同时也支持将原始二进制流直接传送至打印机,而无需做本地文件渲染。CUPS对于输入文件流类型的支持可在mime.convs与mime.types两个文件中进行设置。 由于在Windows上安装了打印机的原生驱动,渲染操作在客户端已经完成,CUPS只需要将原始二进制流不经更改地传送给打印机,因此基本无需等待时间。而iOS使用AirPrint的原理则为将各种类型的文本图像先生成PDF文档,再将PDF传送至AirPrint打印服务器。而AirPrint服务器在收到该PDF文档后仍需要将文件渲染成打印机支持的二进制流,再将该流传送至打印机设备。因此在使用iOS进行AirPrint时实际需要对原始文件进行两次转换。同时,受到iOS与N1的处理能力限制,两次转换的效率很大程度上取决于原始文件的大小与复杂度。