モデム用スペアポート

モデム用スペアポート

私はテキストメッセージを送信するために使用する16のポートを持つモデムを持っています。

私のLinuxシステムに接続すると、ttyUSB0最大16個のポートが得られますttyUSB15。現在、このモデムを取り外して別のモデムを接続すると、最大ttyUSB016個のポートが得られます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が変わります。51112

ベストアンサー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を3つの名前(たとえば)として使用できます。

/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.

私の確認詳細については、これに関する個人的なWiki記事を参照してください。

おすすめ記事