셀룰러 통신용 내부 3G PCIe 카드가 있는 온보드 컴퓨터가 있지만 AT 명령을 보내기 위해 어떤 직렬 포트를 사용해야 하는지 모르겠습니다.
이 컴퓨터에는 내가 잘 사용할 수 있고 /dev/ttyS5
속도가 9600인 온보드 GPS도 함께 제공됩니다. 어떤 문서를 살펴보니 3G 카드의 속도가 115200이어야 한다는 것을 봤습니다. 이 3G PCI 카드는"텔릿 HE910 미니 PCIe 데이터 카드"계속해요우분투14.04.
또한 직렬 통신을 열려고 시도했습니다.N(0...5) 포트는 다음과 같습니다. 결과가 없습니다.
stty -F /dev/ttySn ispeed 115200 && cat </dev/ttySn
이를 실행하면 sudo setserial -g /dev/ttyS[012345]
다음이 생성됩니다.
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: 16550A, Port: 0x03e8, IRQ: 5
/dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 7
/dev/ttyS4, UART: 16550A, Port: 0x02f0, IRQ: 11
/dev/ttyS5, UART: 16550A, Port: 0x02e0, IRQ: 10
AT 명령을 보내기 위해 직렬 포트를 통해 이 3G 카드에 액세스하는 방법을 알아내도록 도와주세요.
답변1
이를 사용하여 lspci -v
PCI 장치 정보와 해당 IRQ를 나열할 수 있습니다. via를 통해 나열된 IRQ를 이미 수집한 정보 lspci
와 연관시켜 setserial
어떤 tty가 어떤 PCI 카드와 일치하는지 알려줍니다.
또한 포트가 비활성화된 경우 를 사용하여 활성화할 수 있습니다 setpci
. 이를 확인하는 방법과 활성화하는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다.http://www.tldp.org/HOWTO/Serial-HOWTO-8.html#ss8.7
포트가 IO 주소를 통해 통신하는 경우 "lspci -vv"는 "Control: I/O+ ..."를 표시해야 합니다. 여기서 +는 IO 주소가 활성화되었음을 나타냅니다. "I/O-"("I/O 포트 ... [비활성화]"와 함께)라고 표시되면 setpci 명령을 사용하여 활성화해야 할 수도 있습니다. 예를 들어 "setpci -d 151f:000 명령=101"입니다. 151f는 공급업체 ID이고 000은 장치 ID입니다. 둘 다 "lspci -n -v", /proc/bus/pci 또는 "scanpci -v"에서 가져옵니다. "command=101"은 "lspci"에 의해 표시되는 "Control" 레지스터와 동일한 명령 레지스터에 101을 넣는 것을 의미합니다. 101h는 두 비트를 설정합니다. 1은 I/O를 +로 설정하고, 100은 SERR#을 +로 설정합니다. 이 경우 lspci 명령을 실행할 때 제어 레지스터의 SERR# 비트가 초기에 +로 관찰됩니다. 따라서 101의 첫 번째 1(비트 0은 I/O)의 비트 8을 1로 설정하여 활성화된 상태를 유지합니다. 일부 직렬 카드는 SERR#을 사용하지 않으므로 SERR#이 표시되면 이를 활성화할 필요가 없으며 다음을 사용하십시오: command=1. 그런 다음 드라이버 IO 및 IRQ를 알리기 위해 "setserial"을 설정해야 합니다.
Telit의 문서에 따르면 3G 모뎀이 ACM을 수행할 수 있는 것으로 보입니다. /dev/ttyACM* 장치가 있는지 확인하세요. 그렇다면 문서에 따르면 이를 사용하여 AT 명령을 보낼 수 있습니다. 문서에는 커널 모듈이 아직 로드되지 않은 경우 로드하는 방법에 대한 지침도 포함되어 있습니다.http://teleorigin.com/file_upl/pliki/1/Telit_HE910_HE863_GE910_UL865_Linux_Driver_UserGuide_r2.pdf
다음 장치만 사용할 수 있습니다.
/dev/ttyACM0: PPP 연결 및 AT 명령을 위한 데이터 포트
/dev/ttyACM3: AT 명령용 공통 포트