Sürüm numaralarını almak için iwlwifi içindeki mikro kodu (ucode) nasıl ayrıştırabilirim?


11

Tarafından yönlendirilen bir Intel kablosuz kartım var iwlwifive dmesg'de şu mesajı görebiliyorum:

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

Hangi blob'un yüklendiğini bildiğim için, bu blobun ( .ucodedosyanın) sürümünü nasıl bulabilirim ?

Ucode'un yüklendiği yere bakarsanız, sürüm bilgisini sadece bir blobun yüklendiğini söylemez. Ancak Intel'in bunların sürümlerini biliyorum.

$ 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
Sistemin her açılışında bir bellenim yüklemeyebileceğinden şüpheleniyorum, ancak yalnızca ethernet kartında hangi bellenim sürümünün çalıştığını bildiriyor.
fduff

Yanıtlar:


8

iwlwifiSürücüsü için mikrokodu dosyasını yükleyen wifi başlangıçta adaptör. Makinenizde bulunan lekelerin sürümünü öğrenmek istiyorsanız Andrew Brampton'ın komut dosyasını deneyin . Çalıştırmak:

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

Ve çıktıyı derginizle ( dmesgçıktı) karşılaştırın.

Komut dosyasının ile çalıştığını unutmayın python2.


1

Bir yan not olarak ve @ don_crissti'nin cevabında belirtilen Andrew Brampton senaryosuna bakarak , aynı çıktıyı tersine mühendislik çerçevesi olan Radare2'den alabilirsiniz .

pf x[4]z[64]zN1N1N1N1 magicfile magicblob text serial api minor major
  • pf biçimlendirilmiş verileri yazdır
    • x 0xHEX value and flag (fd @ addr) (see 'd' and 'i')
    • [4]z null terminated string en az 4 boy
    • [64]z null terminated string en az 64 boy
    • N1N1N1N1 next char specifies size of unsigned value (1, 2, 4 or 8 byte(s))

Bunu böyle bir komut dosyasından çalıştırabilirsiniz,

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;

İşte bazı örnek çıktı

 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

Sen geriye onları çalmak, major.minor.api.serialalmak18.168.6.1

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.