2012-11-19 2 views
7

USB 직렬 포트를 통해 115,200 보오를 통해 내장 장치를 연결하는 프로젝트에서 Ubuntu 10.04에서 방금 업그레이드했습니다. 업그레이드 후, 작동하지 않았지만 재부팅하여 연결할 수있었습니다. 시스템을 종료하고 다시 시작한 이후로는 연결할 수 없었습니다. 이처럼 보이는처럼 (잘못된 전송 속도에서 문자의 빠른 문자열을 연결되어 같은 직렬 라인은 같습니다. USB 장치를 인식하고 /dev/ttyUSB0로 설정되고Ubuntu 12.04 USB 직렬 포트에서 통신 속도를 설정할 수 없음

"'''''''''''''''''ppppp'''''''''''''''pppppp'''''''''''"... 

내가 stty와 전송 속도를 설정하려고 할 때 내가 얻을 : 나는 9600로 설정하려고하면

$ sudo stty -F /dev/ttyUSB0 115200 
stty: /dev/ttyUSB0: unable to perform all requested operations 

이 작동하는 것 같다 :

$ sudo stty -F /dev/ttyUSB0 9600 

을하지만 아무것도 다른 FA ILS :

$ stty -F /dev/ttyUSB0 
speed 9600 baud; line = 0; 
min = 1; time = 0; 
-brkint -icrnl -imaxbel 
-opost -onlcr 
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke 

난의 stty (에코, 에코를, 등)을 사용하여 다른 값을 변경할 수 있지만 전송 속도 :

여기
$ sudo stty -F /dev/ttyUSB0 4800 
stty: /dev/ttyUSB0: unable to perform all requested operations 

의 stty는 무엇을보고한다.

누군가 온라인에서 보봇 (BOM)을 Minicom으로 설정할 수는 있지만 명령 줄에서는 보지 못했습니다. 그래서 Minicom을 사용해 보았습니다. 그러나 같은 결과를 얻었습니다 (잘못된 보오율 인 것 같습니다).

는 또한 setserial을 시도했지만 그 또한 /dev/ttyUSB 장치 동의를 거부 : 마지막으로

$ sudo setserial /dev/ttyUSB0 -a 
Cannot get serial info: Invalid argument 
$ sudo setserial /dev/ttyS0 -a 
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4 
    Baud_base: 115200, close_delay: 50, divisor: 0 
    closing_wait: 3000 
    Flags: spd_normal skip_test 

을, 여기에 장치 및 dmesg 명령에서 자신의 설정은 다음과 같습니다

$ ls -l /dev/ttyUSB* 
crw-rw-rw- 1 root dialout 188, 0 Nov 19 15:53 /dev/ttyUSB0 
crw-rw-rw- 1 root dialout 188, 1 Nov 19 16:00 /dev/ttyUSB1 
$ dmesg | grep ttyUSB 
[ 32.444445] usb 4-1: generic converter now attached to ttyUSB0 
[ 32.444549] usb 8-2: generic converter now attached to ttyUSB1 

내가 일하고 있었다가 몇 달 동안 우분투 10.04에서이 장치를 사용하여 지난주에이 장치를 사용할 수 있었지만 종료 및 다시 부팅 한 이후로는 사용할 수 없었습니다. 나는 온라인에서 봤고 비슷한 문제를 가진 소수의 사람들을 발견했지만 해결책이없는 사람은 거의 없었다. 이 문제를 어떻게 해결할 수 있습니까?

+0

setserial을 사용해 보셨습니까? – exussum

+0

예, setserial은/dev/ttyUSB0를 "유효하지 않은 인수"라고 부릅니다. (질문의 끝 부분을보십시오) – user1835090

답변

3

아직 어떤 일이 발생했는지는 알 수 없지만 지금은 작동 중입니다. 같은 문제를 겪고있는 사람이라면 "modprobe -r usbserial"을 시도해 보았습니다. (필자의 생각은 오래된 드라이버가 modprobe -f로로드 될 수 있는지를 확인하는 것이 었습니다.) 그리고 나서 "modprobe usbserial"모듈을 다시로드했습니다. . 이번에 시리얼이 제대로 작동했는데 왜 그런지 모르겠습니다.

~$ stty -F /dev/ttyUSB0 
speed 115200 baud; line = 0; 
min = 1; time = 0; 
-brkint -icrnl -imaxbel 
-opost 
-isig -icanon -iexten -echo 

나는 (I 9600로 변경 한 후 다시 115200) 전송 속도를 변경할 수 있습니다 내가 stty에 않을 때

는 이제보고합니다.

그래도 만족스런 대답은 없지만 재부팅 후 처음 작업을 시작한 것처럼 제대로 작동 할 수 있습니다.

+0

오래된 스레드입니다 만, 명령 ('stty -F/dev/ttyUSB0')을 반복하면 제대로 동작합니다. 왜 두 번 시도해야하는지 모르겠지만 작동해야합니다. – corpico

0

설정을 변경하려면 장치 파일에 대한 쓰기 권한이 필요합니다. 간단한 목록으로 을 제어 할 수 있습니다. 예 :모두 위의 경우

$ ls -l 
crw-rw-r-T 1 root dialout 188, 0 jan 9 16:16 /dev/ttyUSB0 

는 쓰기 권한도 ( rw)가 수퍼 유저 rootdialout 그룹을 허가 ( r)를 읽었습니다.

당신이 dialout 그룹의 구성원 인 경우, 그렇지 않으면 당신은 sudo를 사용할 필요가 위에서 언급 한 stty -F /dev/ttyUSB0 115200 명령에 의해 여분의 것없이 속도 을 변경할 수 있습니다.

id 명령을 사용하여 회원 자격을 제어 할 수 있습니다.