Linuxマシンでシリアルポート(RS232C)を増設する方法 [Linux]
最近のマザーボードには、シリアルポート(RS232C)なんてレガシーなポートは
全く付いていないものも多いです。
しかし、アナログモデムを接続したり、GPSレシーバを接続したり、
ネットワーク機器などとコンソールで通信を行う場合など、
意外とシリアルポートの出番はまだまだ多いものです。
そこで、あたしが今までに行った、
Linuxでシリアルポートを増設する方法を記述しておきます。
A. LinuxでUSB-RS232C変換ケーブルを使う
最もお手軽な方法は、USB接続のシリアル変換ケーブルを使う方法でしょう。
ただし、相性や安定性に問題が多いので、
サーバ用途にはあまりオススメできません。
また、Linuxに対応していない(ドライバが無い)ものも多いです。
あたしが確認した、確実にLinuxに対応しているUSB-RS232C変換ケーブルは、
FTDI社のチップを使っているものです。
あたしは、以下で売られている「US232R-10」(またはUS232R-100)を
購入し、USBに接続するだけで認識されたのを確認しています。
その他のFTDIチップを使っている製品でも大丈夫だと思います。
コンパス・ラブ USB to RS232 シリアル変換
http://www.compass-lab.com/USB_Serial/US232Cable.htm
なお、デバイス名は /dev/ttyUSB0 になると思いますが、
念のために dmesg で確認してください。
ただし、複数の変換ケーブルを接続した場合、
デバイス名がどの順序で割り当てられるのか、分かりません。
(固定する方法はありそうな気がしますが、あたしは分かりません;)
B. Linuxでシリアルポート増設ボードを使う
PCIスロットに増設して使うものです。
USB接続のものよりは、こちらのほうが確実に安定していると思います。
複数のポートがあっても、デバイス名とポート名を対応付けることが可能です。
あたしが動作を確認したものは、以下の製品です。
AREA RS232Cシリアルポート (外部) x2ポート増設PCIボード
ロープロファイル対応 SD-PCI9835-2SL
(メーカページ)
ちなみに、似たような増設ボードはいくつかありますが、
この製品がいちばん安かったと記憶しています。
この増設ボード(SD-PCI9835-2SL)をLinuxで使用する方法を
以下に書いておきます。
1. 増設ボードをPCIスロットに挿入します。
2. Linux起動時にデバイスの設定をするか聞かれた場合は、
設定(Configure)を選択します。
3. ttyS4, ttyS5 デバイスをルート権限で作成します。
(既にttyS0~ttyS3まではデフォルトで用意されているので、
重ならないように ttyS4, ttyS5 としておきます)
4. シリアル増設ボードのIRQ、ポート番号を lspci コマンドで確認します。
NetMOS~ と表示されているデバイスが、この増設ボードです。
IRQ番号を確認し、メモします。
また、I/O ports at XXXX と複数行表示されますが、
上から2行分の XXXX の部分をメモしておきます。
1行目が ttyS4、2行目が ttyS5 のポート番号になります。
5. /etc/rc.d/rc.local に以下の2行を記述します。
XXXXの部分は、4.でメモしたそれぞれ1行目と2行目のポート番号を記述します。
irqのYYの部分は、4.でメモしたIRQ番号を記述します。
6. Linuxを再起動します。rebootコマンドでどうぞ。
7. 再起動後、ポートが有効になっているか確認します。
たとえば、ttyS4ならば
で、設定したポート番号、IRQなどがズラズラと表示されれば大丈夫でしょう。
8. シリアルポートに通信したい機器をつないで、テストします。
なお、ttyS4, ttyS5がどちらのポートかは、実際に通信をして確認してみてください。
以降は、毎回同じポートとデバイス名の対応となります。
※拡張ボードを挿すPCIスロットの位置を変更した場合は、4. の設定からやり直してください
正常に通信が出来れば、成功です。
なお、シリアルポートと通信を行うには、minicom を使用します。
minicom に関しては、
「Linuxでシリアルポートと通信を行う方法」の記事を参照してください。
全く付いていないものも多いです。
しかし、アナログモデムを接続したり、GPSレシーバを接続したり、
ネットワーク機器などとコンソールで通信を行う場合など、
意外とシリアルポートの出番はまだまだ多いものです。
そこで、あたしが今までに行った、
Linuxでシリアルポートを増設する方法を記述しておきます。
A. LinuxでUSB-RS232C変換ケーブルを使う
最もお手軽な方法は、USB接続のシリアル変換ケーブルを使う方法でしょう。
ただし、相性や安定性に問題が多いので、
サーバ用途にはあまりオススメできません。
また、Linuxに対応していない(ドライバが無い)ものも多いです。
あたしが確認した、確実にLinuxに対応しているUSB-RS232C変換ケーブルは、
FTDI社のチップを使っているものです。
あたしは、以下で売られている「US232R-10」(またはUS232R-100)を
購入し、USBに接続するだけで認識されたのを確認しています。
その他のFTDIチップを使っている製品でも大丈夫だと思います。
コンパス・ラブ USB to RS232 シリアル変換
http://www.compass-lab.com/USB_Serial/US232Cable.htm
なお、デバイス名は /dev/ttyUSB0 になると思いますが、
念のために dmesg で確認してください。
ただし、複数の変換ケーブルを接続した場合、
デバイス名がどの順序で割り当てられるのか、分かりません。
(固定する方法はありそうな気がしますが、あたしは分かりません;)
B. Linuxでシリアルポート増設ボードを使う
PCIスロットに増設して使うものです。
USB接続のものよりは、こちらのほうが確実に安定していると思います。
複数のポートがあっても、デバイス名とポート名を対応付けることが可能です。
あたしが動作を確認したものは、以下の製品です。
AREA RS232Cシリアルポート (外部) x2ポート増設PCIボード
ロープロファイル対応 SD-PCI9835-2SL
(メーカページ)
ちなみに、似たような増設ボードはいくつかありますが、
この製品がいちばん安かったと記憶しています。
この増設ボード(SD-PCI9835-2SL)をLinuxで使用する方法を
以下に書いておきます。
1. 増設ボードをPCIスロットに挿入します。
2. Linux起動時にデバイスの設定をするか聞かれた場合は、
設定(Configure)を選択します。
3. ttyS4, ttyS5 デバイスをルート権限で作成します。
(既にttyS0~ttyS3まではデフォルトで用意されているので、
重ならないように ttyS4, ttyS5 としておきます)
# mknod /dev/ttyS4 c 4 68
# mknod /dev/ttyS5 c 4 69
# chmod 660 /dev/ttyS4
# chmod 660 /dev/ttyS5
# chown root:uucp /dev/ttyS4
# chown root:uucp /dev/ttyS5
# mknod /dev/ttyS5 c 4 69
# chmod 660 /dev/ttyS4
# chmod 660 /dev/ttyS5
# chown root:uucp /dev/ttyS4
# chown root:uucp /dev/ttyS5
4. シリアル増設ボードのIRQ、ポート番号を lspci コマンドで確認します。
# lspci -v | less
NetMOS~ と表示されているデバイスが、この増設ボードです。
IRQ番号を確認し、メモします。
また、I/O ports at XXXX と複数行表示されますが、
上から2行分の XXXX の部分をメモしておきます。
1行目が ttyS4、2行目が ttyS5 のポート番号になります。
5. /etc/rc.d/rc.local に以下の2行を記述します。
setserial /dev/ttyS4 port 0xXXXX uart 16550A irq YY baud_base 115200
setserial /dev/ttyS5 port 0xXXXX uart 16550A irq YY baud_base 115200
setserial /dev/ttyS5 port 0xXXXX uart 16550A irq YY baud_base 115200
XXXXの部分は、4.でメモしたそれぞれ1行目と2行目のポート番号を記述します。
irqのYYの部分は、4.でメモしたIRQ番号を記述します。
6. Linuxを再起動します。rebootコマンドでどうぞ。
7. 再起動後、ポートが有効になっているか確認します。
たとえば、ttyS4ならば
# setserial /dev/ttyS4 -a
で、設定したポート番号、IRQなどがズラズラと表示されれば大丈夫でしょう。
8. シリアルポートに通信したい機器をつないで、テストします。
なお、ttyS4, ttyS5がどちらのポートかは、実際に通信をして確認してみてください。
以降は、毎回同じポートとデバイス名の対応となります。
※拡張ボードを挿すPCIスロットの位置を変更した場合は、4. の設定からやり直してください
正常に通信が出来れば、成功です。
なお、シリアルポートと通信を行うには、minicom を使用します。
minicom に関しては、
「Linuxでシリアルポートと通信を行う方法」の記事を参照してください。
コメント 0