如何找到可用于通过 USB 与 qcom 调制解调器通信的正确端口?
How to find the correct port that can be used for talking to qcom modem over usb?
我有一个 root 设备连接到我的 Ubuntu 16 机器。我已经使用密码 #0808#
从设备启用了它的 DM 端口
在 Windows 上,我可以在设备管理器中看到一个 COM 端口,但在 linux 上我找不到正确的端口。
我已尝试检查启用 DM 端口时出现的新 /dev/android4,但在尝试打开它时它似乎不是正确的端口。我收到以下错误:
Error from tcgetattr: Inappropriate ioctl for device
这是我打开这个端口的代码:
int set_interface_attribs(int fd, int speed)
{
struct termios tty;
// memset(&tty, 0, sizeof(tty));
if (tcgetattr(fd, &tty) < 0)
{
printf("Error from tcgetattr: %s\n", strerror(errno));
return FAILURE;
}
cfsetospeed(&tty, (speed_t)speed);
cfsetispeed(&tty, (speed_t)speed);
tty.c_cflag |= (CLOCAL | CREAD); /* ignore modem controls */
tty.c_cflag &= ~CSIZE;
tty.c_cflag |= CS8; /* 8-bit characters */
tty.c_cflag &= ~PARENB; /* no parity bit */
tty.c_cflag &= ~CSTOPB; /* only need 1 stop bit */
tty.c_cflag &= ~CRTSCTS; /* no hardware flowcontrol */
/* setup for non-canonical mode */
tty.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);
tty.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
tty.c_oflag &= ~OPOST;
/* fetch bytes as they become available */
tty.c_cc[VMIN] = 1;
tty.c_cc[VTIME] = 1;
if (tcsetattr(fd, TCSANOW, &tty) != 0)
{
printf("Error from tcsetattr: %s\n", strerror(errno));
return FAILURE;
}
return SUCCESS;
}
jint initDiag(char* comPort)
{
int ret;
debug("initDiag %s \n", comPort);
if (signal(SIGPIPE, sigpipeHandler) == SIG_ERR)
{
debugWarning(" cannot capture SIGPIPE\n");
}
// open /dev/android4
hSerial = open(comPort, O_RDWR | O_NONBLOCK);
if (hSerial < 0)
{
debugError("open %s \n", comPort);
return FAILURE;
}
/*baudrate 115200, 8 bits, no parity, 1 stop bit */
if(set_interface_attribs(hSerial, B115200) == FAILURE) {
debugError("Failed to set attributes.\n");
return FAILURE;
}
return hSerial;
}
任何帮助,我该怎么做?
更新 ls /dev/
$ ls /dev/
acpi_thermal_rel fb0 i2c-16 loop13 loop-control ppp stdin tty21 tty39 tty56 ttyS14 ttyS31 vcsa
android4 fd i2c-2 loop14 mapper psaux stdout tty22 tty4 tty57 ttyS15 ttyS4 vcsa1
autofs freefall i2c-3 loop15 mcelog ptmx tpm0 tty23 tty40 tty58 ttyS16 ttyS5 vcsa2
block full i2c-4 loop16 media0 pts tpmrm0 tty24 tty41 tty59 ttyS17 ttyS6 vcsa3
bsg fuse i2c-5 loop17 mei0 random tty tty25 tty42 tty6 ttyS18 ttyS7 vcsa4
btrfs-control hidraw0 i2c-6 loop18 mem rfkill tty0 tty26 tty43 tty60 ttyS19 ttyS8 vcsa5
bus hidraw1 i2c-7 loop19 memory_bandwidth rtc tty1 tty27 tty44 tty61 ttyS2 ttyS9 vcsa6
char hidraw2 i2c-8 loop2 mqueue rtc0 tty10 tty28 tty45 tty62 ttyS20 uhid vfio
console hpet i2c-9 loop20 net sda tty11 tty29 tty46 tty63 ttyS21 uinput vga_arbiter
core hugepages initctl loop21 network_latency sda1 tty12 tty3 tty47 tty7 ttyS22 urandom vhci
cpu hwrng input loop22 network_throughput sda2 tty13 tty30 tty48 tty8 ttyS23 userio vhost-net
cpu_dma_latency i2c-0 kmsg loop23 null sda3 tty14 tty31 tty49 tty9 ttyS24 v4l vhost-vsock
cuse i2c-1 lightnvm loop3 nvme0 sda4 tty15 tty32 tty5 ttyprintk ttyS25 vcs video0
disk i2c-10 log loop4 nvme0n1 sda5 tty16 tty33 tty50 ttyS0 ttyS26 vcs1 zero
dri i2c-11 loop0 loop5 nvme0n1p1 sg0 tty17 tty34 tty51 ttyS1 ttyS27 vcs2
drm_dp_aux0 i2c-12 loop1 loop6 nvme0n1p2 shm tty18 tty35 tty52 ttyS10 ttyS28 vcs3
drm_dp_aux1 i2c-13 loop10 loop7 nvme0n1p3 snapshot tty19 tty36 tty53 ttyS11 ttyS29 vcs4
drm_dp_aux2 i2c-14 loop11 loop8 nvme0n1p4 snd tty2 tty37 tty54 ttyS12 ttyS3 vcs5
ecryptfs i2c-15 loop12 loop9 port stderr tty20 tty38 tty55 ttyS13 ttyS30 vcs6
总的来说,关于;
Bus 001 Device 013: ID 05c6:676c Qualcomm, Inc.
'Bus' 数字引用了您计算机中的硬件 I/O 集线器。
'Device' 号码引用了连接到该内部 I/O 集线器
的几个外部 I/O 设备
为了简单起见:
sudo apt install hardinfo
然后设置外部设备以供 I/O 访问阅读 how to mount an external device 正在讨论外部硬盘驱动器,但基本步骤是相同的。
我有一个 root 设备连接到我的 Ubuntu 16 机器。我已经使用密码 #0808#
从设备启用了它的 DM 端口在 Windows 上,我可以在设备管理器中看到一个 COM 端口,但在 linux 上我找不到正确的端口。
我已尝试检查启用 DM 端口时出现的新 /dev/android4,但在尝试打开它时它似乎不是正确的端口。我收到以下错误:
Error from tcgetattr: Inappropriate ioctl for device
这是我打开这个端口的代码:
int set_interface_attribs(int fd, int speed)
{
struct termios tty;
// memset(&tty, 0, sizeof(tty));
if (tcgetattr(fd, &tty) < 0)
{
printf("Error from tcgetattr: %s\n", strerror(errno));
return FAILURE;
}
cfsetospeed(&tty, (speed_t)speed);
cfsetispeed(&tty, (speed_t)speed);
tty.c_cflag |= (CLOCAL | CREAD); /* ignore modem controls */
tty.c_cflag &= ~CSIZE;
tty.c_cflag |= CS8; /* 8-bit characters */
tty.c_cflag &= ~PARENB; /* no parity bit */
tty.c_cflag &= ~CSTOPB; /* only need 1 stop bit */
tty.c_cflag &= ~CRTSCTS; /* no hardware flowcontrol */
/* setup for non-canonical mode */
tty.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);
tty.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
tty.c_oflag &= ~OPOST;
/* fetch bytes as they become available */
tty.c_cc[VMIN] = 1;
tty.c_cc[VTIME] = 1;
if (tcsetattr(fd, TCSANOW, &tty) != 0)
{
printf("Error from tcsetattr: %s\n", strerror(errno));
return FAILURE;
}
return SUCCESS;
}
jint initDiag(char* comPort)
{
int ret;
debug("initDiag %s \n", comPort);
if (signal(SIGPIPE, sigpipeHandler) == SIG_ERR)
{
debugWarning(" cannot capture SIGPIPE\n");
}
// open /dev/android4
hSerial = open(comPort, O_RDWR | O_NONBLOCK);
if (hSerial < 0)
{
debugError("open %s \n", comPort);
return FAILURE;
}
/*baudrate 115200, 8 bits, no parity, 1 stop bit */
if(set_interface_attribs(hSerial, B115200) == FAILURE) {
debugError("Failed to set attributes.\n");
return FAILURE;
}
return hSerial;
}
任何帮助,我该怎么做?
更新 ls /dev/
$ ls /dev/
acpi_thermal_rel fb0 i2c-16 loop13 loop-control ppp stdin tty21 tty39 tty56 ttyS14 ttyS31 vcsa
android4 fd i2c-2 loop14 mapper psaux stdout tty22 tty4 tty57 ttyS15 ttyS4 vcsa1
autofs freefall i2c-3 loop15 mcelog ptmx tpm0 tty23 tty40 tty58 ttyS16 ttyS5 vcsa2
block full i2c-4 loop16 media0 pts tpmrm0 tty24 tty41 tty59 ttyS17 ttyS6 vcsa3
bsg fuse i2c-5 loop17 mei0 random tty tty25 tty42 tty6 ttyS18 ttyS7 vcsa4
btrfs-control hidraw0 i2c-6 loop18 mem rfkill tty0 tty26 tty43 tty60 ttyS19 ttyS8 vcsa5
bus hidraw1 i2c-7 loop19 memory_bandwidth rtc tty1 tty27 tty44 tty61 ttyS2 ttyS9 vcsa6
char hidraw2 i2c-8 loop2 mqueue rtc0 tty10 tty28 tty45 tty62 ttyS20 uhid vfio
console hpet i2c-9 loop20 net sda tty11 tty29 tty46 tty63 ttyS21 uinput vga_arbiter
core hugepages initctl loop21 network_latency sda1 tty12 tty3 tty47 tty7 ttyS22 urandom vhci
cpu hwrng input loop22 network_throughput sda2 tty13 tty30 tty48 tty8 ttyS23 userio vhost-net
cpu_dma_latency i2c-0 kmsg loop23 null sda3 tty14 tty31 tty49 tty9 ttyS24 v4l vhost-vsock
cuse i2c-1 lightnvm loop3 nvme0 sda4 tty15 tty32 tty5 ttyprintk ttyS25 vcs video0
disk i2c-10 log loop4 nvme0n1 sda5 tty16 tty33 tty50 ttyS0 ttyS26 vcs1 zero
dri i2c-11 loop0 loop5 nvme0n1p1 sg0 tty17 tty34 tty51 ttyS1 ttyS27 vcs2
drm_dp_aux0 i2c-12 loop1 loop6 nvme0n1p2 shm tty18 tty35 tty52 ttyS10 ttyS28 vcs3
drm_dp_aux1 i2c-13 loop10 loop7 nvme0n1p3 snapshot tty19 tty36 tty53 ttyS11 ttyS29 vcs4
drm_dp_aux2 i2c-14 loop11 loop8 nvme0n1p4 snd tty2 tty37 tty54 ttyS12 ttyS3 vcs5
ecryptfs i2c-15 loop12 loop9 port stderr tty20 tty38 tty55 ttyS13 ttyS30 vcs6
总的来说,关于;
Bus 001 Device 013: ID 05c6:676c Qualcomm, Inc.
'Bus' 数字引用了您计算机中的硬件 I/O 集线器。
'Device' 号码引用了连接到该内部 I/O 集线器
的几个外部 I/O 设备为了简单起见:
sudo apt install hardinfo
然后设置外部设备以供 I/O 访问阅读 how to mount an external device 正在讨论外部硬盘驱动器,但基本步骤是相同的。