USB 직렬 장치의 전송 속도를 변경할 수 없습니다.

USB 직렬 장치의 전송 속도를 변경할 수 없습니다.

최근에 10.04에서 우분투 12.04로 업그레이드했습니다. 10.04에서는 usbserial 드라이버를 사용하여 직렬 포트를 통해 장치에 연결하는 데 문제가 없었습니다. 업그레이드 후대개전송 속도를 재설정할 수 없습니다. 전송 속도는 9600으로 초기화되어 있지만 내 장치에는 115200이 필요합니다. 속도를 재설정하려고 하면 다음과 같은 결과가 나타납니다.

$ sudo stty -F /dev/ttyUSB0 
speed 9600 baud; line = 0;
-brkint -imaxbel
$ sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations
$ sudo setserial -av /dev/ttyUSB0
Cannot get serial info: Invalid argument
$ ls -l /dev/ttyUS*
crw-rw---- 1 root dialout 188, 0 Nov 26 10:21 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 Nov 26 10:21 /dev/ttyUSB1

가장 이상한 점은 가끔 이런 일을 할 수 있다는 것입니다. 시스템을 처음 재부팅했을 때 제대로 작동했습니다. 종료 후에도 동일한 문제가 발생하며 다시 시작해도 작동하지 않지만 드라이버를 다시 로드하면 작동합니다. 불행히도 그 이후로는 작동하지 않았습니다.

$ sudo modprobe -r usbserial
$ sudo modprobe usbserial vendor=0x0403 product=0x6001
$ sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations

답변1

나중에 누군가가 구글에 검색할 경우를 대비해 해결책을 찾은 것 같습니다. 내 10.04는 기본적으로 usbserial을 로드하지 않았으므로 다음을 modprobe usbserial vendor=0x0403 product=0x6001사용하여 usbserial을 로드해야 했습니다. 나는 등을 바꾸지 않았기 때문에 그것도로드되어 일종의 충돌을 일으킬 수있었습니다. 제거 하고 다시 시작했는데 작동했습니다./etc/modulesftdi_sio/etc/modulesusbserialusbserial/etc/modules

이 솔루션에 대해 정말 확신이 있다면 컴퓨터를 다시 재부팅하고 직렬 포트가 정상적으로 나타나는지 확인하여 확인하겠습니다. 하지만 재부팅하고 연결이 끊어지면 어리석은 기분이 들 것입니다. 왜냐하면 작업을 완료해야 하기 때문입니다. 나도 같은 시간에.

답변2

USB-직렬 장치(예: Prolific 또는 FTDI 시리즈)는 공식 사양을 따르지 않습니다. 대신 전송 속도와 같은 항목을 구성하기 위해 공급업체별 제어 메시지와 함께 두 개의 대량 엔드포인트(출력용 하나, 입력용 하나)를 사용합니다. 따라서 usbserial일반 드라이버와 같은 것이 전송 속도를 설정하거나 FTDI 칩에서 다른 구성 작업을 수행하는 데 문제가 있는 것은 놀라운 일이 아닙니다. 아시다시피, 그것은 ftdi_sio더 잘 작동합니다.

Ubuntu는 존재하는 동안 거의 4003:6001(FT232) 장치를 처리하도록 하드코딩되어 있으므로 ftdi_sio기본적 으로 10.04도 로드해야 합니다. ftdi_sio내 생각엔 4003:6001을 처리하기 위해 등록된 두 개의 드라이버를 로드하고 있는 것 같습니다. 하나는 설계에 따른 것이고 다른 하나는 모듈 매개변수에 따른 것입니다. 커널이나 달의 위상을 변경하면 하나가 다른 것보다 정확히 먼저 로드된다는 의미일 수 있습니다. usbserial먼저 로드되면 전송 속도를 설정할 수 없습니다. 수동 usbserial구성을 제거하고 ftdi_sio장치를 처리하도록 해야 합니다. 10.04 및 12.04에서 작동합니다.

관련 정보