ฉันจะแยกไมโครโค้ด (ucode) ใน iwlwifi เพื่อรับหมายเลขรุ่นได้อย่างไร


11

ฉันมีการ์ดไร้สาย Intel ขับเคลื่อนโดยiwlwifiและฉันสามารถดูข้อความต่อไปนี้ใน dmesg:

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

เนื่องจากฉันทราบว่าหยดใดถูกโหลดฉันจะทราบรุ่นของหยดนี้ ( .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

คำตอบ:


8

iwlwifiไดรเวอร์โหลดไฟล์เฟิร์มแวสำหรับคุณอินเตอร์เน็ตไร้สายอะแดปเตอร์ที่เริ่มต้น หากคุณต้องการที่จะรู้ว่ารุ่นของ blobs ที่คุณมีในเครื่องของคุณให้ลองสคริปต์แอนดรูมป์ของ วิ่ง:

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

และเปรียบเทียบเอาต์พุตกับเจอร์นัลของคุณ ( dmesgเอาต์พุต)

python2โปรดทราบว่าสคริปต์ที่ทำงานร่วมกับ


1

ในฐานะที่เป็นบันทึกด้านข้างและการดูสคริปต์ Andrew Brampton ที่กล่าวถึงในคำตอบ @ don_crissti ของคุณจะได้รับผลลัพธ์เดียวกันจาก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.