cat: /dev/ttyS0: 入力/出力エラー

cat: /dev/ttyS0: 入力/出力エラー

文章を書いたり読んだりできない/dev/ttyS0

# cat /dev/ttyS0                
cat: /dev/ttyS0: Input/output error

デバイスが存在し、ルートに権限があります。

# ls -lAhF /dev/ttyS0
crw------- 1 root root 4, 64 Nov 18 12:09 /dev/ttyS0

# setserial -g /dev/ttyS0 
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4

# dmesg | egrep -i 'serial|ttys'
[    1.243271] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[ 2703.151301] ttyS0: LSR safety check engaged!

# cat /proc/devices | grep tty  
  4 tty
  4 ttyS
  5 /dev/tty

カーネルでシリアルを有効にしました。

# grep SERIAL config
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_NR_UARTS=1
CONFIG_SERIAL_8250_RUNTIME_UARTS=1
CONFIG_SERIAL_CORE=y

シリアル作業をするにはどうすればよいですか?

ベストアンサー1

シリアルデバイスを正しく動作させるには、多くの構成(転送速度、ストップビット、スタートビット、パリティなど)が必要です。一般的に言えば、cat / echoを使用してアクセスしようとするとすぐには機能せず、使用するのに良い方法ではありません。

シリアルデバイスの使用のユースケースは何ですか?こんなアプリが使えますか?minicom(望むより:https://www.youtube.com/watch?v=35gdWj94-lQ) またはmicrocomデバイスにアクセスして必要な設定を提供しますか?そうでない場合はお試しください。sttyecho / catを試す前に、デバイスからシリアル設定を読み書きしてください。

Pythonの経験がある場合は、試してみることをお勧めします。pyシリアルポート(望むより:https://pyserial.readthedocs.io/en/latest/pyserial_api.html)図書館。これにより、プログラムでシリアル設定を設定し、シリアルポートオブジェクトへの読み書きを呼び出すことができます。

おすすめ記事