私はシリアル通信の専門家ではないので、ずっと前に試しました。私の当面の目標は、Sun Sparc T5140のサービスプロセッサに接続することでしたが、これ以降、複数のデバイスに接続しようとしましたが、毎回同じ結果になりました。画面/端末が空白になり、カーソルが移動せず、画面/端末で何も起こりません。
ホスト(別のホストも試しました)とターゲットの間に、9ピンシリアルポートに接続されたストレート接続ケーブル(ヌルモデムケーブル)を入手しました。
この方法で、使用しているポートを確認しました。
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0 RTS|DTR
1: uart:16550A port:000002F8 irq:3 tx:0 rx:0
これにより、電気的に接続されているのはttyS0であることがわかります。
私はまた、粗い、さまざまなモード/速度などを試しました。
Minicom、screen、PuTTYなどのさまざまなクライアントを試しましたが、すべてこの空の画面/ターミナルに表示され、何も表示されず、入力も行われません。試したことのないクライアントは他にもありますが、その必要はないと思います。問題は他の場所にあります。
ケーブルを検討しましたが、今日は信頼できる店で購入しましたが、電気接続をしているので正しいと思います…?しかし、ここではわかりません...
TtyS0またはttyS1以外のものを使用すると、画面に次のように表示されます。
[root@tc1 ~]# screen /dev/ttyS2
[screen is terminating]
これは、通信がないか、デバイスが構成されていないことを意味しているに違いありません。
これにより、電気的に接続されているのはttyS0であることがわかります。
申し訳ありませんが、あなたはここで間違っています。
RTSおよびDTR信号は、何かがローカル側のポートをアクティブにしていること、つまりscreen
、minicom
、ModemManager
、agetty
またはコンピュータのポートで実行されている同様のプログラム。どちらも発信信号であるため、リモート側については何も伝えません。 fuser -u /dev/ttyS0
をルートとして使用して、ポートをアクティブ化しているローカルプロセスのPIDを取得します。
信じられない場合は、screen /dev/ttyS1
を実行し、実行中に別のウィンドウでcat /proc/tty/driver/serial
を再度実行します。これで、ttyS1RTSおよびDTR信号もアクティブになっているはずです。
一方、CTSおよびDSR信号は、次の2つのことを示します。
多くの場合、シリアル接続が機能する直前に、シリアル接続のパラメータも必要です。最も一般的な変数は、接続のボーレート(速度)です。T5140のコンソールポートでは、最初に9600bpsを試します。他のデバイスも38400または115200bpsを使用する場合があります。これらは私の経験で最も一般的な値です。
他のパラメータは、データビット数(8が今日最も一般的な値)、パリティ( "none"が最も一般的)、およびストップビット数(1が最も一般的)です。
すべてのパラメータが正しい場合でも、入力として有効な文字を取得するまで、もう一方の端は何も送信しない可能性があります。したがって、screen
またはminicom
を開始したら、Enterキーを1回または2回押します。
ほとんどのシリアルコンソール接続は「リモートエコー」の原則に基づいて機能します。何かを入力すると、入力した文字は画面に表示されずにシリアルポートから送信されます。リモートエンドが文字をエコーバックした場合にのみ、文字が表示されます。これにより、パスワードを画面に表示せずに入力するなどの操作が可能になり(リモートエンドはパスワード入力のエコー機能を無効にするだけなので)、入力した文字が正しく受信されたことを通知します。
人間が使用することを意図していないシリアル接続では、このリモートエコー機能が省略される場合があります。このような接続のトラブルシューティングを行う場合は、ターミナルエミュレータプログラムで「ローカルエコー」機能をアクティブにすることをお勧めします(「画面」の「Q」とminicom
のkeyboard "設定セクションなど)。ローカルエコーとリモートエコーの両方を同時に有効にしている場合、入力した内容はすべて画面に表示されます。