기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요?


제가 안드로이드 USB 디바이스를 이용하는 어플리케이션을 만들고 있는데요.


어떤 디바이스에 버튼입력을 감지하는데 이상하게 3~4초 정도 지연이 발생하네요.

몇몇 안드로이드 기기(갤럭시 노트, 갤럭시s3)에서는 지연이 거의 없는데

다른기기에서는(G3 , G2, 갤럭시s4, 엣지, 노트4 등) 대부분 지연이 발생합니다. 

그러니까 버튼을 누를 뒤 3~4초가 지나서 반응하는 경우가 많아요. 한 절반정도는 3초이후에 반응하고

1/10 정도는 바로 반응하기도 하는 것 같습니다. 


확인해보니 안되는 기기의 공통점은 커널버전이 3.4 이상이고

잘 되는 기기는 커널버전이 3.0.31 이네요.


커널단에 무슨 문제가 있을 수 있을까요?

웹 검색을 해봐도 USB 제어와 관련된 뭐가 달라졌는지 잘 모르겠더라구요.


버튼 입력을 받는 방식을 여러가지로 해봤는데 

usbDeviceConnection을 사용했다가 

libusb를 사용하고 있습니다.

두 방식 모두 결과는 동일했습니다. 

일반적으로 3초 이상의 지연이 있고 빠를 때는 1초 이내에 응답하기도 하구요.


아무튼 libusb의 interrupt_transfer를 사용했는데요.

지연되는 부분이 어디인지 확인하기 위해서 로그 찍어가면서 코드를 따라가다 보니

ioctl 로 urb를 제출하고 난 뒤에 poll 함수에서 멈춰있고 버튼입력을 받은 뒤

poll 자체를 벗어나는데 오래걸리더라구요. 


이후 다시 ioctl로 urb를 읽어오는데요. 


혹시 싶어서 poll에 timeout을 주고 강제적으로 fd에서 urb값을 읽어오도록 했는데

그 값 자체가 버튼을 누른지 3초 이상 지나야 바뀌는 것 같더라구요. 


혹시나 싶어서 키보드로 interrupt transfer를 시도해봤는데 키보드는 지연없이 잘 동작하네요.

넘겨주는 값이 이상해서 그런건지 이렇게까지 늦게 반응하는게 잘 이해되지 않습니다 .


이젠 어떤 시도를 해봐야 원인을 찾을 수 있을 지 모르겠네요. 


혹시 짐작가시는 바가 있으시다면 알려주시면 감사하겠습니다. 


읽어주셔서 감사합니다~



고등어

2015.12.17 05:42:06
*.36.136.16


Bulk를 한번 사용해보세요.

아라라라기

2015.12.17 20:03:49
*.106.171.173

Bulk 도 사용해 봤는데 마찬가지 입니다.

내용 추가하자면 가장 최근에 테스트한게 넥서스 7 태블릿 (커널버전 3.4)인데

여기서는 또 정상적으로 동작하네요.



List of Articles
번호 제목 글쓴이 날짜 조회 수sort
6248 우분투 9.04에서 tslib-1.0설치시 에러.. [2] Kevin 2009-10-24 3497
6247 ramdisk를 위한 lib의 작게 하는 방법 [3] 김경호 2006-04-13 3488
6246 컴파일 시 libc 와 관련된 골아픈 질문.. [11] 칼마 2018-02-27 3471
6245 I2S를 구현하다 문제가 있어 질문 드립니다. [5] 션한물 2013-04-12 3443
6244 [질문] 장시간 사용시에 LCD 문제 [3] 한영민 2007-05-23 3414
6243 [참고] PCI 수정 제안...^^ [1] 이승진 2007-05-11 3414
6242 WinCE 5.0 LCD관련 질문입니다. [4] 김해성 2007-10-06 3388
6241 [v210] SMSC LAN9220 이더넷 문제 [7] 유구무언 2013-06-11 3371
6240 udev 적용문제 확인부탁드립니다. [1] ice179 2014-02-28 3363
6239 [완료] 리눅스 관련 자료는 언제 올라오나요? [4] 임은향 2007-05-14 3361
6238 Android binder 사용 방법 문의 [2] 이윤택 2009-06-11 3335
6237 [re] [요청] LX800에 부팅시 사용되었던 Image file [1] 이제현 2007-08-29 3318
6236 NOR MTD 질문입니다.. [완료] [5] 이홍석 2006-05-06 3312
6235 root 로그인이 안될때. [8] 박상진 2009-05-20 3301
6234 [질문] CPU 성능 테스트는 어떤 프로그램이 적합할까요? [1] 성진호 2007-06-28 3297
6233 Origen보드에 Linaro-Linux 올리기 -- SD카드에 Kernel 이미지 쓰... [1] 다콩 2012-07-19 3283
6232 리눅스 개발환경에 대해(이더넷, OTG) 활용 방안 [1] pedor11 2013-11-06 3274
6231 이솦보드 키패드 처리 방법?[완료] [3] 김대영 2006-04-12 3252
6230 프레임버퍼 디스플레이가 잘 안되는데요 [1] timul1 2014-02-24 3251
6229 [질문]wince 올리는 방법 [6] 김형기 2007-06-26 3249

사용자 로그인