php dev usb lp0,Android中USB打印机无法创建/dev/usb/lp0节点

一、问题及问题分析

Android设备接入USB打印机,在驱动正常的情况下,却无法创建/dev/usb/lp0节点。

何以确定驱动是正常的?

接上USB打印机,在/sys/class/usbmisc/有打印机的信息

执行mdev -s命令,就会生成/dev/usb/lp0节点

接下来,通过echo命令往/dev/usb/lp0输出字符,可以打印

echo "test" > /dev/usb/lp0

至此可以确定,问题不在驱动。

问题仅仅是lp0节点没有创建。

谁负责lp0节点的创建呢?

init进程:

system/core/init/devices.cpp

static void handle_generic_device_event(struct uevent uevent)

{

if (!strncmp(uevent->subsystem, "usb", 3)) {

if (!strcmp(uevent->subsystem, "usb")) {

....

} else {

/ ignore other USB events */

return;

}

}

}

USB设备属于热插拔设备,设备的插入/移除都会产生相应的事件并上报。但上述代码在检测到uevent->subsystem不是"usb"后就直接退出了,,,而通过前述访问sysfs我们知道,USB打印的uevent->subsystem是"usbmisc"。

二、解决问题

现在我们找到了问题的原因,解决起来就容易了:

0818b9ca8b590ca3270a3433284dd417.png


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部