SMBMSG(8) | FreeBSD System Manager's Manual | SMBMSG(8) |
名称
smbmsg — SMBus でメッセージを送信するか、または受信する書式
smbmsg | [ -f dev] -p |
smbmsg | [ -f dev] -s slave [ -F fmt][ -c cmd][ -w][ -i incnt][ -o outcnt][ outdata ...] |
解説
smbmsg ユーティリティは SMBus 上で送信されるか受信されるメッセージのために使用することができます。 SMBus については smbus(4) を参照。 smbmsg ユーティリティには、操作の 2 の異なった modi があります。構文で示される最初の形式は、SMBus 上のデバイスを“プローブ” (調査) するために使用することができます。それは、それぞれ、1 つの受信バイトをそれぞれの有効なデバイスアドレスに送信することによって、および迅速にメッセージを読み込むことによって行われます。これらの要求に応答するデバイスは、文字列‘ r
’, ‘ w
’または‘ rw
’が続くそれらのデバイスアドレスで表示されます。それらの文字列は、それぞれ、読み込み可能、書き込み可能、または読み込み可能で書き込み可能なデバイスを表します。この modus の操作のために有効な唯一の追加オプションは (modus を選択する -p オプションのほかに) -f dev です。解説に関して下記を参照してください。
個々のデバイスが言及されたメッセージの 1 つを受信するとき、求められていない動作を実行するかもしれないので、バスをプローブすることは危険であることに注意してください。例えば、特定の SMBus デバイスが、システムの電源を切る要求としてそれに なんらかの 書き込み操作が発行されたと見なすなら、プローブはこの動作の引き金となるでしょう。
構文で示された 2 番目の形式は、個々のデバイスから任意のメッセージを送信するかまたは受信するために使用することができます。これは、SMBus 上の個々のデバイスを検索するか、またはバスでメンテナンス操作を実行する短いシェルスクリプトを書くことに役に立つかもしれません。
コマンドラインでの任意のデータ値は、バイト値のための範囲 0 から 255 の整数値、または、ワード値のための範囲 0 から 65535 の整数値です。それらは、標準の‘ C
’記法 (8 進解釈のための接頭辞 0、または 16 進解釈のための接頭辞 0x) を使用して指定することができます。
SMBus のデバイスのデバイスアドレスの下位ビットが読み込みと書き込み操作を選択するので、偶数のスレーブアドレスだけバス上に存在することができます。
オプションは次の通りです:
- -F fmt
-
入力データを表示するために使用される
printf(3) 形式を指定します。このオプションは SMBus デバイスからなにも入力も読み込まないメッセージで無視されます。デフォルトの形式は、バイト入力操作のための‘
0x%02x
’と、ワード入力操作のための‘0x%04x
’です。マルチバイト入力 (ブロック読み込み) において、同じ形式が SMBus から読み込まれたそれぞれの個々のバイトに使用されます。 - -c cmd
- これは SMBus メッセージの一部として発行される command バイトの値です。
- -f dev
- これは、 dev がデフォルトの /dev/smb0 よりむしろ、SMBus への接続として使用されるべきであることを指定します。
- -i incnt
- SMBus メッセージは、デバイスから incnt バイトを読み込むために生成されるべきです。
- -o outcnt
- SMBus メッセージは、デバイスへ outcnt バイトを書き込むために生成されるべきです。書き込みのためのデータ値は、データバイトの数が outcnt 値に適合しなければならないコマンドラインでのオプション (とそれらの引数) のすべてに続くと予想されます。
- -p
- これは probe bus modus の操作を選択します。
- -s slave
- slave パラメータは、どの SMBus デバイスに接続するかを指定します。このオプションは、スレーブアドレスが強制的な、 transfer messages from/to device (デバイスから/への転送メッセージ) modus の操作も選択します。
- -w
- このオプションは、I/O 操作がバイト操作よりむしろワード操作であることを指定します。 incnt または outcnt (または両方) のどちらかがこの場合 2 と等しくなければなりません。 SMBus バイト順はリトルエンディアン (下位バイトが最初で高位バイトが続く) となるように定義されていることに注意してください。
すべての引数組み合わせは、有効な SMBus メッセージを形式化するために意味がありません。 -c cmd オプションが提供されていないなら、次のメッセージを発行することができます:
メッセージ | incnt | outcnt |
quick read | 0 | - |
quick write | - | 0 |
receive byte | 1 | - |
send byte | - | 1 |
カウント値にはそれぞれのオプションを完全に省略するのと異なった意味があるので、0 を指定することに特に注意してください。
-c cmd オプションを使用してコマンド値が与えられたなら、次のメッセージを生成することができます:
メッセージ | -w | incnt | outcnt |
read byte | no | 1 | - |
write byte | no | - | 1 |
read word | yes | 2 | - |
write word | yes | - | 2 |
process call | yes | 2 | 2 |
block read | no | ≥ 2 | - |
block write | no | - | ≥ 2 |
関連ファイル
- /dev/smb0
- -f dev が指定されていない場合に、接続するデフォルトのデバイス。
終了ステータス
終了ステータスは、成功すれば 0、または失敗の場合は sysexits(3) に従います。使用例
smbmsg コマンドの典型的な使用例は:
smbmsg -f /dev/smb1 -p
/dev/smb1 にアタッチされた SMBus 上のすべてのデバイスをプローブします。
smbmsg -s 0x70 -i 1
アドレス 0x70 でデバイスへの receive byte (受信バイト) メッセージを発行し、デフォルトの形式を使用して受信バイトを表示します。
smbmsg -s 0x70 -c 0xff -i 1 -F %d
デバイスに送信するためにコマンドバイトとして 255 (0xff) を使用して、スレーブアドレス 0x70 でデバイスへの read byte メッセージを発行して、カスタム形式‘ %d
’を使用して結果を表示します。
smbmsg -s 0xa0 -c 0 -o 1 0x80
コマンドバイト値として 0、および (コマンドの後に) 送信するためのバイトとして 0x80 を使用して、アドレス 0xa0 でスレーブデバイスへ write byte (書き込みバイト) メッセージを送信します。これが Philips PCF8583 リアルタイムクロックであるかもしれないと仮定すれば、これはクロックを停止するでしょう。
smbmsg -s 0xa0 -c 1 -i 6 -F %02x
アドレス 0xa0 でデバイスへ block read (ブロック読み込み) コマンドを送信し、 16 進表示を使用して、それから 6 バイトを読み込みます。さらに、PCF8583 RTC を仮定すれば、これは秒の端数、秒、分、時間、年/日、と週日/月の値を表示するでしょう。この RTC は BCD 記法を使用するので、表示された実際の値は 10 進です。
smbmsg -s 0xa0 -c 2 -o 5 0x00 0x07 0x22 0x16 0x05
アドレス 0xa0 でデバイスへ block write (ブロック書き込み) コマンドを送信します。 PCF8583 RTC のために、これは Sunday (2004%4)-05-16 22:07:00 にクロックを設定するでしょう。
診断
発行された診断メッセージは見ればすぐ分かるようになっているはずです。歴史
smbmsg ユーティリティは、 FreeBSD 5.3 ではじめて登場しました。作者
smbmsg ユーティリティとこのマニュアルページは、 によって書かれました。May 16, 2004 | FreeBSD |