我正在尝试解决打印问题,但首先我需要描述我的环境(这有点不标准)。
我有一台 HP 1102 USB 打印机,连接到运行 CUPS 的 Ubuntu 20.04 系统,并将打印机共享到 LAN 中的其他系统。通过 IPP 从其他系统(Ubuntu 18.04、Ubuntu 20.04、Windows 10)打印可以正常工作。
我有一个运行 Android 10 的客户端,在它之上,它在同一个 LAN 的 chroot 中运行 Linux Deploy 和 Linux 18.04。linux系统有XFCE和CUPS,我配置打印机的方式和其他系统一样。
当我尝试打印(本地杯子设置为调试)时,这就是我的工作得到的:
D [25/Nov/2020:10:12:01 +0200] [Job 8] Connecting to 192.168.1.13:631
D [25/Nov/2020:10:12:01 +0200] [Job 8] Connecting to printer.
D [25/Nov/2020:10:12:01 +0200] [Job 8] Connection error: Permission denied
E [25/Nov/2020:10:12:01 +0200] [Job 8] The printer is not responding.
D [25/Nov/2020:10:12:31 +0200] [Job 8] Connecting to 192.168.1.13:631
D [25/Nov/2020:10:12:31 +0200] [Job 8] Connecting to printer.
D [25/Nov/2020:10:12:31 +0200] [Job 8] Connection error: Permission denied
E [25/Nov/2020:10:12:31 +0200] [Job 8] The printer is not responding.
我正在 cups 服务器端进行数据包捕获,当它说它正在尝试连接到打印机时没有数据包。手动连接(telnet 192.168.1.13 631
打开一个套接字和 TCP 通信工作)。
在 Android linux chroot 上运行的 CUPS 内部一定有问题,但我不知道是什么问题。本地打印作业看起来不错,/var/spool/cups 目录的文件权限看起来不错,cups 以 root 身份运行。
我不确定在哪里进一步寻找故障排除...
我正在看 android logcat 试图同时查看是否有问题,是这样的:
11-25 10:28:29.179 2980 3091 W Netd : No subsystem found in netlink event
11-25 10:28:31.012 20789 20789 I printers.cgi: type=1400 audit(0.0:785): avc: denied { ioctl } for path="socket:[151451]" dev="sockfs" ino=151451 ioctlcmd=0x8933 scontext=u:r:magisk:s0 tcontext=u:r:magisk:s0 tclass=unix_dgram_socket permissive=1
所以 - 我在想 cups 正在尝试创建一个套接字而 android 正在否认它?如果它是基于文件的套接字,有什么想法,它的名称是什么以及它在文件系统中的位置?
有什么建议么?
我设法找到解决我的问题的方法。我设法绕过了 linux 上的 CUPS(在 android 之上运行)并让系统连接到远程 cups 服务器(它在我的 LAN 上托管打印机)。我必须添加一个
/etc/cups/client.conf
包含以下内容的文件:192.168.1.13 正在运行我的实际 CUPS 服务器。现在从 Android 下的 Linux chroot 打印作品!