シリアル端末用のシェルをホストする方法は?

シリアル端末用のシェルをホストする方法は?

Arduinoで愚かな端末を作成していますが、シリアル接続の出力を見ることができます。ログイン/シェルはどのように入手できますか?私はこれを試しましたが、それをscreen /dev/ttyACM0介してホストコンピュータに入力し、ターミナル画面で結果を見ることができますが、シェルはありません。 screen:exec /bin/shコマンドを使用すると、コントロールxtermウィンドウでシェルが起動しますが、シリアルラインに出力されなくなります。agetty -L /dev/ttyACM0 9600しばらく座って待ってから、画面に何も表示せずに終了するさまざまな方法を試しました。これを試しましたが、cu -l /dev/ttyACM0 -s 9600画面のやり取りなしで再び停止します。画面のようにミニコムをArduinoに接続しましたが、シェルを入手する方法がわかりません。確かに、私はArduinoベースの端末を介して私のメインコンピュータにアクセスしようとしていますが、私のメインコンピュータはUSBシリアル接続を介してArduinoにシェルセッションを提供する方法を見つけることができません。

ベストアンサー1

agetty問題についてはかなり静かなようです。私は試した:

$ strace -e open agetty -I 'hello\012' -L /dev/ttyS0 9600

開かれまし/dev//dev/ttyS0たが、もちろん失敗しました。その後、数秒間停止してから停止しました。

マニュアルページには相対ファイル名が必要であることが示されているので、次のことを試しました。

$ strace -e open agetty -I 'hello\012' -L ttyS0 9600

今回は正しいデバイスを開いたが再び失敗する。

open("/dev/ttyS0", O_RDWR|O_NOCTTY|O_NONBLOCK) = -1 EACCES (Permission denied)

最後に、これは成功し、ttyに何かを書きました:

$ sudo strace -e open agetty -I 'hello\012' -L ttyS0 9600

setsidレビューで言及した内容も追加する必要があります。 systemd(使用可能な場合)を使用してログインを開始することもできます。

$ sudo systemctl start serial-getty@ttyACM0

これは、サービスを使用している場合は、デバイスが作成されるたびに自動的に開始できますagetty--keep-baud 115200,38400,9600systemctl enablettyACM0

おすすめ記事