CM311-1a搭建家庭打印服务器

前言

家里的打印机是惠普M1005 MFP这款非常经典的激光一体机,皮实耐造并且耗材非常便宜。而这台机器似乎确实已经老了,只支持USB有线连接使得其无法方便的与其他设备共享,最早是用USB连接到主力台式机上,用Windows自带的打印机共享将其分享给家里其他电脑,但这样做必须保证电脑开着,只能分享给其他Windows电脑,而不支持苹果和安卓设备,并且Windows的共享功能也不是非常稳定。于是我一直在寻找一个真正适合我的打印机共享方案:

  • 多平台兼容:支持Windows、Linux、Android以及Apple AirPrint;
  • 多功能:同时支持打印和扫描功能的共享;
  • 低成本:学生党,便宜是必须的;
  • 始终在线:不需要特意打开设备就可访问打印机,并且功耗要低;
  • 高可玩性:支持功能扩展。

然后我尝试用我的树莓派成功搭建了打印和扫描共享,但这学期做毕设需要用到它,于是我看上了CM311-1a这款电视盒子。它搭载Amlogic S905L3a这款SoC,大概是去年从某些渠道流出了大量全新库存机,可以刷入Armbian等操作系统,因此具有很多玩法。这款盒子只有百兆网口,不适合做软路由,所以价格也一直较低,但当做打印服务器是非常足够了。因此在咸鱼60块钱入手了这个盒子的2+8版本(之前这个价格能拿下2+16的,但8G容量刷Armbian也够了)。

硬件配置

  • SoC:晶晨 S905L3a,四核Cortex-A53 @ 1.8GHz;
  • RAM:2GB 32bit LPDDR4;
  • ROM:8GB eMMC 5.1;
  • 接口:HDMI 2.0 * 1、模拟音视频 * 1、USB 2.0 * 2、12V 1A电源输入 * 1。

设备上手

HDMI连上采集卡,插上网线,插电、开机,屏幕轻松点亮!

CM311系列作为运营商的IPTV盒子,原厂系统功能是极为受限的,咸鱼上的CM311系列大都由卖家破解好了,安装当贝桌面,买来可以当作普通的电视盒子使用。但我们很快就要干掉内置的安卓系统。

默认桌面

为了方便折腾,刷入Armbian、CoreELEC或者EmuELEC等第三方系统,卖家也安装好了外置启动和ADB开启入口。

应用列表

ADB入口

这个机器内置了两个系统设置,一个是运营商版本的设置菜单,和各地IPTV或者有线的安卓盒子的设置项别无二致,密码是10086;另一个是安卓系统的原生设置。

系统设置密码

插上网线能够自动通过DHCP获取局域网IP。这时先不要在路由器绑定盒子的IP和MAC,进入Armbian后MAC地址会变成另一个。

IP获取

刷入Armbian

所需材料

  • CM311-1a一台
  • 8G以上的U盘
  • USB键盘
  • 有线网络连接
  • HDMI接口的显示设备

下载固件

首先下载适用于CM311-1a的Armbian固件:https://github.com/ophub/amlogic-s9xxx-armbian/tags
选择最新的,点进去应该有很多img.gz格式的镜像文件,如果没有就换另一个。
Jammy版本采用Ubuntu 22.04 LTS底层,Bullseye版本采用Debian 11底层,一般来说Ubuntu底层能用的软件包会更多,Debian底层的依赖关系会更精简,占用更低。这里我选的是Jammy

Tags

进入镜像列表,下载Armbian_23.02.0_amlogic_s905l3a_jammy_5.15.98开头的文件。如果你的盒子是其他的SoC,则选择对应的就可以。这里还有6.1内核的镜像,但目前新内核在CM311-1a上还有很多bug,5.15内核会更稳定。

下载

制作安装U盘

需要一个软件:BalenaEtcher
插入U盘,打开Etcher,加载镜像(不需要解压),然后点击Flash!等待镜像写入完成即可。
注意:U盘里的所有数据将被清除。

U盘启动到Armbian

盒子开机,进入安卓系统,并插入U盘。卖家在我的机器上安装了外置启动,打开这个应用并确认就能自动从U盘启动。
如果你的盒子没有这个选项,可以用开心电视助手进行U盘引导。
稍等一会就能进入U盘上的Armbian系统。首先会提示创建你的root密码,这里可以直接 Ctrl + C 取消:

Welcome to ARMBIAN!

U盘系统的用户名默认为root,密码为armbian

安装Armbian到eMMC

执行armbian-install
稍后会提示Start selecting device...,需要选择正确的Device tree使硬件都能正常工作。这里输入305并回车,即CM311-1a-YST,而2+8版本CM311-1a-CH与YST版本只是容量和代工厂不同,极少数安卓固件会有不兼容的问题,但Armbian这些基于GNU/Linux的固件是完美兼容的。之前的教程会建议选择304,最新版本给CM311系列增加了单独的Device tree,兼容性会更好。

install1.jpg

接下来会询问文件系统类型,可以选择ext4btrfs,实际上在盒子上这两种文件系统的区别并不大,这里选择了ext4,输入序号1并回车。
如果要放弃安装,这是最后的机会,这一步之后eMMC会被清空!

install2.jpg

接下来安装脚本会刷入Armbian专用的bootloader,重新分区并写入新的系统文件。
看到绿色的SUCCESS即代表安装成功,此时关掉电源,拔下U盘并重新打开电源以进入新的Armbian系统。

install3.jpg

按下电源键会花屏几秒钟,然后开始跑码:

开机跑码

配置Armbian系统

上一节安装好了Armbian,接下来进行一些必要的安装后设置。

修改Root密码

系统默认用户名为root,密码为armbian。要改成自己的密码,在登录后执行

# passwd root

输入两遍新密码。

配置网络

Armbian默认同时开启了NetworkManager和系统内置的/etc/network/interfaces进行网络配置,这两个配置会起冲突,导致开机时卡在Raise network interfaces,一分半之后会报FAILED,非常影响开机速度。

解决方法也很简单,注释掉/etc/network/interfaces里面所有设置项即可,然后让NetworkManager管理系统网络连接,比较智能。

# nano /etc/network/interfaces

以下是文件的默认内容,这里需要把所有行都注释掉。

默认配置文件

然后 Ctrl + O 再按回车保存, Ctrl + X 退出编辑器。
此时可以配置固定IP:运行一下ifconfig,找到盒子在Armbian下的MAC地址(和安卓系统下面和机器底壳上的MAC不同),再到路由器后台绑定自己需要的IP。
重启一下盒子并登录,可以在欢迎页面看到盒子的IP地址,这时就可以拔下显示器和键盘,使用你喜欢的SSH终端访问盒子命令行了。

motd

更改软件源

Armbian默认使用国外软件源,访问速度可能会很慢,因此建议更改为国内镜像源。
以下命令是将Armbian改为使用中科大软件源,比较稳定,如果希望使用其他软件源可参考更改。

# sed -i 's@//.*ports.ubuntu.com@//mirrors.ustc.edu.cn\/ubuntu-ports@g' /etc/apt/sources.list     # Ubuntu底层
# sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list       # Debian底层
# sed -i 's@//.*apt.armbian.com@//mirrors.ustc.edu.cn\/armbian@g' /etc/apt/sources.list.d/armbian.list

然后刷新软件源缓存,验证软件源更改是否成功:

# apt update

屏蔽内核更新

ophub版本的Armbian使用自定义的flippy内核,而系统默认会在执行apt upgrade时替换成最新官方内核,导致无法引导,因此需要单独屏蔽内核相关软件包的更新,同时不影响其他软件和安全更新的安装。

# apt-mark hold armbian-config armbian-firmware linux-dtb-current-meson64 linux-image-current-meson64
# apt update && apt upgrade     # 此时可以放心更新系统

配置打印共享

Armbian进行打印机共享,需要三个组件:

  • cups:Common Unix Printing System,可以理解成系统管理打印机和打印任务的框架;
  • avahi:能让客户端发现打印机;
  • hplip:惠普打印机的驱动,其他品牌的打印机可能有它们自己的驱动。

安装cupsavahi

# apt install cups cups-client cups-filters cups-ipp-utils cups-browsed colord
# systemctl enable cups
# systemctl start cups
# apt install avahi-daemon
# systemctl enable avahi-daemon
# systemctl start avahi-daemon

安装hplip并配置打印机

# apt install hplip

打印机通过数据线连接到盒子,然后执行打印机配置:

# hp-setup -i

首先会询问连接类型,这里使用USB,直接回车,几秒钟后会检测到设备,记住hp:/usb/开头的设备名:

Set Connection (I/O) Type

然后会询问下载插件,直接回车即可:

Plug-in Installation for HPLIP

许可协议,太长不看系列,输入y并回车以同意:

License Agreement

配置打印队列,里面的几个默认即可:

Print Queue Setup

配置结束,建议打印测试页,当然是轻松打印成功了:

Printer Test Page

HPLIP测试页

配置cups

cups默认是禁止打印机共享的,我们需要更改一些设置。编辑配置文件:

# nano /etc/cups/cupsd.conf

使用 Ctrl + W 查找设置项并修改:

- `Browsing`改为`On`;
- `Listen localhost:631`改为`Port 631`;
- 搜索`Restrict access to the`,将以下两个代码块修改为:
    # Restrict access to the server...
    <Location />
      Order allow,deny
      Allow @LOCAL
    </Location>

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

- 最后一行加上`ServerAlias * Port 631 Listen /var/run/cups/cups.sock`

Ctrl + O 、回车、Ctrl + X 保存并退出;最后重启cups

# systemctl restart cups

接下来添加打印机到cups:浏览器打开http://IP地址:631,首先进入Administration选项卡,再点击Add Printer
如果提示“需要升级”,则输入你的root用户名和密码:

CUPS Administration

选择Local Printers里面有HPLIP的一项,只有这个能够调用惠普驱动,点击Continue继续:

Add Printer Step 1

这里设置打印机的名称等属性,保持默认即可,确保勾选了Share This Printer

Add Printer Step 2

最后一步,保持默认即可,点击Add Printer完成打印机的添加。

Add Printer Step 3

回到Administration选项卡,勾选这两个选项,并点击Change Settings

Add Printer Step 4

同样是在Administration选项卡,选择Manage Printers - 打印机名称 - 第一行第二个下拉框 - Set Default Options,然后将Media Size设置成A4,否则在AirPrint下将无法按照A4尺寸打印。。

设置默认尺寸

Windows端配置

浏览器打开http://IP地址:631,首先进入Printers选项卡,在Queue Name一栏中找到打印机,右键选择复制链接。

以Windows 11系统为例,先安装好惠普的Windows端驱动(下载安装包或者从Windows Update获取),打开设置 - 蓝牙和其他设备 - 添加设备,此时应该能搜索到打印机,但这个在Windows下是无法添加的,几秒钟后点击手动添加

手动添加打印机

选择按名称选择共享打印机,粘贴刚才复制的链接,点击下一页

输入链接

选择对应打印机型号的驱动,例如这里是HP LaserJet M1005 Class Driver,点击确定

选择驱动

添加完成,根据需求可以勾选设置为默认打印机,然后打印测试页:

完成添加

Win11测试页

这样就可以在Word、Chrome等应用下面访问打印机了,然后依次在其他电脑上添加打印机,经测试XP及以上版本都支持,2000系统虽然支持IPP协议但是无法连接到打印机。

iOS端配置

几乎不需要配置,只要与盒子连入同一个局域网,各个应用的打印选项内就可以找到共享的打印机。只是需要注意一下纸张大小,否则打印尺寸会很奇怪。

配置扫描共享

使用sane (Scanner Access Now Easy) 进行扫描仪的共享。

安装sane并编辑配置

# apt install sane sane-utils xsane sane-airscan

编辑配置文件:

# nano /etc/sane.d/saned.conf

增加或取消注释需要由saned监听的网段,例如局域网网段为192.168.0.1/24:

#192.168.0.1
192.168.0.1/24
#[2001:db8:185e::42:12]
#[2001:db8:185e::42:12]/64

保存退出。

# nano /etc/sane.d/net.conf

加入一行localhost

启动sane服务:

# systemctl enable saned.socket
# systemctl restart saned.socket

sane查找可用的扫描仪:

# scanimage -L

对于惠普一体机则是查找hpaio:/usb/开头的设备,记下地址:

device `hpaio:/usb/HP_LaserJet_M1005?serial=KJ2NFMB' is a Hewlett-Packard HP_LaserJet_M1005 all-in-one

Windows端配置

需要一个软件:WiaSane,通过虚拟扫描仪设备,让基于WIA接口的应用(例如Windows传真与扫描)连接到sane共享的扫描仪。接下来以Win7虚拟机为例,实际上其他版本也能完美支持。

安装时可能会提示驱动程序没有签名,选择始终安装此驱动程序软件

需要选中始终安装此驱动程序软件

接下来开始配置扫描仪,首先重新插拔一下打印机(这样才能识别到),输入盒子的IP地址,端口保持默认的6566,点击下一步

Hostname or IP address

Available scanner devices中选择hpaio:/usb/开头的设备,用户名密码默认为空:

Available scanner devices

完成扫描仪的安装。

完成安装此设备的驱动程序软件

测试一下:

随便扫描一张

存在两个bug:无法调整纸张大小、调整亮度无作用,不过不是很影响使用。

参考资料

  1. Ubuntu也能做NAS(1)——文件共享服务和打印机服务
  2. SaneOverNetwork - Debian Wiki

$ EOF.

本文标题:CM311-1a搭建家庭打印服务器
本文链接:https://www.jyzb01.com/2023/03/12/cm311-1a-home-print-server/
授权协议:署名-非商业性使用-相同方式共享 4.0 (CC BY-NC-SA 4.0)
转载或引用请标明出处为本站,不得用于商业用途,并以相同协议共享。严禁CSDN/采集站采集转载。

评论

  1. lau
    Macintosh Chrome 111.0.0.0
    2 年前
    2023-3-18 17:31:19

    咱家用的是惠普1020同款机芯的佳能2900,Linux下好像没有办法驱动佳能专有的CAPT (Canon Advanced Printing Technology) 打印接口,折腾了半天最后放弃了,换了台爱普生的墨仓式(

    • 博主
      lau
      Windows Chrome 111.0.0.0
      2 年前
      2023-3-18 19:13:35

      机芯一样驱动板不一样是吧(
      其实现在新的打印机基本上都内置局域网功能,也就没必要折腾这个了(

  2. 御枫林下
    Windows Firefox 125.0
    7 月前
    2024-5-07 17:35:11

    Linux方案好评,咱想玩玩用路由器的OpenWrt方案,有建议嘛(
    打印机是brotherMFC7360,这玩意插在HUB上电脑闪来闪去,有点担心兼容问题(

    • 博主
      御枫林下
      Windows Chrome 124.0.0.0
      7 月前
      2024-5-07 21:43:59

      OpenWrt支持p910nd和cups,但是p910nd我记得好像只支持惠普还是佳能的机子来着,cups的话你必须有持久存储(比如overlay分区)才好用,并且编译固件的时候最好直接就带上,总体来说还是不如正常Linux来得方便

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇