iwlwifiのマイクロコード(ucode)を解析してバージョン番号を取得するにはどうすればよいですか?


11

によって駆動されるIntelワイヤレスカードiwlwifiを使用しています。dmesgに次のメッセージが表示されます。

iwlwifi 0000:03:00.0: loaded firmware version 17.168.5.3 build 42301

ロードされているblobがわかっている場合、このblob(.ucodeファイル)のバージョンを確認するにはどうすればよいですか?

以下のucodeが読み込まれている場所を見ると、ブロブが読み込まれたことだけではバージョン情報がわかりません。しかし、私はこれらのIntelバージョンを知っています。

$ sudo dmesg | grep ucode
[   26.132487] iwlwifi 0000:03:00.0: firmware: direct-loading firmware iwlwifi-6000g2a-6.ucode
[40428.475015] (NULL device *): firmware: direct-loading firmware iwlwifi-6000g2a-6.ucode

1
システムが起動するたびにファームウェアがロードされない可能性がありますが、イーサネットカードで実行されているファームウェアのバージョンのみを報告します。
fduff 2007

回答:


8

iwlwifiドライバは、あなたのためのマイクロコードファイルロードのwifi起動時にアダプタを。マシンにあるblobのバージョンを知りたい場合は、Andrew Bramptonのスクリプトを試してください。実行:

## Note the firmware may stored in `/usr/lib`
./ucode.py /lib/firmware/iwlwifi-*.ucode

そして、出力をジャーナルと比較します(dmesg出力)。

スクリプトはで動作することに注意してくださいpython2


1

補足として、@ don_crisstiの回答に記載されているAndrew Bramptonスクリプトを見ると、リバースエンジニアリングフレームワークであるRadare2から同じ出力を得ることができます。

pf x[4]z[64]zN1N1N1N1 magicfile magicblob text serial api minor major
  • pf 書式付きデータを印刷する
    • x 0xHEX value and flag (fd @ addr) (see 'd' and 'i')
    • [4]z null terminated string 最小長4サイズ
    • [64]z null terminated string 最小長64サイズの
    • N1N1N1N1 next char specifies size of unsigned value (1, 2, 4 or 8 byte(s))

次のようなスクリプトから実行できます。

for f in /lib/firmware/iwlwifi-*.ucode; do
    echo $f;
    radare2 -qc "pf x[4]z[64]zN1N1N1N1 magicfile magicblob text serial api minor major" "$f";
done;

ここにいくつかの出力例があります

 magicfile : 0x00000000 = 0x00000000
 magicblob : 0x00000004 = IWL.
      text : 0x00000008 = 6000g2b fw v18.168.6.1 build 0.
    serial : 0x00000048 = 1
       api : 0x00000049 = 6
     minor : 0x0000004a = 168
     major : 0x0000004b = 18

あなたが逆方向にそれらを再生、major.minor.api.serial取得します18.168.6.1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.