USB로 QMI 배우기
인식할 수 있었지만 연결할 수 없음
이전 기사 에서 L-03D의 인식은 가능했지만 qmicli
의 --wds-start-network
에서는 APN에 접속할 수 없었다.
왠지 좋다. USB 모뎀의 제어 인터페이스인 QMI를 공부하는 동기 부여가 될 것 같다.
libqmi
qmicli
qmicli --verbose
그러면, QMI의 바이트열의 의미를 정중하게 설명해 준다.
# qmicli --verbose -d /dev/cdc-wdm0 --get-service-version-info
[26 Apr 2016, 22:57:24] [Debug] [/dev/cdc-wdm0] Opening device with flags 'none'...
[26 Apr 2016, 22:57:24] [Debug] QMI Device at '/dev/cdc-wdm0' ready
[26 Apr 2016, 22:57:24] [Debug] Getting service version info...
[26 Apr 2016, 22:57:24] [Debug] [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<< length = 12
<<<<<< data = 01:0B:00:00:00:00:00:01:21:00:00:00
[26 Apr 2016, 22:57:24] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< QMUX:
<<<<<< length = 11
<<<<<< flags = 0x00
<<<<<< service = "ctl"
<<<<<< client = 0
<<<<<< QMI:
<<<<<< flags = "none"
<<<<<< transaction = 1
<<<<<< tlv_length = 0
<<<<<< message = "Get Version Info" (0x0021)
:
흠. 분위기는 알았다. 0x0021은 Get Version Info군요.
qmi_message_get_printable()
libqmi에, qmi_message_get_printable() 라고 하는 편리 함수가 있는 것을 발견.
Gets a printable string with the contents of the whole QMI message.
If known, the printable string will contain translated TLV values as well as the raw data buffer contents.
라는 것으로, 반드시 바이너리 열을 먹이면 qmicli --verbose
같은 표시를 해 줄 것.
USBPcap
USB 프로아나는 과연 가지고 있지 않지만, Windows에서 움직이면서라면, USBPcap 로 할 수 있다.
최근에는 Wireshark의 기본 설치 프로그램에서 쉽게 넣을 수 있습니다.
Wireshark로 캡처하기
이더넷 캡처와 동일. USB를 선택하는 것만.
QMI는, USB의 Control 전송을 이용하고 있는 모양.
실제로 Windows에서 L-03D를 움직여 표시를 필터링한 모습이 이것.
잘 보면 조금 전의 qmicli --get-service-version-info
에 나오는 '21:00'이라는 것이 들어 있다. 그 앞이 조금 다르지만.
이것을 Export해 qmi_message_get_printable()
에 먹이면, 여러가지 알 수 있는 것은.
Wireshark로 내보내기
필터링된 패킷만을 Plain Text로, 그리고 USB 헤더는 제거하고 페이로드만을 Export한다.
결과는 이런 느낌.
0000 1c 00 e0 cd 84 af ff ff ff ff 00 00 00 00 08 00 ................
0010 01 03 00 05 00 80 02 01 00 00 00 01 00 .............
0000 1c 00 58 28 79 bc ff ff ff ff 00 00 00 00 08 00 ..X(y...........
0010 01 03 00 05 00 00 02 10 00 00 00 01 01 0f 00 00 ................
0020 00 00 00 01 21 00 04 00 01 01 00 ff ....!.......
:
호호. 패킷의 틈도 알기 쉽다.
적절한 파서 + qmi_message_get_printable()
qmicli를 깔개에 적당히 만들어 보았던 것이 이
밑바닥에 너무 libqmi의 build 환경에 의존.
Export한 Plain Text를 먹인 결과는…
len = 1
bin = 00
(null)---------------------------------------------------------------------------
len = 16
bin = 01 0f 00 00 00 00 00 01 21 00 04 00 01 01 00 ff
QMUX:
length = 15
flags = 0x00
service = "ctl"
client = 0
QMI:
flags = "none"
transaction = 1
tlv_length = 4
message = "Get Version Info" (0x0021)
TLV:
type = 0x01
length = 1
value = FF
:
오! qmicli가 생성한 메시지에 비해 TLV 1개분의 파라미터가 추가되어 있네요. 같은 것을 알 수 있다.
다음 번에 드디어
L-03D에서 AT 명령을 사용하지 않고 네트워크에 Attach!
Reference
이 문제에 관하여(USB로 QMI 배우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/air-gh/items/e60338f8c3ea33540c6d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
qmicli
qmicli --verbose
그러면, QMI의 바이트열의 의미를 정중하게 설명해 준다.# qmicli --verbose -d /dev/cdc-wdm0 --get-service-version-info
[26 Apr 2016, 22:57:24] [Debug] [/dev/cdc-wdm0] Opening device with flags 'none'...
[26 Apr 2016, 22:57:24] [Debug] QMI Device at '/dev/cdc-wdm0' ready
[26 Apr 2016, 22:57:24] [Debug] Getting service version info...
[26 Apr 2016, 22:57:24] [Debug] [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<< length = 12
<<<<<< data = 01:0B:00:00:00:00:00:01:21:00:00:00
[26 Apr 2016, 22:57:24] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< QMUX:
<<<<<< length = 11
<<<<<< flags = 0x00
<<<<<< service = "ctl"
<<<<<< client = 0
<<<<<< QMI:
<<<<<< flags = "none"
<<<<<< transaction = 1
<<<<<< tlv_length = 0
<<<<<< message = "Get Version Info" (0x0021)
:
흠. 분위기는 알았다. 0x0021은 Get Version Info군요.
qmi_message_get_printable()
libqmi에, qmi_message_get_printable() 라고 하는 편리 함수가 있는 것을 발견.
Gets a printable string with the contents of the whole QMI message.
If known, the printable string will contain translated TLV values as well as the raw data buffer contents.
라는 것으로, 반드시 바이너리 열을 먹이면
qmicli --verbose
같은 표시를 해 줄 것.USBPcap
USB 프로아나는 과연 가지고 있지 않지만, Windows에서 움직이면서라면, USBPcap 로 할 수 있다.
최근에는 Wireshark의 기본 설치 프로그램에서 쉽게 넣을 수 있습니다.
Wireshark로 캡처하기
이더넷 캡처와 동일. USB를 선택하는 것만.
QMI는, USB의 Control 전송을 이용하고 있는 모양.
실제로 Windows에서 L-03D를 움직여 표시를 필터링한 모습이 이것.
잘 보면 조금 전의 qmicli --get-service-version-info
에 나오는 '21:00'이라는 것이 들어 있다. 그 앞이 조금 다르지만.
이것을 Export해 qmi_message_get_printable()
에 먹이면, 여러가지 알 수 있는 것은.
Wireshark로 내보내기
필터링된 패킷만을 Plain Text로, 그리고 USB 헤더는 제거하고 페이로드만을 Export한다.
결과는 이런 느낌.
0000 1c 00 e0 cd 84 af ff ff ff ff 00 00 00 00 08 00 ................
0010 01 03 00 05 00 80 02 01 00 00 00 01 00 .............
0000 1c 00 58 28 79 bc ff ff ff ff 00 00 00 00 08 00 ..X(y...........
0010 01 03 00 05 00 00 02 10 00 00 00 01 01 0f 00 00 ................
0020 00 00 00 01 21 00 04 00 01 01 00 ff ....!.......
:
호호. 패킷의 틈도 알기 쉽다.
적절한 파서 + qmi_message_get_printable()
qmicli를 깔개에 적당히 만들어 보았던 것이 이
밑바닥에 너무 libqmi의 build 환경에 의존.
Export한 Plain Text를 먹인 결과는…
len = 1
bin = 00
(null)---------------------------------------------------------------------------
len = 16
bin = 01 0f 00 00 00 00 00 01 21 00 04 00 01 01 00 ff
QMUX:
length = 15
flags = 0x00
service = "ctl"
client = 0
QMI:
flags = "none"
transaction = 1
tlv_length = 4
message = "Get Version Info" (0x0021)
TLV:
type = 0x01
length = 1
value = FF
:
오! qmicli가 생성한 메시지에 비해 TLV 1개분의 파라미터가 추가되어 있네요. 같은 것을 알 수 있다.
다음 번에 드디어
L-03D에서 AT 명령을 사용하지 않고 네트워크에 Attach!
Reference
이 문제에 관하여(USB로 QMI 배우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/air-gh/items/e60338f8c3ea33540c6d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
0000 1c 00 e0 cd 84 af ff ff ff ff 00 00 00 00 08 00 ................
0010 01 03 00 05 00 80 02 01 00 00 00 01 00 .............
0000 1c 00 58 28 79 bc ff ff ff ff 00 00 00 00 08 00 ..X(y...........
0010 01 03 00 05 00 00 02 10 00 00 00 01 01 0f 00 00 ................
0020 00 00 00 01 21 00 04 00 01 01 00 ff ....!.......
:
qmicli를 깔개에 적당히 만들어 보았던 것이 이
밑바닥에 너무 libqmi의 build 환경에 의존.
Export한 Plain Text를 먹인 결과는…
len = 1
bin = 00
(null)---------------------------------------------------------------------------
len = 16
bin = 01 0f 00 00 00 00 00 01 21 00 04 00 01 01 00 ff
QMUX:
length = 15
flags = 0x00
service = "ctl"
client = 0
QMI:
flags = "none"
transaction = 1
tlv_length = 4
message = "Get Version Info" (0x0021)
TLV:
type = 0x01
length = 1
value = FF
:
오! qmicli가 생성한 메시지에 비해 TLV 1개분의 파라미터가 추가되어 있네요. 같은 것을 알 수 있다.
다음 번에 드디어
L-03D에서 AT 명령을 사용하지 않고 네트워크에 Attach!
Reference
이 문제에 관하여(USB로 QMI 배우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/air-gh/items/e60338f8c3ea33540c6d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(USB로 QMI 배우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/air-gh/items/e60338f8c3ea33540c6d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)