User Tools

Site Tools


en:users:drivers:iwlwifi:debugging

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:users:drivers:iwlwifi:debugging [2017/02/26 10:33]
Emmanuel Grumbach [Privacy aspects]
en:users:drivers:iwlwifi:debugging [2022/05/30 08:07] (current)
Johannes Berg s/Luca/Gregory/ for bug reports
Line 1: Line 1:
 ====== Bugs and support ====== ====== Bugs and support ======
 +
 +===== Before you contact us... =====
 +We try to give the best support we can with the best response time possible. We also don't have several levels of support, by contacting us, you contact the developers who are also busy with other tasks. Before reaching out to us, please make sure you have a supported Intel Wi-Fi device and that it is enabled. Many request are for problems in the rfkill area where the platform pulls the rfkill signal preventing us from doing anything.
 +
 +If you see that Wi-Fi is hard blocked like in:
 +
 +<​code>​
 +3: phy0: Wireless LAN
 +  Soft blocked: yes
 +  Hard blocked: yes
 +</​code>​
 +
 +you can blacklist the WMI module and see if that helps. The name of the WMI module will vary depending on the OEM. A simple lsmod | grep wmi should give you a hint of what module to blacklist.
  
 ===== How to report? ===== ===== How to report? =====
-Issues can be filed in [[http://​bugzilla.kernel.org|kernel'​s bugzilla]]. Make sure to add [[mailto:linuxwifi@intel.com|linuxwifi@intel.com]] to the bug.+Issues can be filed in [[http://​bugzilla.kernel.org|kernel'​s bugzilla]]. 
 + 
 +Make sure to set  
 + 
 +  * ProductDrivers 
 +  * Component: network-wireless-intel 
 Always attach the kernel log to your reports: Always attach the kernel log to your reports:
 <​code>​dmesg > dmesg.log</​code>​ and attach dmesg.log to the bug. <​code>​dmesg > dmesg.log</​code>​ and attach dmesg.log to the bug.
Line 12: Line 31:
 ==== Prints ==== ==== Prints ====
  
-The simplest way to provide minimal output is to dump your kernel log: dmesg. Sometimes we will ask for logs from the supplicant too - they typically land in syslog. iwlwifi can print more data to the kernel log if asked to: this is controlled by the debug module parameter. This is a [[https://​git.kernel.org/​cgit/​linux/​kernel/​git/​stable/​linux-stable.git/​tree/​drivers/​net/​wireless/​intel/​iwlwifi/​iwl-debug.h#​n143|bitmap]]. To see more debug prints, [[https://​git.kernel.org/​cgit/​linux/​kernel/​git/​stable/​linux-stable.git/​tree/​drivers/​net/​wireless/​intel/​iwlwifi/​Kconfig#​n105|CONFIG_IWLWIFI_DEBUG]] must be enabled. ​+The simplest way to provide minimal output is to dump your kernel log: dmesg. Sometimes we will ask for logs from the supplicant too - they typically land in syslog. iwlwifi can print more data to the kernel log if asked to: this is controlled by the debug module parameter. This is a [[https://​git.kernel.org/​cgit/​linux/​kernel/​git/​stable/​linux-stable.git/​tree/​drivers/​net/​wireless/​intel/​iwlwifi/​iwl-debug.h#​n129|bitmap]]. To see more debug prints, [[https://​git.kernel.org/​cgit/​linux/​kernel/​git/​stable/​linux-stable.git/​tree/​drivers/​net/​wireless/​intel/​iwlwifi/​Kconfig#​n105|CONFIG_IWLWIFI_DEBUG]] must be enabled. ​
 Please don't add debug level unless instructed to do so. Adding more prints typically adds useless information. Please don't add debug level unless instructed to do so. Adding more prints typically adds useless information.
  
Line 23: Line 42:
  
 <​code>​sudo trace-cmd record -e iwlwifi -e mac80211 -e cfg80211 -e iwlwifi_msg</​code>​ <​code>​sudo trace-cmd record -e iwlwifi -e mac80211 -e cfg80211 -e iwlwifi_msg</​code>​
-This records all the data that goes from and to the firmware. The output is a file: trace.dat which you can compress prior to sending. To enable tracing, [[https://​git.kernel.org/​cgit/​linux/​kernel/​git/​stable/​linux-stable.git/​tree/​drivers/​net/​wireless/​iwlwifi/​Kconfig#​n130|CONFIG_IWLWIFI_TRACING]] must be set.+This records all the data that goes from and to the firmware. The output is a file: trace.dat which you can compress prior to sending. To enable tracing, [[https://​git.kernel.org/​pub/scm/​linux/​kernel/​git/​stable/​linux.git/​tree/​drivers/​net/​wireless/intel/​iwlwifi/​Kconfig#​n139|CONFIG_IWLWIFI_DEVICE_TRACING]] must be set. 
 + 
 +**//Note: you must not remove the iwlwifi kernel module while tracing is running. You need to stop the tracing first!//**
  
 ==== Air sniffing ==== ==== Air sniffing ====
Line 29: Line 50:
 The output of the air sniffing operation is a file with a pcap extension that can be parsed by the [[https://​www.wireshark.org|Wireshark]] program. The output of the air sniffing operation is a file with a pcap extension that can be parsed by the [[https://​www.wireshark.org|Wireshark]] program.
 === How to get a sniffer capture with your Intel device === === How to get a sniffer capture with your Intel device ===
-In order to put your device in monitor mode and get a sniffer capture, you first need to stop using it as a WiFi client. To do so there are several options: +To capture all A-MSDUs, you need to reload the iwlwifi driver with the ''​amsdu_size=3''​ module parameter. 
-  * Disable ​WiFi from the Network Manager GUI and re-enable manually with <​code>​rfkill unblock wifi </​code>​ This may not work on all the distributions.+ 
 +In order to put your device in monitor mode and get a sniffer capture, you first need to stop using it as a Wi-Fi client. To do so there are several options: 
 +  * Disable ​Wi-Fi from the Network Manager GUI and re-enable manually with <​code>​rfkill unblock wifi </​code>​ This may not work on all the distributions.
   * Disable the Network Manager and kill the wpa_supplicant<​code>​sudo service NetworkManager stop   * Disable the Network Manager and kill the wpa_supplicant<​code>​sudo service NetworkManager stop
 sudo killall wpa_supplicant</​code>​ sudo killall wpa_supplicant</​code>​
Line 44: Line 67:
 <​code>​sudo tcpdump -i wlan0 -w capture.pcap</​code>​ <​code>​sudo tcpdump -i wlan0 -w capture.pcap</​code>​
 This file can be opened by [[https://​www.wireshark.org/​|Wireshark]] and sent for analysis by our developers. Note that this file can be fairly large if you capture a lot of traffic, but it can be compressed very efficiently. This file can be opened by [[https://​www.wireshark.org/​|Wireshark]] and sent for analysis by our developers. Note that this file can be fairly large if you capture a lot of traffic, but it can be compressed very efficiently.
-=== How to put your WiFi device back in normal client mode ===+=== How to put your Wi-Fi device back in normal client mode ===
 In order to get your device back in a regular client mode, you can either reboot or start the NeworkManager again: In order to get your device back in a regular client mode, you can either reboot or start the NeworkManager again:
 <​code>​sudo service NetworkManager start</​code>​ <​code>​sudo service NetworkManager start</​code>​
Line 55: Line 78:
 Getting data from the firmware can often provide a lot of information,​ especially when the traffic is being stalled, latency is high, queues are stuck etc.. Here is how to do so. This is working starting kernel 3.19. Getting data from the firmware can often provide a lot of information,​ especially when the traffic is being stalled, latency is high, queues are stuck etc.. Here is how to do so. This is working starting kernel 3.19.
  
-First you'll need to allow DEV_COREDUMP by setting CONFIG_ALLOW_DEV_COREDUMP to Y.+You'll need to allow DEV_COREDUMP by setting CONFIG_ALLOW_DEV_COREDUMP to Y.
 Then, you'll need to create a core dump. This can be done by: Then, you'll need to create a core dump. This can be done by:
  
Line 86: Line 109:
 This way, each time a dump is created it will automatically land on your file system. ​ Remember to make the /​sbin/​iwlfwdump.sh file executable (i.e. ''​chmod a+x /​sbin/​iwlfwdump.sh''​),​ so that the udev rule can execute it, otherwise it won't work. This way, each time a dump is created it will automatically land on your file system. ​ Remember to make the /​sbin/​iwlfwdump.sh file executable (i.e. ''​chmod a+x /​sbin/​iwlfwdump.sh''​),​ so that the udev rule can execute it, otherwise it won't work.
  
-To debug the firmware you'll typically need a customized version of it. This customization depends on the bug you are facing. 
 Starting from 4.1, we can trigger firmware dumps when issues occur (e.g. when the association fails) this again requires a customized firmware. In that case, the developer working with you will let you know and you won't have to trigger the dump yourself using fw_dbg_collect debugfs hook. Starting from 4.1, we can trigger firmware dumps when issues occur (e.g. when the association fails) this again requires a customized firmware. In that case, the developer working with you will let you know and you won't have to trigger the dump yourself using fw_dbg_collect debugfs hook.
  
Line 99: Line 121:
 In this case, please copy the full dmesg output since there may be data before and after this message that can be helpful. In this case, please copy the full dmesg output since there may be data before and after this message that can be helpful.
  
-In case of a firmware crash or queues being stuck, a dump will be automatically created. If you have the udev rule in place, you'll see the dump on your file system. No customization needed in that case, the dump from a regular firmware will already include valuable data, but the firmware ​team is likely to ask reproduction with customized ​version.+In case of a firmware crash or queues being stuck, a dump will be automatically created. If you have the udev rule in place, you'll see the dump on your file system. No customization needed in that case, the dump from a regular firmware will already include valuable data, but we usually need more information than the data provided by a release version of the firmware. When you report ​bug, please use a debug firmware  
 +from the list below. This will allow to include more data in the dump at the cost of extra PCI transactions:​ 
 + 
 +{{en:​users:​drivers:​iwlwifi:​iwlwifi-3160-17.ucode.gz|debug firmware ​version ​for 3160}} 
 + 
 +{{en:​users:​drivers:​iwlwifi:​iwlwifi-7260-17.ucode.gz|debug firmware version for 7260}} 
 + 
 +{{en:​users:​drivers:​iwlwifi:​iwlwifi-7265-17.ucode.gz|debug firmware version for 7265}} 
 + 
 +{{en:​users:​drivers:​iwlwifi:​iwlwifi-7265d-29.ucode.gz|debug firmware version for 7265D}} 
 + 
 +{{en:​users:​drivers:​iwlwifi:​iwlwifi-3168-29.ucode.gz|debug firmware version for 3168}} 
 + 
 +{{en:​users:​drivers:​iwlwifi:​iwlwifi-8000C-36.ucode.gz|debug firmware version for 8260}} 
 + 
 +{{en:​users:​drivers:​iwlwifi:​iwlwifi-8265-36.ucode.gz|debug firmware version for 8265}} 
 + 
 +{{en:​users:​drivers:​iwlwifi:​iwlwifi-9000-pu-b0-jf-b0-43.ucode.gz|debug firmware version for 9000}} 
 + 
 +{{en:​users:​drivers:​iwlwifi:​iwlwifi-9260-th-b0-jf-b0-43.ucode.gz|debug firmware version for 9260}} 
 ==== Privacy aspects ==== ==== Privacy aspects ====
  
Line 108: Line 150:
   * Emmanuel Grumbach (18D075865D915B5E386F660F2D0B96FE6E363201);​   * Emmanuel Grumbach (18D075865D915B5E386F660F2D0B96FE6E363201);​
   * Johannes Berg (C0EBC440F6DA091C884D8532E0F373F37BF9099A);​   * Johannes Berg (C0EBC440F6DA091C884D8532E0F373F37BF9099A);​
-  * Luciano Coelho ​(1772CD7E06F604F5A6EBCB26A1479CA21A3CC5FA).+  * Gregory Greenman ​(F5C83636E8E2909E44319BAC083082600E73773C).
  
 For instance: For instance:
  
-<​code>​gpg --encrypt -r 18D075865D915B5E386F660F2D0B96FE6E363201 -r C0EBC440F6DA091C884D8532E0F373F37BF9099A -r 1772CD7E06F604F5A6EBCB26A1479CA21A3CC5FA ​<​file_to_encrypt></​code>​+<​code>​ 
 +gpg --recv-keys C0EBC440F6DA091C884D8532E0F373F37BF9099A F5C83636E8E2909E44319BAC083082600E73773C 18D075865D915B5E386F660F2D0B96FE6E363201 
 +gpg --encrypt -r 18D075865D915B5E386F660F2D0B96FE6E363201 -r C0EBC440F6DA091C884D8532E0F373F37BF9099A -r F5C83636E8E2909E44319BAC083082600E73773C ​<​file_to_encrypt></​code>​
  
 This will generate a new, encrypted file that you should provide to us.  Any of, and only, these developers will be able to open the file.  Adding the three keys during encryption allows us to respond faster, since we're not restrained by a single developer'​s availability. This will generate a new, encrypted file that you should provide to us.  Any of, and only, these developers will be able to open the file.  Adding the three keys during encryption allows us to respond faster, since we're not restrained by a single developer'​s availability.
en/users/drivers/iwlwifi/debugging.1488105189.txt.gz · Last modified: 2017/02/26 10:33 by Emmanuel Grumbach