首先安装包含 lsusb 命令的 usbutils, emerge -v usbutils.

使用 lsusb后,可以查看到 ch340 的信息:

Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

然后在内核中开启 USB-ACM, 位置在 Device Drivers -> USB support (USB_SUPPORT [=y]) -> Support for Host-side USB (USB [=m]) -> USB Modem (CDC ACM) support (USB_ACM),

重新编译后,在 /dev 中还是找不到 ttyusb0, 使用 dmesg 有错误提示:

[  172.647083] ch34x: Unknown symbol usb_serial_port_softint (err 0)
[ 172.647136] ch34x: Unknown symbol usb_serial_deregister_drivers (err 0)
[ 172.647150] ch34x: Unknown symbol usb_serial_register_drivers (err 0)

继续在内核中寻找,发现 usb 有以下的选项:

-->[m] usb serial convert support
-->[*] usb generic serial driver
-->[m] usb winchiphead ch341 single port serial driver
-->[m] usb ftdi single port serial driver
-->[m] usb prolific 2303 single port serial driver

重新编译内核和模块,多了 usbserial,ch341,ftdi_sio,pl2303,usb-serial-simple 这几个模块。

然后重启系统后,插入 usb,自动加载了 usbserial 和 ch341 模块,同时 /dev/ttyUSB0 也出来了。

初步判断,可能不需要 usb-acm 模块。

对于CH340,内核里面有相应的驱动,所以不需要从官网上面下载驱动CH341SER_LINUX,而且官网驱动直接编译有错误。github 上面修改后的驱动 juliagoda/CH341SER

https://github.com/juliagoda/CH341SER

CH341SER-master 也是不需要的,直接用内核驱动即可。

把CH340 编译为内核模块后,不需要其他设置,直接插入 usb,会自动加载 usbserial, ch341 内核模块。

串口调试工具下载了 minicom, putty, ckermit。minicom 中可以设置使用 ckermit 来进行 kermit 的传输。先按照网络上面的教程创建了 .kermrc 文件,增加内容:

set line /dev/ttyUSB0      //如果是串口就是ttyS0

set speed 115200

set carrier-watch off

set handshake none

set flow-control none

robust

set file type bin

set file name lit

set rec pack 1000

set send pack 1000

set window 5

然后输入 kermit 启动软件,提示 /var/lock: Permission denied, 没有相应的权限。

gpasswd -a $USER uucp
gpasswd -a $USER lock

如果提示有用户组不存在,那么使用 groupadd 命令来添加新的用户组,查看已有的用户组可以直接用

groupadd 用户组
cat /etc/group | grep 用户组

别忘了退出当前的终端重新进入,这样就有相应的权限了。

把 USB2SER 模块的 232 的RXD和TXD短接,进行回环测试。

使用 ckermit 发现只能使用 ASCII 进行传输,putty 也是只能用 ASCII 传输。只能试试 minicom,发现 minicom -H 只能输出16进制,输入还是不能16进制,只能重新寻找串口软件。

找到了16进制的串口软件是 cutecom 和 xgcom,gentoo 中直接直接安装 cutecom, emerge -v cutecom。

cutecom 中配置后,可以有时间戳,16进制和ASCII 同时显示,输出作为 log 文件,保存到相应的目录,但是只能在关闭软件后自动保存。还是比较希望能有软件按照时间把输入输出一起保存下来。不过暂时 cutecom 也够用了。

gentoo usb serial ch340 16进制读写的更多相关文章

  1. pyserial 16进制显示与发送

    pyserial 16进制显示与发送 http://www.centoscn.com/python/2013/0817/1320.html 十六进制显示的实质是把接收到的字符诸葛转换成其对应的ASCI ...

  2. java利用16进制来辨别png格式的图片

    很多人知道利用.png的字符串结尾可以判断前端传入的图片是否为png格式,但是这只是潜意识的判断!那么如何利用png读写的特殊内容来深意识地判断图片格式呢?最近在做东西的时候遇到了点问题,在加载图片的 ...

  3. 16进制ascii码转化为对应的字符,付ipmitool查询硬件信息

    最近工作需要在用ipmitool查询服务器硬件信息.ipmitool查询硬件信息 比如电源,使用命令: 获取PSU0信息:Ipmitool raw 0x3a 0x71 0x00: 获取PSU1信息:I ...

  4. iOS根据16进制的色号来设置颜色,适合封装工具类

    iOS中有时候UI给的一个色号就像 #54e1b7 这个,而我们一般设置颜色都是根据RBG来设置的,所以这里需要把这个16进制的色号转为RGB值,这里我们就使用一下的方法来调用设置颜色. + (UIC ...

  5. Emacs 16进制模式

    http://blog.163.com/lan_ne/blog/static/1926701702012112272840545/ ALT+X hexl-mode   进入16进制模式 在这一模式,直 ...

  6. PHP 通过Socket收发16进制数据

    最近在php下做关于Socket通讯的相关内容,发现网络上好多人在了解如何进行16进制收发,研究了下,代码如下,欢迎拍砖. <?php        $sendStr = '30 32 30 3 ...

  7. 使用AS3输出ByteArray为16进制

    package { import flash.utils.ByteArray; /** * 输出ByteArray为16进制 * @author Rise */ public class Byte2H ...

  8. js字符串与16进制互相转换

    // \x65\x76\x61\x6c是否启用\x加密 <script type="text/javascript"> function JavaDe() { var ...

  9. 16进制字符串转换为3进制(扩展至K进制)

    [本文链接] http://www.cnblogs.com/hellogiser/p/16-to-3-or-k.html [题目] 写代码把16进制表示的串转换为3进制表示的串.例如x=”5”,则返回 ...

随机推荐

  1. tensorFlow(二)线性回归

    需要TensorFlow基础,见TensorFlow(一) 原理默认了解不赘述 实例: 模型创建: #!/usr/bin/python # -*- coding: utf-8 -* import te ...

  2. Charles抓包基本用法

    Charles抓包 浏览器发送和接受的所有请求都可以抓到 1.可以定位问题(如果看不出来是服务端问题还是前端问题) 2.可以设置弱网模式 清空请求按钮如图: 抓包: 1 打开charles,在浏览器中 ...

  3. Oracle 创建存储过程 提示权限不足或者提示表和视图不存在问题

    grant create view to hospital; --授予查询权限 grant select any table to hospital; --授予权限 grant select any ...

  4. VS2013/VS2015/VS2017通过oschina托管代码

    1.到http://git.oschina.net注册账号,创建项目,这一步不做详细描述,创建后效果如图 2.打开VS创建项目,为了测试,创建一个空白解决方案 3.把解决方案添加到源代码管理(这一步仅 ...

  5. ArcGIS统计栅格像元值并转换为矢量图层

    很多时候,我们需要得到矢量数据区域所对应栅格数据的像元统计值(求平均.求和等),然后将获得的统计值赋给矢量图层的属性表,在ArcGIS中操作如下:(PS:第一次写技术文章,望大家多多体谅与支持,么么哒 ...

  6. eval函数解析json数据时加上圆括号的原因

    var temp = eval("(" + data + ")"); //解析json数据 json是以”{}”的方式来开始以及结束的,在JS中,“{}”会被当 ...

  7. android active间数据传递

    Bundle是key-value存储. Bundle bundle=new Bundle(); bundle.putString("key", "value") ...

  8. Python全栈之路----常用模块----random模块

    程序中有很多地方需要用到随机字符,比如登陆网站的随机验证码,通过random模块可以很容易生成随机字符串. >>> import random >>> random ...

  9. linux下安装mysql解决乱码、时间差、表的大小写问题

    编辑vi /etc/mysql/my.cnf,有的则是:/etc/my.cnf,加入 [client]default-character-set=utf8mb4 [mysql]default-char ...

  10. cordova最小化app插件的使用: cordova-plugin-appminimize

    1. 添加插件:cordova plugin add cordova-plugin-appminimize 2.调用方法: window.plugins.appMinimize.minimize(); ...