android手机与ubuntu通过usb相连时,adb接口与串口的配置。

手机上的USB综合接口,能实现的设备比较多,常用的就是存储,adb,还有串口了。存储接口ubuntu基本上能自动认别。adb 接口ubuntu在配好权限后(etc/udev目录下),用adb命令后基本上也能自动搜索到。串口就有需要手工去配一下才好。当然厂商把通用驱动包装一下,再分发成特定设备的驱动,也是好用的。这里要配成,用ubuntu自带的usbserial.ko驱动模块。

usbserial.ko驱动模块所在的目录是/lib/modules/4.15.0-20-generic/kernel/drivers/usb/serial,用insmod安装时,找不到文件的话,到目录下再用命令。

sudo insmod usbserial.ko vendor=0x17ef product=0x7513
用带参数的模块加载命令,(参数在模块启动时传给 usbserial.ko模块),这个参数指示,把vendor=0x17ef product=0x7513的usb综合设备下找用serial的接口配置。并把这个接口映身到/dev/ttyUSBx(x是数字)

要用insmod之间,最好用一下,

sudo modprobe usbserial 这个命令把usbserial.ko的依赖模块也加载了。

然后再用

sudo rmmod usbserial.ko,

sudo insmod usbserial.ko vendor=0x17ef product=0x7513

注:这个会把adb接口也识别成serial,并生成ttyusb从而占用adb接口,让adb命令找到不可用接口。

解决方法是先启动adb 命令,让adb server占用adb接口,然后再用上边的操作。生成的ttyUSB会少一个。

这实质上也说明adb 接口实际上也是一个USBserial设备。

如下的脚本有点用:

#!/bin/bash -x
gnome-terminal -- bash -c 'adb shell;'
echo "123456" |sudo modprobe usbserial
sudo rmmod usbserial.ko
sudo insmod /lib/modules/4.15.0-20-generic/kernel/drivers/usb/serial/usbserial.ko vendor=0x17ef product=0x7513

在PC端用如下命令后

sudo chmod 666 /dev/ttyUSB2

sudo cat /dev/ttyUSB2或 sudo echo "hello" >/dev/ttyUSB2

手机端

sudo echo "hello" >/dev/ttyGS1或 sudo cat /dev/ttyGS1

补充,android的计设用adb 代换了一系例的原linux工具。原先的串口配shell的代码agetty移去了。但学有内核系统的console,是直接到硬件的tty上的。想要用这个口并不容易,这个口通常是和芯片的JTAG一起的,在实际手机上可能只是一个测试后去除的PCB板。电视盒子上多数这个口,没移去。系统的uboot 写入后,这两个接口实际上用处就不大了。uboot 已可以用usb接口。但在uboot出错时,只有这两个接口能救砖。有些手机上保留了这个UART接口为可接出的方式,有些没有。

补记:

1,系统升级后报错。

insmod: ERROR: could not insert module module.ko: Invalid parameters

从网上的内容来看有两个问题,第一个是编译模块时选择的Linux头文件目录与当前运行的系统版本不匹配,使用命令:uname -r查看当前运行的内核版本,然后选择正确的Linux头文件路径,也可以下载和机器内核对应的Linux源码,这样指定Linux头文件目录到指定的源码目录就行了。第二个就是生成的模块名字不能以module命名,改成其他名字就好

sudo insmod /lib/modules/4.15.0-20-generic/kernel/drivers/usb/serial/usbserial.ko vendor=0x17ef product=0x7513路径改一下uname -r看到的。

猜你喜欢

转载自blog.csdn.net/qushaobo/article/details/83117164