모뎀용 예비 포트

모뎀용 예비 포트

나는 문자 메시지를 보내는 데 사용하는 16개의 포트가 있는 모뎀을 가지고 있습니다.

내 Linux 시스템에 연결하면 ttyUSB0에서 까지 16개의 포트를 얻습니다 ttyUSB15. 현재 이 모뎀을 제거하고 다른 모뎀을 연결하면 ttyUSB0에서 까지 16개의 포트를 얻게 됩니다 ttyUSB15.

이 모뎀을 제거하고 다른 모뎀을 연결할 때 지금부터 할당 되도록 파일을 만들어 udev특정 공급자에 대해 처음 16개 포트를 예약하려면 어떻게 해야 합니까?ttyUSB16

편집하다

udev규칙 파일 내용은 다음과 같으며 작동하지만 다시 연결할 때마다 포트 번호가 변경됩니다.

Name=="Future Technology Devices International,Ltd",SUBSYSTEMS=="usb", ATTRS{idProduct}=="6011", ATTRS{idVendor}=="0403", SYMLINK="Ketan%b", KERNEL=="ttyUSB[0-15]*", MODE="0666", SYMLINK+="ttyUSB1",

산출

ls -l /dev/K*
lrwxrwxrwx 1 root root 7 2013-01-08 15:09 /dev/Ketan-8.1 -> ttyUSB1
lrwxrwxrwx 1 root root 7 2013-01-08 15:09 /dev/Ketan-8.2 -> ttyUSB5
lrwxrwxrwx 1 root root 8 2013-01-08 15:09 /dev/Ketan-8.3 -> ttyUSB11
lrwxrwxrwx 1 root root 8 2013-01-08 15:09 /dev/Ketan-8.4 -> ttyUSB12

여기에는 16개의 포트가 있지만 4개의 ​​그룹으로 그룹화되어 있습니다. 모뎀을 연결할 때마다 ttyUSB 1, 5, 11, 값이 변경됩니다.12

답변1

ttyUSB0사용 요구 사항을 완화하면 ttyUSB31가능성이 있을 수 있습니다. 내가 한 일은 udev커널이 할당한 장치 노드를 가리키는 심볼릭 링크를 만드는 것뿐이었습니다. 사용하려는 물리적 장치를 안정적으로 배선할 수는 없지만 원하는 장치 노드를 가리키는 ttyUSB0심볼릭 링크를 안정적으로 추가할 수 있습니다 . ttyUSB001여기서 중요한 점은 커널이 장치 노드에 자신 ttyUSB0..이외의 이름으로 시작하는 이름을 할당하지 않는다는 것입니다 ttyUSB0. 따라서 이 트릭은 최대 99개 장치에 적용되지만 첫 번째 숫자가 유지되는 한 4자리(및 999개 장치)로 쉽게 변경할 수 있습니다 0.

이렇게 하려면 두 모뎀을 모두 고유하게 식별할 수 있어야 합니다. 장치를 분리하거나 연결할 때 다음 명령을 실행하여 장치에 고유한 일련 번호가 있는지 확인하십시오.

unbuffer udevadm monitor --environment | grep 'ID_SERIAL='

귀하의 모뎀은 모르지만 /etc/udev/rules.d/60-persistent-serial.rules각 Arduino를 고유하게 식별하는 데 사용하는 파일은 다음과 같습니다.

ACTION!="add", GOTO="persistent_serial_end"
SUBSYSTEM!="tty", GOTO="persistent_serial_end"
KERNEL!="ttyUSB[0-9]*", GOTO="persistent_serial_end"

# This is old 11.10 style: IMPORT="usb_id --export %p"
IMPORT{builtin}="path_id"
ENV{ID_SERIAL}=="04fc_RS232C_to_USB_Adapter"    , SYMLINK="multimeter"                                       , OWNER="jhendrix"
ENV{ID_SERIAL}=="FTDI_FT232R_USB_UART_A800FERY" , SYMLINK="arduinoMega1280-001"       , SYMLINK+="ttyUSB001" , OWNER="jhendrix"
ENV{ID_SERIAL}=="FTDI_FT232R_USB_UART_A900F4EF" , SYMLINK="arduinoMega1280-002"       , SYMLINK+="ttyUSB002" , OWNER="jhendrix"
ENV{ID_SERIAL}=="FTDI_FT232R_USB_UART_A900f3Kr" , SYMLINK="arduinoDuemilanove168-003" , SYMLINK+="ttyUSB003" , OWNER="jhendrix"

LABEL="persistent_serial_end"

물론 몇 가지 사항을 교체해야 합니다 OWNER. 예를 들어 장치를 할당한 사용자는 ENV{ID_SERIAL}다음과 같이 찾을 수 있습니다.

unbuffer udevadm monitor --environment | grep 'ID_SERIAL='

마지막으로 다양한 SYMLINKs를 사용하려는 정확한 이름으로 바꿔야 합니다. 이 파일을 사용하면 내 Arduino를 세 가지 이름(예:)으로 사용할 수 있습니다.

/dev/ttyUSB0             # dynamic, assigned by kernel upon plugging the device
/dev/arduinoMega1280-002 # static,  symlink -> ttyUSB0
/dev/ttyUSB002           # static,  symlink -> ttyUSB0 , this is what you are asking for.

내 확인자세한 내용은 이에 대한 개인 위키 기사를 참조하세요..

관련 정보