旧式有线打印机联网探索

旧式有线打印机联网探索

小米 mini 路由器刷机刷入 OpenWrt 后作为中介,通过打印机的 USB 接口与 OpenWrt 进行交互,实现有线打印机联网

材料准备

  • 硬件
    • 小米 mini 路由器
    • HP JetLaser 1020 打印机一台
    • U 盘一枚(可以使用读卡器插入 TF 卡代替)
  • 软件
    • XShell / Xftp

实践步骤

给小米 mini 刷入 OpenWrt

本步骤主要参考资料

小米路由器mini刷openwrt - 简书

预先准备

  • 取卡针(牙签或回形针,用于按压 Reset 复位键)
  • 网线两根(一根插入 wan 口用于后续更新路由器,一根插入 lan 口用于刷入原生 OpenWrt 后默认未开启 Wifi 功能时进行通讯
  • 路由器官方开发版 ROM 以及官方开启 SSH 补丁
    • 刷入路由器需要先进行路由器的账号绑定(下载 SSH 工具也需要该步骤),绑定在个人的小米账号下表示该路由器后续操作由个人承担
    • 官方开发版 ROM 下载地址,选取合适版本的路由器开发版 ROM,可同时下载稳定版 ROM 作为备用恢复的 ROM
    • 官方开启 SSH 补丁下载地址,需要绑定路由器的登录账号,因此完成下文《绑定路由器》步骤再进行下载
  • 下载对应路由器的 breed 包,用于创建恢复固件的环境,下载地址,小米路由对应的 breed 包为 breed-mt7620-xiaomi-mini.bin
  • 下载对应路由器的 OpenWrt 插件,注意选择正确的版本,
    • OpenWrt 发行版区别 - CSDN
    • OpenWrt 下载 - 清华镜像源,下载依次点击 ramips - mt7620,选择下载 openwrt-21.02.3-ramips-mt7620-xiaomi_miwifi-mini-squashfs-sysupgrade.bin
    • 使用原生 OpenWrt,刷入第三方 OpenWrt 后因版本问题有可能导致无法更新和下载,遇见该问题需要重回 breed 重新刷入固件

绑定路由器

连接路由器,WAN 口连接公网,手机连接该路由器后根据提示下载(或直接应用商店下载)小米 WiFi app,点击右上角 + 选择添加新的路由器然后按照提示操作绑定到小米账号

绑定路由器完毕后进行 ssh 工具包的下载,注意记录对应路由器的 root 密码后续步骤会用到

在这里插入图片描述

路由器更换至开发版

绑定完毕后电脑连接路由器,使用浏览器进入后台(默认小米路由后台为 192.168.31.1),输入密码登录后台

点击右上角的下拉菜单,选择 系统升级 - 手动升级,选择上一步准备的开发版 ROM(我的版本为 miwifi_r1cm_firmware_2e9b9_2.21.109.bin,使用最新版本即可)

在这里插入图片描述

如果忘记路由器密码,可以参考官网的使用 U 盘来刷机,刷机帖 - 小米社区。值得一提的是,使用 U 盘这种方式更新系统会删除硬盘中的所有数据。

刷入过程中蓝灯会变为黄灯闪烁,闪烁完毕后变为黄色,等一段时间后会重新变为蓝色

刷入完毕后重新连接路由器(可能需要重新初始化,若需要则重复手机连接路由器步骤重新初始化即可),检查系统版本是否为开发版

使用 刷机帖 - 小米社区 的方式进行刷机,否则无法正常开启 SSH

开启 SSH 功能
  1. 将官网下载的用于开启 SSH 工具 bin 文件 miwifi_ssh.bin 复制到U盘的根目录下,保证文件名为miwifi_ssh.bin 且目录中不存在其他 .bin 文件
  2. 断开小米路由器的电源,将 U 盘插入 USB 接口
  3. 按住 reset 按钮之后接入电源,指示灯变为黄色闪烁时再松开 reset 键(灯变为常亮黄色代表正常执行,变为红色代表读取失败)
  4. 等待 3 - 5 分钟,小米路由器会自动重启,指示灯变蓝了表示成功

即使是同型号的不同路由器的 miwifi_ssh.bin 不一样!!!必须针对的下载!!!否则不识别

刷入 Breed

Breed 是由网友开发的一个号称“不死”的引导加载程序。只要路由器成功刷入 Breed 之后,就可以借助它来备份和刷入路由器固件。

  1. 路由器断电,将U盘拔出
  2. breed-mt7620-xiaomi-mini.bin 文件名更改为 breed.bin,复制到 U 盘根目录,并保证 U 盘根目录没有其他 bin 文件
  3. 路由器插入 U 盘,插电启动,在终端里输入 ssh root@192.168.31.1 回车(登陆密码在下载 SSH 的网站内获取)连接你的路由器
  4. 输入指令 mtd -r write /extdisks/sda1/breed.bin Bootloader

在这里插入图片描述

  1. 出现以上提示时,路由器断电,拔出 U 盘,指示灯蓝灯闪烁时松开 Reset 键,运行时保持蓝灯闪烁
  2. LAN 口插入网线,另一端连接电脑,浏览器输入 192.168.1.1 见到 Breed Web 代表刷入成功
刷入 OpenWrt
  1. 进入 Breed 管理页面
  2. 点击 固件备份,分别备份 EEPROM编程器固件 方便未来恢复
  3. 点击 固件更新,勾选 固件,选中 OpenWrt 固件包 openwrt-21.02.3-ramips-mt7620-xiaomi_miwifi-mini-squashfs-sysupgrade.bin,点击 上传 ,点击 更新 等待进度条完成
  4. 更新完毕后插拔网线,访问 192.168.1.1 若进入 OpenWrt 界面则刷入完成
其他配置
  • 修改密码
    • administartion 选项
  • 更换清华镜像源
    • 通过命令行 ssh root@192.168.1.1 登录 OpenWrt 后输入 sed -i 's_downloads.openwrt.org_mirrors.tuna.tsinghua.edu.cn/openwrt_' /etc/opkg/distfeeds.conf 即可完成更换
    • OpenWrt 下载使用 opkg,默认不包含 nano / whereis
      • opkg update 下载更新列表并完成更新
      • opkg install [包名] 下载安装包并安装,由于 OpenWrt 自带的 Luci 在线桌面中包含 system - software 菜单栏,可以使用图形化的方式进行下载
    • 更换镜像源后建议的操作
      • 下载 whereis / nano
      • 更换 Luci 界面语言为中文
        • opkg update
        • opkg install luci-i18n-base-zh-cn
  • 修改 OpenWrt 默认 IP 地址,可选
    • nano /etc/config/network,将其中的 lan 选项的 ipaddr 改为需要的 ip 后重启 OpenWrt 即可
  • 追加 SFTP 服务 - 知乎
    • opkg install vsftpd openssh-sftp-server 下载管理及 sftp 服务端
    • /etc/init.d/vsftpd enable 允许开机启动
    • /etc/init.d/vsftpd start 启动服务
  • 默认开启 Wifi 无线连接
    • /etc/config/wireless 文件管理无线配置
      • config wifi-deviceoption disabled 不存在则增加,设置为 0 则默认开启,设置为 1 则默认关闭
      • config wifi-ifaceoption encryption 设置加密选项,无密码设置为 none,设置密码设置为 wpa 且追加配置 option key '你的密码'
      • 配置失误时可以使用 rm -f /etc/config/wireless ; wifi detect > /etc/config/wireless 重置配置
    • Luci 的无线配置中选择 SSID: OpenWrt | 模式: Master 的编辑按钮,在高级设置中将无线信号覆盖密度改为 正常保存并应用
    • 配置完毕后 reboot 生效
  • 其他指令
    • cat /proc/version 查看系统信息

OpenWrt 连接打印机

本步骤主要参考资料

USB 打印服务配置

驱动配置及连接打印机

预先准备

  • Linux 端驱动 sihp1020.dl,下载后改名为此名称
  • Windows 端驱动(安装但不使用,由于实际连接的是 OpenWrt 即 Linux 系统,因此该驱动仅用于跳过配置流程(是否可以直接不安装此驱动?未进行尝试))
  • 驱动脚本文件 10-usb-printer
#!/bin/bash
FIRMWARE="/etc/sihp1020.dl"
LOG="/tmp/sihp1020-log"
if [ "$PRODUCT" = "3f0/2b17/100" ]
then
	sleep 3
	if [ "$ACTION" = "add" ]
	then
		echo "`date '+%Y-%m-%d %H:%M:%S'`: HP LaserJet 1020 add" >> $LOG
		cat $FIRMWARE > /dev/usb/lp0 || echo "`date '+%Y-%m-%d %H:%M:%S'`: HP LaserJet 1020 init failed" >> $LOG || echo "`date '+%Y-%m-%d %H:%M:%S'`: HP LaserJet 1020 init success" >> $LOG
	elif [ "$ACTION" = "remove" ]
	then
		echo "`date '+%Y-%m-%d %H:%M:%S'`: HP LaserJet 1020 remove" >> $LOG
	else
		echo "`date '+%Y-%m-%d %H:%M:%S'`: HP LaserJet 1020 $ACTION" >> $LOG
	fi
fi

添加打印服务
  1. 下载需求的依赖包
opkg update # 读入软件列表
# 好像每次 reboot 都会清除软件列表,history 也无记录
opkg install p910nd # 安装功能模块
opkg install kmod-usb-printer # 安装打印支持
# opkg install libusb # usb 接口支持,安装失败
opkg install usbutils # usb 接口支持
opkg install luci-app-p910nd # Luci 管理界面
  1. 配置 p910nd 模块,建议手动配置
    • p910nd - OpenWrt Docs
    • enable '1' 代表启用服务,默认值为 0
    • port '2' 代表监听的端口,基准值为 9100,范围为 0-9 即允许端口为 9100-9109
    • bidirectional '0' 必须设置为取消即配置为 0(由于 HP LaserJet 1200 不支持该功能),否则将无法停止打印,默认值为 1 即开启双向读出功能

这里端口默认9100即可,**HP1000、1005、1018、1020、P1005、P1006、P1007、P1008、P1505这些型号打印机,不要勾选双向模式,不勾选,**否则打印一旦开始,无法停止,就算你打印一个测试页,也停不下来。

# 进行手动的修改,p910nd 的配置文件位置在 /etc/config/p910nd

config p910nd
	option device '/dev/usb/lp0'
	option runas_root '0'
	option mdns '0'
	option mdns_ty 'My Printer Manufacturer/Model'
	option mdns_note 'Basement'
	option enabled '1'
	option port '2'

# 保存文件后检查文件内容无误后
/etc/init.d/p910nd enable # 启用服务
/etc/init.d/p910nd start # 启动服务

在这里插入图片描述

实际配置过程中由于未知原因,图形化配置的内容未实际写入配置文件,改为手动修改配置文件后生效

测试 Linux 驱动
  1. 将打印机通过 USB 连接线连接到路由器并开机
  2. 通过 XFtp 连接到路由器,复制 sihp1020.dl 到 OpenWrt 的 /etc 目录下
  3. 使用 lsusb 检查打印机的 pid / vid 是否为 03f0:2b17 以及进入 /dev/usb 中是否存在 lp0 且属性为 crw-rw----
  4. 执行 cat /etc/sihp1020.dl > /dev/usb/lp0 将驱动送入打印机,若有响应则代表连接成功
添加无线打印机服务

驱动配置及连接打印机的 Windows 端配置部分

Windows 端配置同样需要取消勾选双向打印

在选择驱动的步骤选择不覆盖打印机驱动!

设置热插拔选项
  1. /etc/hotplug.d/usb 中新增文件 10-usb-printer
    • 可以通过 XFtp 服务将文件拷贝到该目录下
    • 拷贝完毕后 cat 检查文件是否有乱码
  2. 检查 sihp1020.dl 是否存在于 /etc 目录中
  3. chmod +x /etc/hotplug.d/usb/10-usb-printer 追加文件执行权限,增加了执行权限才允许被调用
  4. /etc/init.d/p910nd reload 至此可以热插拔重复写入固件

其他配置信息

  • 以下为完成配置后的各项配置信息
    • OpenWrt 后台设置在 192.168.5.1 ,配置文件路径为 /etc/config/network,修改其中的 LAN 的 IP 配置
    • Wifi 名为 OpenWrt,未设置密码,配置文件路径为 /etc/config/wireless
    • 设计的脚本要求配置的设备占用为 /dev/usb/lp0,使用的设备 VID/UID3f0/2b17/100 ,脚本路径为 /etc/hotplug.d/usb/10-usb-printer
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值