This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
en:users:drivers:iwlwifi:debugging [2021/01/21 07:32] Golan Ben Ami [Firmware Debugging] |
en:users:drivers:iwlwifi:debugging [2022/05/29 14:27] Johannes Berg |
||
---|---|---|---|
Line 42: | 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/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/wireless/intel/iwlwifi/Kconfig#n139|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!//** | **//Note: you must not remove the iwlwifi kernel module while tracing is running. You need to stop the tracing first!//** | ||
Line 50: | 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 === | ||
+ | To capture all A-MSDUs, you need to reload the iwlwifi driver with the ''amsdu_size=3'' module parameter. | ||
+ | |||
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: | 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 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. | ||
Line 76: | 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 need to add the debug configuration. Open the debug file: | + | You'll need to allow DEV_COREDUMP by setting CONFIG_ALLOW_DEV_COREDUMP to Y. |
- | <code> /lib/firmware/iwl-dbg-cfg.ini </code> | + | |
- | And add this text: | + | |
- | <code> | + | |
- | [IWL DEBUG CONFIG DATA] | + | |
- | FW_DBG_PRESET=1 | + | |
- | </code> | + | |
- | + | ||
- | Then, 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: | ||