找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 704|回复: 2

openwrt固件中USB打印服务器频繁与佳能MG3600系列打印机失联的解决办法

[复制链接]
发表于 2025-12-9 19:09 | 显示全部楼层 |阅读模式
本帖最后由 小王同学 于 2025-12-9 19:18 编辑

理论上此教程只要是存在usb打印机空闲卸载usb功能的打印机均有效,不仅仅局限于佳能MG3600系列打印机,有相关情况的可以自行测试,最好能反馈一下是否有效。

说一下我打印机远程打印出现的症状。
打印机通过usb连接路由器开启USB打印机服务器后可以正常打印,但是过一段时间后,具体时间未测试,但不超过24小时。此时会打印失败,重启路由器可以恢复正常,但是问题一直没有解决,后来发现重启USB打印机服务器进程之后也可以连接,最后开始用自带的网络打印功能。
如果有人是这种情况的话可以按照此方法解决一下。以下是我路由器的USB打印服务器插件红框内是设备ID。



OpenWRT 中,kmod-usb-printer 是USB 打印机核心内核模块,负责让系统识别 USB 接口的打印机(包括佳能 MG3600),MG3600 需重启打印服务问题,大概率和该模块的加载、绑定或兼容性有关。

一、先确认模块是否正确安装 / 加载

1. 检查安装状态(SSH 执行)

运行

opkg list-installed | grep kmod-usb-printer

若输出空:说明未安装,执行 opkg update && opkg install kmod-usb-printer 安装;

若输出 kmod-usb-printer - x.x.x-x:说明已安装,继续下一步。

2. 检查模块加载状态

运行

lsmod | grep usblp

kmod-usb-printer 对应的内核模块名是 usblp,正常应输出:

plaintext

usblp                  20480  0

usbcore               245760  10 usblp,usbserial,...(其他USB模块)

若无输出:手动加载模块 insmod usblp,并设置开机自加载(见下文);

若加载但打印仍异常:说明模块与 MG3600 的 USB 协议不兼容(MG3600 可能用了非标准 USB 打印协议)。

二、核心修复:解决模块与 MG3600 的兼容问题

1. 禁用模块自动卸载 + 强制绑定端口

MG3600 可能因模块 “空闲自动卸载” 或 “USB 端口动态切换” 导致失联,需固定绑定:

运行

# 1. 禁止内核自动卸载usblp模块

echo "options usblp autosuspend=-1" > /etc/modprobe.d/usblp.conf

# 如果提醒-ash: can't create /etc/modprobe.d/usblp.conf: nonexistent directory则需要先创建目录,避免文件写入失败,具体命令为:mkdir -p /etc/modprobe.d

# 2. 找到MG3600的USB设备ID(替换为你的设备ID)

lsusb  # 输出示例:Bus 001 Device 003: ID 04a9:178e Canon, Inc. MG3600 series

# 记住 ID 部分:04a9:178e(你的可能不同)

# ID可以在USB打印服务里看到 具体见图片红框所示。


# 3. 强制将模块绑定到MG3600的USB端口

echo "04a9 178e" > /sys/bus/usb/drivers/usblp/new_id

# 一般而言到这一步基本上已经没有问题了。可以重启一下测试,如果不行则继续。

# 本人在这一步就结束了,然后重启了路由器,截止发帖已经20多小时,打印机一直在线,远程打印不受影响。

2. 设置模块开机自加载(避免重启后失效)

# 有usb打印服务器的固件基本上大多都有自启动规则,看情况添加。

编辑 /etc/modules.d/usb-printer 文件(无则新建):

运行

vi /etc/modules.d/usb-printer

添加内容:

usblp

保存后执行 modules-load usblp 生效,重启路由器后模块会自动加载。

3. 调整 CUPS 服务依赖(让 CUPS 等模块加载完成再启动)

# 此脚本看情况添加

MG3600 需要模块完全加载后 CUPS 才能识别,修改 CUPS 启动脚本:

运行

# 编辑CUPS启动配置

vi /etc/init.d/cups

找到 start() 函数开头,添加延迟和模块检查:

start() {
    # 等待usblp模块加载完成
    while ! lsmod | grep -q usblp; do
        sleep 2
    done
    sleep 5  # 额外延迟5秒,确保MG3600 USB设备就绪
    # 原有启动代码(如 procd_open_instance 等)保留
    ...
}

保存后重启 CUPS:/etc/init.d/cups restart。

以下部分未测试,如果到这一步还不能解决可以继续下去试一试。如果可以,请在评论区反馈效果。

三、进阶:替换兼容的模块版本(若上述无效)

部分 OpenWRT 版本的 kmod-usb-printer 对佳能 MG3600 支持不佳,可尝试:

卸载当前模块:opkg remove kmod-usb-printer;

下载对应 OpenWRT 版本的旧版 / 测试版 kmod-usb-printer(可从 OpenWRT 官网 /packages/history 找);

手动安装:opkg install /tmp/kmod-usb-printer-x.x.x-x.ipk(先上传 ipk 到 /tmp 目录)。

四、验证效果

重启路由器:reboot;

重启后检查模块加载:lsmod | grep usblp;

直接打印测试(无需重启 CUPS)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
Tarchia + 1 一看就是觉得高端、大气、上档次! ...

查看全部评分

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2025-12-24 01:16 来自手机 | 显示全部楼层
高手啊

点评

哪有 都是用豆包一点一点试的  详情 回复 发表于 2026-1-5 16:16
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2026-1-5 16:16 | 显示全部楼层

哪有 都是用豆包一点一点试的
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-24 01:20

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表