だから私は周りを見回し、/dev/ttyS0
ハムラジオ/dev/ttyUSB0
アクセサリーを操作しようとすると、それを壊した。ttyS0
無線送信を制御し、/dev/ttyS0
一般ユーザーとしてcatを実行すると、無線が送信されます。
ところで、ラジオに使用していたモデムソフトウェア(FLdigi)を実行すると動作しませttys0
ん。プログラムを起動すると、ログに「シリアルポートテストの失敗」というメッセージが表示されます。私は「dialout」グループと「uucp」グループの両方に属しているので、これがうまくいくと思います。
ランニングについて私が覚えていることの一つはですsudo chmod 777 /dev/ttyS0
。何にリセットするのか分かりません。同じユーザーがアクセスできるのに実行中のソフトウェアがアクセスできない理由についてのアイデアはありますか?
答え1
ポートを使用するには、そのポートが開いているアプリケーションがないことを確認してください。
カーネルログにメッセージがないことを確認します(を使用して
dmesg
)。アプリケーションで正確に何が起こっているかを確認してください。アプリケーションを実行すると、
strace
アプリケーションで実行されたシステムコールが報告されます。次のようなものを使用したい場合があります。$ strace -f -s 512 -o /path/to/application.log.strace application ...
strace
これはまた、最大512バイトまで文字列を記録する子プロセスになり、すべて/path/to/application.log.strace
アプリケーションの可能な引数を表す楕円で終わります。 PID(パラメータ)で識別される実行中のプロセスstrace
に接続するように指示することもできます。詳細については、マニュアルページを-p
参照してください。strace(1)
ログの最後にwrite()
エラーメッセージを出力する呼び出しを見つけることができます。可能比較的この直前に、open()
or write()
(デバイスファイル内)は-1を返します。これにより、エラーの原因が何であるかがわかります。
権限に関する注意:chmod 777
ファイルを実行可能にするため、使用したくありません。これは、実行可能ファイルやディレクトリ以外のものには良い考えではありません。デバイスファイルの場合(特性に応じて)、合理的な値は0640または0660です。これは、ルートへのフルアクセスとグループへの読み取りまたは読み取り/書き込みアクセスを許可します(ユーザーはアクセス権を取得するにはグループのメンバーである必要があります。あなたの場合)これはおそらくあなたがdialout
言及したグループです)。
ほとんどの場合、前にゼロを追加することをお勧めします(たとえば、chmod 0664
suidビットが削除され、結果が通常良いアイデアです)。