背景
有一台兄弟 2260d打印机,想通过小米路由器实现局域网共享打印机。
小米BE7000路由器有docker功能,尝试折腾docker。
USB接口拓展的可行性
- 小米BE7000只有一个USB接口,但是想要同时接入硬盘和打印机,至少需要两个接口,楼主尝试了两种方式:
- 直接把笔记本的拓展坞转为USB A口,接上路由器。路由器无法识别拓展坞上的任何设备。
- 购买绿联的USB 3.0 HUB。成功识别接入路由器的多个硬盘等设备。
结论:可行。
固件
三方固件
- 没有找到合适的三方固件实践成功案例。仅能找到一些SSH折腾案例。
- 给大家分享汇总一下吧:
[1] https://post.smzdm.com/p/awz2l76g/?sort_tab=hot/#comments
[2] https://www.right.com.cn/forum/thread-8283638-1-1.html
[3] https://www.gaicas.com/xiaomi-be7000.html
[4] https://www.right.com.cn/forum/thread-8294334-1-1.html
小米低版本固件
- 一开始路由器没折腾,固件版本比较高,应该是24年8月最新的。docker中如果尝试挂载 /mnt/usb-xxxx 会提示权限不够。
- 需要替换为低版本固件 1.0.122
- 若版本高于
1.0.122
,需要使用小米路由器修复工具
降级。 - 下载地址:
https://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rc06/miwifi_rc06_firmware_7821f_1.0.122.bin
- 若版本高于
Docker
终端的开启
其实默认运行的的 simple-docker
可以认为是整个docker控制的管理者,很多命令直接在这里执行即可。
参考:
[1] https://post.smzdm.com/p/awz2l76g/?sort_tab=hot/#comments
[2] https://post.smzdm.com/p/akk9nvv8/
USB设备驱动问题
- 小米路由器自带的 simpledocker 系统支持的驱动比较少。
- 进入终端后使用
lsusb
命令可以看到打印机已经接入。- 默认的linux系统不显示打印机名称,但是可以根据windows上运行
usbipd list
命令后显示的vid:pid
来判断是否识别到。
- 默认的linux系统不显示打印机名称,但是可以根据windows上运行
- 但是在/dev中并没有 usb相关设备,如:lp, usb等描述
- 查询了一下相关资料以及GPT,初步怀疑原因是缺少内核模块
usblp
(是LP不是IP)。 - 由于缺少 yum、apt、dpkg、deb等包管理工具,折腾内核模块有点过于麻烦,没有继续折腾了。如果有朋友知道如何解决,欢迎留言。
- 楼主是第一次折腾路由器,对嵌入式设备并不是很了解。根据
https://post.smzdm.com/p/akk9nvv8/
这个帖子,一些软件的安装貌似是通过apk
命令来运行的。软件库名称应该是Alpine
。它的仓库源地址估计是https://dl-cdn.alpinelinux.org/alpine/v3.16/
这些。
- 楼主是第一次折腾路由器,对嵌入式设备并不是很了解。根据
- 查询了一下相关资料以及GPT,初步怀疑原因是缺少内核模块
- 进入终端后使用
Docker镜像的拉取
这个真的是一把辛酸泪。路由器自带的docker拉取非常不稳定,楼主尝试了几种方式:
- 在web管理页面直接输入
docker hub
中的名称拉取 (不带docker pull 命令) ,这种方式在新版本的小米固件中,多次尝试(10次左右),有概率成功。在回退后的1.0.122
无法成功。 - web管理页面有离线导入的选项,楼主通过自己挂代理pull到自己电脑后,通过
docker save
命令导出到本地,再上传的方式安装。结果同样令人遗憾。不知道什么原因,同样的docker镜像,在线获取成功的一半都正常运行,离线安装的可能会遇到 2 种情况。a). 上传后直接告知异常。 b). 上传后可以运行,但是运行一段时间后自动关闭(大约10秒钟),终端无法连接上。 - 在
sinple docker
的终端中,参考https://post.smzdm.com/p/akk9nvv8/
替换源,通过修改/etc/apk/repositories
这个文件后 运行apk update
,通过apk add docker-cli
顺利安装上了docker服务。但是docker pull xxx
依旧失败。报错信息为:
/data # docker pull ydkn/cups
Using default tag: latest
Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
- 楼主 a).尝试修改
/etc/docker/daemon.json
文件替换在其它帖子中看到的24年的源,并且重启容器,依旧无法解决问题。也b). 尝试添加了/etc/hosts
文件中registry-1.docker.io
通过dig获取的IP地址。还c). 尝试修改/etc/resolv.conf
中nameserver为8.8.8.8
和114.114.114.114
。依旧无法解决。