在系统开启并有日志打印的前提下,插入USB设备,就会打印USB设备和虚拟串口信息。

打印信息如下:

供应商ID(VID):idVendor=1234,产品ID(PID): idProduct=5678

Product、Manufacturer、SerialNumber,这三项暂时用不到。

ttyACM0:虚拟出来的串口,也有可能是ttySx、ttyGSx(x为0/1/2/3......)

  1. [ 99.373774] usb -1.3: new full-speed USB device number using usb20_host
  2. [ 99.473868] usb -1.3: New USB device found, idVendor=, idProduct=
  3. [ 99.473970] usb -1.3: New USB device strings: Mfr=, Product=, SerialNumber=
  4. [ 99.473997] usb -1.3: Product: USBKey Module
  5. [ 99.474016] usb -1.3: Manufacturer: USBKey Chip
  6. [ 99.474033] usb -1.3: SerialNumber:
  7. [ 99.483763] cdc_acm -1.3:1.0: This device cannot do calls on its own. It is not a modem.
  8. [ 99.491455] cdc_acm -1.3:1.0: ttyACM0: USB ACM device

先手动测试此虚拟串口能否使用(以虚拟串口的扫描枪为例)

  1. $ adb shell
  2. // 查看虚拟的串口是否存在
  3. root@xxx:/ # ls /dev/ttyACM0
  4. ls /dev/ttyACM0
  5. /dev/ttyACM0
  6. // 如果不是 root 权限,此时使用 su 获取 root 权限
  7. // 修改此虚拟串口为最高权限
  8. root@xxx:/ # chmod /dev/ttyACM0
  9. chmod /dev/ttyACM0
  10. root@xxx:/ # cat dev/ttyACM0
  11. cat dev/ttyACM0
  12. // 开始扫码
  13. DS610018C18021
  14. DS610018C18021

确定虚拟串口可以使用,将设备添加到代码中。

同时添加了ttyACM0-3,为了防止插入多个设备而导致虚拟串口变动。

将VID和PID添加到数组 option_ids[] 中。USB_DEVICE(VID, PID)

  1. diff --git a/device/rockchip/common/ueventd.rockchip.rc b/device/rockchip/common/ueventd.rockchip.rc
  2. old mode
  3. new mode
  4. index 34f7ad1..d82fad3
  5. --- a/device/rockchip/common/ueventd.rockchip.rc
  6. +++ b/device/rockchip/common/ueventd.rockchip.rc
  7. @@ -, +, @@
  8. /dev/i2c- system system
  9. /dev/i2c- system system
  10. /dev/i2c- system system
  11. +
  12. +/dev/ttyACM0 system system
  13. +/dev/ttyACM1 system system
  14. +/dev/ttyACM2 system system
  15. +/dev/ttyACM3 system system
  16. diff --git a/kernel/drivers/usb/serial/option.c b/kernel/drivers/usb/serial/option.c
  17. index e7ecdc3..9f1a6b6
  18. --- a/kernel/drivers/usb/serial/option.c
  19. +++ b/kernel/drivers/usb/serial/option.c
  20. @@ -, +, @@ static const struct usb_device_id option_ids[] = {
  21.  
  22. {USB_DEVICE(0x0E8D,0x00A5)},
  23. {USB_DEVICE(0x05C6,0x9025)},
  24. + {USB_DEVICE(0x1234,0x5678)},//扫描枪
  25.  
  26. { } /* Terminating entry */
  27. };

RK3288 添加USB转虚拟串口设备的更多相关文章

  1. LNMP添加、删除虚拟主机及伪静态使用教程

    一般情况下每个虚拟主机就是一个网站,网站一般通过域名进行访问.LNMP 1.2的网站添加过程和LNMP 1.1的基本类似,但是增加了FTP和数据库的创建.LNMP1.2的防跨目录也由原来在php.in ...

  2. usb gadget虚拟串口【转】

    本文转载自:https://blog.csdn.net/luckywang1103/article/details/61917916 配置 配置好之后编译重新烧写到开发板,发现出现了/dev/ttyG ...

  3. RK3288 控制usb摄像头补光GPIO

    正常可以通过添加dts配置,再从设备树中读取gpio号,在这里为了简单,直接使用GPIO号,先通过终端测试gpio, 系统自带GPIO控制驱动: 内核已经自带了通用GPIO驱动,可以直接在用户空间操作 ...

  4. Linux下使用USB模拟ACM串口设备

    这个想法之前就在脑袋里有过,最近公司产品要用到,所以多做了些了解. 1. USB 简介 USB 是 Universal Serial Bus 的缩写,从字面上看,就是通用串行总线的意思.从物理上看,其 ...

  5. [驱动]内核添加USB转串口驱动支持

    转自:http://blog.csdn.net/gatieme/article/details/49491325 目录 1. 问题 2. 驱动源码 3. 内核配置 4. 编译内核和模块驱动 5. 加载 ...

  6. VirtualBox中虚拟Ubuntu添加新的虚拟硬盘

    VirtualBox中装好Ubuntu后,发现硬盘空间不够使用 了.以下是搜集整理的解决办法: 1. 添加新硬盘 设置 -> Storage -> SATA控制器->右击,选择&qu ...

  7. 嵌入式系统USB CDROM虚拟光驱驱动程序开发

    带U盘功能的的USB接口设备已经越来越常见了.如果能够把产品说明书或者产品设备驱动程序做成一个USB CDROM,那该多方便.假设:你已经有了USB mass storage驱动.你的任务是在此基础上 ...

  8. 为嵌入式全志V3s荔枝派板卡添加USB MT7601U(小米随身WIFI)驱动

    折腾了了一天终于scan出环境热点了,感觉本来挺简单的事情,网上教程一大把还费了一天的劲,很丧.不过网上教程虽多,但是还还是有些不同之处的,现在特意总结一下 全志V3s荔枝派板卡 添加该驱动的过程. ...

  9. Ubuntu下安装VirtualBox并为其添加USB支持

    1.下载VirtualBox软件包和USB支持包 下载网址均为官方网站(可在此查看其使用教程):https://www.virtualbox.org/wiki/Downloads (若下载各平台各版本 ...

随机推荐

  1. MVC,MVVM,MVP等设计模式的分析

    从Script到Code Blocks.Code Behind到MVC.MVP.MVVM 三个模式按照大致的历史进程将这些概念进行划分: Script Code Blocks.Code Behind ...

  2. net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, but a directory!

    Caused by: net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, b ...

  3. [转载]Java生成Word文档

    在开发文档系统或办公系统的过程中,有时候我们需要导出word文档.在网上发现了一个用PageOffice生成word文件的功能,就将这块拿出来和大家分享. 生成word文件与我们编辑word文档本质上 ...

  4. Prism 4 文档 ---第7章 组成用户界面

    一个应用程序的用户界面(UI)可以通用以下几种模式之一来构建: 窗体所需要所有的控件都包含在一个单独的XAML文件中,在设计时组合这个窗体. 窗体的逻辑区域被分割到单独的部分中,通常指哟过户控件.这些 ...

  5. flowable EngineConfiguration的作用和继承关系(1)

    EngineConfiguration 是flowable引擎的核心部件. 在 flowable 中,实现引擎配置的顶层类是 AbstractEngineConfiguration 这是一个抽象类. ...

  6. BASE理论

    BASE是Basiclly Available(基本可用),Soft state(软状态),Eventually consistent(最终一致性)三个短语的缩写. BASE是对CAP中一致性和可用性 ...

  7. [Python] dict字典排序和多条件排序

    利用lambda实现排序:要实现多条件排序,只需要依次指定排序的标准,具体实现如下 counter = {'是': 1, '不是': 1, '你': 3} counter_list = sorted( ...

  8. 有关linux中,<math.h>的调用方法

    h{font-weight:bold;color:green;font-size:105%} p{font-size:100%} linux下C语言程序中,若要用到math.h中的函数(如:sin() ...

  9. 动态Json字符串的解析

    动态Json字符串的解析 对于传统的Json字符串,比如有规定属性的对象,通常都会采用反序列化的方式就可以了,例如下面的方式: DataContractJsonSerializer ser = new ...

  10. 流形-Manifold

    流形,也就是 Manifold .不知道你有没有为我在本文开头放上的那个地球的图片感到困惑?这是因为球面是一个很典型的流形的例子,而地球就是一个很典型的“球面”啦(姑且当作球面好啦). 有时候经常会在 ...