일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- unix
- Android
- LDAP
- uml example
- 작성중
- 도서
- 기술사
- UX
- 보안
- adb
- java
- 코스피
- IPTV
- 주식
- Qmail
- conemu
- KOSPI
- 안드로이드
- 알고리즘
- 공매도
- Linux
- Algorithm
- 우분투
- eclipse35
- ubuntu
- 태터수정
- Audacity
- IT 키워드
- Eclipse
Archives
- Today
- Total
Do diffence
[삽질] 우분투 리눅스에 USB GPS / 아센 GPS660 연결 실패... 본문
kldp에서 도움을 받아 일반적인 방법으로 안된다고 결론을 내렸다.
http://kldp.org/node/102807
결론은 Ascen GPS660 모델은 cdc-acm을 지원하는 것 처럼 보이기만 할 뿐. cdc-acm을 지원하지 않는다.
해당 제품의 usb 정보.
2. 그리고 cdc-acm 에서 테스트
usbserial 모듈을 올리지 않고, USB GPS660을 꽃으면 즉시 cdc-acm이 실행된다.
3. cdc-acm을 지원하는 동글을 구해야 한다... 헉헉...
http://kldp.org/node/102807
# lsusb
Bus 004 Device 005: ID 0e8d:3329
#modprobe usbserial vendor=0xe8d product=0x3329
/dev/ttyUSB0 만들어지지만 통신은 안됨
결론은 Ascen GPS660 모델은 cdc-acm을 지원하는 것 처럼 보이기만 할 뿐. cdc-acm을 지원하지 않는다.
해당 제품의 usb 정보.
# lsusb -v -d 0e8d:3329그리고 고마운 분의 설명.
Bus 004 Device 003: ID 0e8d:3329
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 2 Communications
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0e8d
idProduct 0x3329
bcdDevice 1.00
iManufacturer 3
iProduct 4
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 67
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0
iInterface 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 28
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 1 AT-commands (v.25ter)
iInterface 2
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
can't get device qualifier: Operation not permitted
can't get debug descriptor: Operation not permitted
cannot read device status, Operation not permitted (1)
http://kldp.org/node/102807#comment-475922
디스크립터 정보에서 보시듯,
USB CDC(Communication Device Class) 의
ACM(Abstract Control Model) subclass 에다가
AT-commands (v.25ter) protocol 입니다.완벽한 USB CDC-ACM 표준장치이므로 cdc-acm 드라이버를 사용하세요.
노드는 /dev/ttyACM0 처럼 생깁니다.여기서부턴 뱀다리.
usbserial 드라이버는 bulk in/out 으로 serial(tty) 를 흉내내는 목적으로 사용하며,
오래전, 지금처럼 linux USB gadget 이 정리되지 않았을 때, 장비에 탑재되던 linux 들과의 통신을 위해 사용하던 겁니다.
이것과 비슷한 것으로 usbnet 드라이버가 있습니다.
이놈도 CDC 와는 별개로 bulk in/out 만 가지고 ethernet 을 흉내내는 목적으로 사용하며,
오래전, 지금처럼 linux USB gadget 이 정리되지 않았을 때, 장비에 탑재되던 linux 들과의 통신을 위해 사용하던 겁니다.
현재도 linux 가 탑재되는 장비의 USB device 컨트롤러에 interrupt endpoint 가 없을 경우에 유용하게 사용되기는 합니다만, 상당히 드문 경우죠.
2. 그리고 cdc-acm 에서 테스트
usbserial 모듈을 올리지 않고, USB GPS660을 꽃으면 즉시 cdc-acm이 실행된다.
그러나 cdc-acm 에러다. 결국 이 GPS660 은 cdc-acm을 지원하지 않는다.Feb 12 18:52:28 gtko-ubuntu kernel: [ 160.626504] usb 4-1: new full speed USB device using uhci_hcd and address 2
Feb 12 18:52:28 gtko-ubuntu kernel: [ 160.794358] usb 4-1: configuration #1 chosen from 1 choice
Feb 12 18:52:29 gtko-ubuntu kernel: [ 160.914415]
Feb 12 18:52:29 gtko-ubuntu kernel: [ 160.914599] cdc_acm: probe of 4-1:1.1 failed with error -22Feb 12 18:52:29 gtko-ubuntu kernel: [ 160.914689] usbcore: registered new interface driver cdc_acm
Feb 12 18:52:29 gtko-ubuntu kernel: [ 160.914770] /build/buildd/linux-2.6.24/drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters
3. cdc-acm을 지원하는 동글을 구해야 한다... 헉헉...