Como posso analisar o microcódigo (ucode) no iwlwifi para obter os números de versão?

10

Eu tenho uma placa sem fio da Intel acionada por iwlwifi e vejo a seguinte mensagem no dmesg:

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

Dado que sei qual blob está carregado, como posso descobrir a versão deste blob ( .ucode file)?

    
por daisy 19.07.2012 / 12:34

2 respostas

8

O driver iwlwifi carrega o arquivo de microcódigo para o seu adaptador wifi na inicialização. Se você quiser saber a versão dos blobs que você tem em sua máquina, tente o script de Andrew Brampton . Executar:

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

E compare a saída com o seu diário ( dmesg output).

Observe que o script funciona com python2 .

    
por 24.08.2012 / 02:58
1

Como observação, e olhando para o script de Andrew Brampton mencionado na @ resposta do don_crissti , você pode obter a mesma saída de Radare2 que é uma estrutura de engenharia reversa.

pf x[4]z[64]zN1N1N1N1 magicfile magicblob text serial api minor major
  • pf imprime dados formatados
    • x 0xHEX value and flag (fd @ addr) (see 'd' and 'i')
    • [4]z null terminated string de min-length 4 size
    • [64]z null terminated string de min-length 64 size
    • N1N1N1N1 next char specifies size of unsigned value (1, 2, 4 or 8 byte(s))

Você pode executar isso de um script como este,

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;

Aqui está um exemplo de saída

 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

Você os reproduz de trás para a frente, major.minor.api.serial para obter 18.168.6.1

    
por 28.06.2018 / 01:41