php dev usb lp0,Android无法自动创建USB打印机节点/dev/usb/lp0
Android: 4.4.4
一、问题分析
当把USB打印机插入Android设备后,在系统/dev目录下并没有打印机节点(/dev/usb/lp0)产生。
第一反应是查看打印机设备,接入装有Ubuntu的PC,正常:有/dev/usb/lp0
第二反应是查看打印机驱动信息:
[178931.515572] usb 1-1: new full-speed USB device number 40 using xhci_hcd
[178931.644906] usb 1-1: New USB device found, idVendor=0483, idProduct=5720
[178931.644909] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[178931.644911] usb 1-1: Product: SPRT Printer
[178931.644912] usb 1-1: Manufacturer: Spirit
[178931.644913] usb 1-1: SerialNumber: 11101800002
[178931.645918] usblp 1-1:1.0: usblp0: USB Bidirectional printer dev 40 if 0 alt 0 proto 2 vid 0x0483 pid 0x5720也正常。和PC机显示信息关键部分都一样。
驱动正常,问题在于系统无法创建节点。那么就手动创建一下!
二、问题初步解决
在嵌入式Linux系统下,可以通过mdev创建设备节点。mdev是通过扫描系统/sys/class/目录获取设备信息,进而在/dev/下创建节点。通过:
ls /sys/class/可以发现,系统中是有打印机设备的信息的:
/sys/class/usbmisc那么就可以执行下:
busybox mdev -s再次查看/dev/,惊喜的发现:/dev/usb/lp0,有了!
三、问题根本解决
经过以上探测,我们知道:
1、驱动正常
2、系统中有打印机设备信息
那么问题就是:系统无法自动为我们创建打印机节点/dev/usb/lp0
在Linux下, 跟热插拔相关的可以在/etc/init.d/rcS脚本中添加如下:
echo /system/bin/mdev > /proc/sys/kernel/hotplug
/system/bin/mdev -s但是,在Android中,跟设备节点创建相关的在文件:
system/core/init/devices.c
static void handle_generic_device_event(struct uevent *uevent)
{
if (!strncmp(uevent->subsystem, "usb", 3)) {
if (!strcmp(uevent->subsystem, "usb")) {
....
}
}
}通过在
devices.c文件中添加如下打印信息:
我们发现, USB打印机信息如下:
uevent->subsystem = "usbmisc"
uevent->device_name = "usb/lp0"而代码在找不到"usbmisc" 处理逻辑后直接return了。
至此,解决方案就出来了:
添加处理uevent->subsystem = "usbmisc"的代码:
编译, 烧写,重启,插入,Ok!
四、 测试
节点/dev/usb/lp0是有了,能不能用,还得测试呀,我们是用打印机,不是看着节点好玩。
通过echo命令往/dev/usb/lp0输出字符,可以打印:
echo "111" > /dev/usb/lp0
php dev usb lp0,Android无法自动创建USB打印机节点/dev/usb/lp0相关推荐
- Android无法自动创建USB打印机节点/dev/usb/lp0【转】
本文转载自:http://blog.csdn.net/u013686019/article/details/50165059 [html] view plain copy Android: 4.4 ...
- 新字符设备驱动实验(自动分配设备号、自动创建应用层设备节点、新字符设备注册到内核的结构体)
目录 自动分配和释放设备号 示例代码 新的字符设备注册到内核方法 字符设备结构体(前面的设备号也放进来) cdev_init结构体初始化函数 cdev_add 添加到linux内核 cdev_del内 ...
- linux mdev 命令,linux设备驱动----利用mdev(udev)自动创建设备文件节点
1.mdev的使用方法和原理: mdev是busybox 自带的一个简化版的udev,适合于嵌入式的应用埸合.其具有使用简单的特点.它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程 ...
- qt on android 桌面鼠标事件,Qt on Android 不能自动创建Qt套件的问题的解决
在按照<Qt on Android核心编程>在搭建Qt on Android开发环境的时,虽然完全按书上的做法做了好几遍,但是在Qt Creator配置Android的Qt套件时,看到Qt ...
- android自动创建桌面,Android应用启动后自动创建桌面快捷方式的实现方法
Android的开发其实是比较灵活的,其实在安装了Android应用程序之后,会在桌面上自动创建快捷方式,接下来爱站技术频道小编将会介绍Android应用启动后自动创建桌面快捷方式的实现方法给大家,有 ...
- 如何在驱动代码中中/dev目录内自动创建
在<linux /dev>文章中指出,一般驱动加载之后,需要根据申请到的字符设备号通过使用mknod命令将相对应使用到的字符驱动挂载到/dev目录内,这套方法使用起来非常麻烦,因为每次挂载 ...
- Android 每次插入U盘自动创建了不需要的文件夹
Android 11 每次插入U盘都自动创建了很多文件夹 (Podcast Ringtones Music Alarm Notification Pictures Movies Download DC ...
- 基类和派生类写在一个文件中_BootISO:从 ISO 文件中创建一个可启动的 USB 设备...
今天,我们将讨论名为 BootISO 的实用程序类似工具.它是一个简单的 bash 脚本,允许用户来从 ISO 文件中创建一个可启动的 USB 设备. -- Prakash Subramanian(作 ...
- BootISO:从 ISO 文件中创建一个可启动的 USB 设备
为了安装操作系统,我们中的大多数人(包括我)经常从 ISO 文件中创建一个可启动的 USB 设备.为达到这个目的,在 Linux 中有很多自由可用的应用程序.甚至在过去我们写了几篇介绍这种实用程序的文 ...
- linux不自动创建sda1,linux下头挂载新硬盘(转)
在Linux上添加新的硬盘 字体大小: 小 中 大 系统:Redhat AS3 UP3 硬盘:scsi 注意:# 表示是root用户执行的命令 [root@cncmail data1]# fdisk ...
最新文章
- C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid运算符
- 计算若干数据的汉明距离总和
- jenkins重启 linux_Jenkins节点重启连接失败的解决方法
- 三十一、电子商务分析与服务推荐
- 22行代码AC,三种解法——例题3-6_环状序列(UVa-1584)
- skcket编程实例
- 基于springboot的社区核酸检测统计管理系统
- 【转载】MSDN上发现了一篇很好的WCF入门教程
- 洪雅中学成绩2021高考查询,洪雅中学2021年排名
- 得一微YS9083XT量产工具及方法FW190402
- 计算机键盘能直接接手机吗,手机变电脑!智能手机外接键盘和鼠标的3种方法...
- 椭圆函数与模函数(2012.10出版)(2013-01-16 09:34:57)
- php版微信公众号消息主动推送_php实现微信公众号主动推送消息
- 三角函数 弧度角度换算
- 2021,你值得看的华为/字节/腾讯/京东/网易/滴滴面经分享
- C语言中的while(y--)什么意思,while(x)什么意思
- python按文件后缀进行分类,解放生产力
- Spark RDD编程模型及算子介绍(二)
- CDISC的SDTMIG,3.2版翻译和学习2---第二章 SDTM基础
- 疫情之下:如何高效远程办公
热门文章
- multisim 10.0安装、破解、汉化
- java 经纬度距离_java根据经纬度计算距离
- 宝峰c1对讲机写频软件_宝峰写频软件-宝峰对讲机写频软件 附USB线驱动 7.01 官方版 - 河东下载站...
- 如何将 txt 文本文件保存为 html 文件
- 一款在线画图工具的使用(推荐)
- 万能密码 php,PHP万能密码
- 单片机无线语音遥控智能车
- 基于transformer的车辆识别
- 服务器lsass系统错误,Win7系统提示Lsass.exe系统错误的原因及解决
- Ipad投屏到windows工具推荐