【官方发布】CH9344 USB转四串口芯片Linux驱动

您好,如上Log中这一行代表芯片的版本信息:

line: PRODUCT=1a86/e018/3500

也即当前版本为:Rev V3500,您可以联系我司销售同事申请新版本芯片。联系方式:http://www.wch.cn/contact_us.html 


收到,谢谢,我们这边换一下芯片再试试


请问能支持海思3516的linux吗?谢谢您!


您好,ch9344及驱动支持海思、intel、arm等linux平台。


ftdi1不支持ch9344,libusb_control_transfer 返回 -9。


你好,有一个问题:

libtty_sendbreak(fd, 0) 在ch9344貌似没有起作用,在ch34x下面调用libtty_sendbreak()有280ms左右间隔,在ch9344下面调用libtty_sendbreak()只有0到1ms的间隔。

请问这个正常吗?


打开配置代码:

char *usb_devices[4= {

"/dev/ttyWCHUSB0""/dev/ttyWCHUSB1""/dev/ttyWCHUSB2",

"/dev/ttyWCHUSB3"}; 

// char *usb_devices[1]={"/dev/ttyUSB0"};


for (int i = 0x00i < sizeof(usb_devices/ sizeof(usb_devices[0]); i++) {

fd[i= libtty_open(usb_devices[i]);

if (fd[i< 0) {

printf("libtty_open error.device : %d%s.\n"iusb_devices[i]);

exit(0);

}


printf("libtty_open device :%d%s. ok\n"iusb_devices[i]);

ret = libtty_setopt(fd[i], 25000082'n'0);

if (ret != 0) {

printf("libtty_setopt error.\n");

exit(0);

}

}


发送代码:

libtty_sendbreak(fd[index], 1);

libtty_write(fd[index], bufsizeof(buf))



您好,V1.16 驱动未提供break功能,如邮件沟通,update后提供给您这边。


各位好,驱动已更新至V1.17版本,请前往#1楼下载对应驱动,有问题随时沟通。


之前用ch340  


在Linux  怎么邦定 USB端口,对应的 串口号?

之前用ch340   在udev的规则文件中,用usb的  kernels  重新定义名称,  固定的一个 USB 对应固定的 串口号!

如下:


KERNELS=="3-3.1:1.0", SUBSYSTEMS=="usb", SYMLINK+="ttyMYUSB0"
KERNELS=="3-2:1.0", SUBSYSTEMS=="usb", SYMLINK+="ttyMYUSB1"

这个 ch9344    一个USB对应 四个 串口号,怎么识别?



您好,可使用如下udev规则实现USB位置和串口设备名称的固定。

SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="e018", MODE="0666"


KERNEL=="ttyCH9344USB0" KERNELS=="3-2.1:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="ttyCHCOM0"

KERNEL=="ttyCH9344USB1" KERNELS=="3-2.1:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="ttyCHCOM1"

KERNEL=="ttyCH9344USB2" KERNELS=="3-2.1:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="ttyCHCOM2"

KERNEL=="ttyCH9344USB3" KERNELS=="3-2.1:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="ttyCHCOM3"



例如:我电脑上有2个USB口 ,USB1  的 KERNELS=="3-2.1:1.0", USB2  的 KERNELS=="3-3.1:1.0"


KERNEL=="ttyCH9344USB0", KERNELS=="3-2.1:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="ttyCHCOM0"


  初始状态   先USB1  插入  CH9344_1(ttyCH9344USB0,ttyCH9344USB1,ttyCH9344USB2,ttyCH9344USB3) ,再USB2  插入  CH9344_2(ttyCH9344USB4,ttyCH9344USB5,ttyCH9344USB6,ttyCH9344USB7)。


ttyCHCOM0  指向 USB1的CH9344_1 的 ttyCH9344USB0。


然后  断开 USB1 的 CH9344_1和 USB2的 CH9344_2。然后再次先 USB2 插入 CH9344_2 ,USB1 插入 CH9344_1,这时 USB2的CH9344_2原来的 ttyCH9344USB4~7就会变成ttyCH9344USB0~3,USB1的CH9344_1原来的 ttyCH9344USB0~3就会变成ttyCH9344USB4~7。


ttyCHCOM0 就无法指向了




见附件中的2个rules,分别绑定不同的usb物理位置,可以实现固定端口对应固定的设备名。

icon_rar.gifch9344-udev-rules.zip



谢谢i_f48.gif可以用了


你好,我在树莓派CM4上make的时候会报错,提示ASYNCB_INITIALIZED这个变量未声明(在ch9344.c这个文件的2002行和2032行),然后我也没找到这个变量在哪声明的。求问解决方法。


只有登录才能回复,可以选择微信账号登录