> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Debug Wi-Fi issues

## **Report Wi-Fi issues**

To report an issue to [Qualcomm](https://www.qualcomm.com/support), provide the following details.

* Provide setup information
  |          **Information type**          |                                                                **Description**                                                               |
  | :------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------: |
  |          Platform information          |                                                      Platform name and software version                                                      |
  |          Wi-Fi AP information          |                                       Model name, channel/mode/bandwidth/security, and firmware version                                      |
  |              Related logs              | For more information, see [Logs for ath11k](#logs-for-ath11k), [Logs for ath12k](#logs-for-ath12k), and [Logs for ath10k](#logs-for-ath10k). |
  | Test setup, steps, and expected result |                                                Test procedures used while reporting the issue.                                               |
* Package all log files for debugging and report them to Qualcomm.
  The following table lists the logs required to report an issue.
  |      **Log name**     | **Protocol issues** | **Throughput issues** |
  | :-------------------: | :-----------------: | :-------------------: |
  |    Host driver logs   |       Required      |        Required       |
  |     Firmware logs     |       Required      |        Required       |
  | Wireless sniffer logs |     Recommended     |        Required       |
  |    Supplicant logs    |       Required      |        Required       |

## **Logs for ath11k**

The Wi-Fi subsystem offers tools and logs to assist with troubleshooting issues.

### **Pull Wpa\_supplicant logs**

If you observe any issue, run the following command to collect wpa\_supplicant logs:

```text theme={null}
scp -r root@<ip_addr>:/tmp/wpa_supplicant-log.txt .
```

For example, if the IP address of the DUT is `192.168.1.22`, run the following command:

```text theme={null}
scp -r root@192.168.1.22:/tmp/wpa_supplicant-log.txt .
```

### **Pull Wi-Fi host driver and firmware logs**

To pull the Wi-Fi host driver and firmware logs for the ath11k driver, do the following:

1. Run the `trace-cmd` tool on the DUT as follows:
   * For the entire log, run the following command:
     ```text theme={null}
     trace-cmd record -e ath11k_htt_pktlog -e ath11k_htt_ppdu_stats -e ath11k_htt_rxdesc -e ath11k_log_err -e ath11k_log_warn -e ath11k_log_info -e ath11k_wmi_cmd -e ath11k_wmi_event -e ath11k_log_dbg -e ath11k_log_dbg_dump -e ath11k_wmi_diag -e ath11k_ps_timekeeper
     ```
   * For firmware log, run the following command:
     ```text theme={null}
     trace-cmd record -e ath11k_wmi_diag
     ```
2. Run the intended test case or reproduce the issue.
3. Stop `trace-cmd` by pressing **Ctrl + C**.
   The `trace.dat` log appears as follows:
   **Sample output**
   ```text theme={null}
   root@qcm6490:/tmp#
   root@qcm6490:/tmp# trace-cmd record -e ath11k_htt_pktlog -e ath11k_htt_ppdu_stats -e ath11k_htt_rxdesc -e ath11k_log_err -e ath11k_log_warn -e ath11k_log_info
   -e ath11k_wmi_cmd -e ath11k_wmi_event -e ath11k_log_dbg -e ath11k_log_dbg_dump -e ath11k_wmi_diag -e ath11k_ps_timekeeper
   Hit Ctrl+C to stop recording
   ^CCPU0 data recorded at offset=0x7fc000 151552 bytes in size
   CPU1 data recorded at offset=0x821000 163840 bytes in size
   CPU2 data recorded at offset=0x849000
   0 bytes in size
   CPU3 data recorded at offset=0x849000
   0 bytes in size
   CPU4 data recorded at offset=0x849000
   0 bytes in size
   CPU5 data recorded at offset=0x849000
   0 bytes in size
   CPU6 data recorded at offset=0x849000
   0 bytes in size
   CPU7 data recorded at offset=0x849000
   0 bytes in size
   root@qcm6490:/tmp# ls -al
   ls: cannot access 'ssgtzd': Permission denied
   total 8600
   drwxrwxrwt. 10 root  root  280 Sep 16  06:21 .
   drwxr-xr-x. 22 root  root  4096 Sep  9 10:34 ..
   srw-rw-rw-. 1 system system   0 Apr 28  2022 property-vault.socket
   s?????????? ? ?       ?       ?            ? ssgtzd
   drwx------. 3 root   root   60 Apr 28 2022 systemd-private-e9b8fea895944dd5a0fd05770af20d6e-ModemManager.service-52N7rb
   drwx------. 3 root   root   60 Apr 28 2022 systemd-private-e9b8fea895944dd5a0fd05770af20d6e-bluetooth.service-1nYL2F
   drwx------. 3 root   root   60 Apr 28 2022 systemd-private-e9b8fea895944dd5a0fd05770af20d6e-chronyd.service-UmA8vV
   drwx------. 3 root   root   60 Jan  6 1980 systemd-private-e9b8fea895944dd5a0fd05770af20d6e-ninfod.service-nSxLqH
   drwx------. 3 root   root   60 Jan  6 1980 systemd-private-e9b8fea895944dd5a0fd05770af20d6e-rdisc.service-voag6w
   drwx------. 3 root   root   60 Apr 28 2022 systemd-private-e9b81ea895944dd5a0fd05770af20d6e-systemd-logind.service-kHhqPi
   drwx------. 3 root   root   60 Jan  6 1980 systemd-private-e9b8fea895944dd5a0fd05770af20d6e-systemd-resolved.service-hQ2tR3
   drwx------. 3 root   root   60 Jan  1 1970 systemd-private-e9b8fea895944dd5a0fd05770af20d6e-systemd-timesyncd.service-Ghf2u0
   -rw-r--r--. 1 root   root 8687616 Sep 16 06:21 **trace.dat**
   -rw-r-----. 1 root   root 114229 Sep 16 06:04 wpa_supplicant-log.txt
   ```
4. Copy the `trace.dat` log from the DUT to the Ubuntu host device.
5. Get the host and firmware logs as follows:
   * To get the host log from the `trace.dat` log, run the following command:
     ```text theme={null}
     trace-cmd report trace.dat > host.txt
     ```
     **Sample output**
     ```text theme={null}
     username@hu-username-hyd:/local/mnt/workspace/ath11k$ ls -al
     total 18464
     drwxrwxr-x 2 username users    4096 Aug 15 08:48 .
     drwxrwxrwt 12 root root      4096 Aug 15 08:48 ..
     -rw-r--r-- 1 username users 18898944 Aug 15 08:48 trace.dat
     username@hu-username-hyd:/local/mnt/workspace/ath11k$ trace-cmd report trace.dat > host.txt
     username@hu-username-hyd:/local/mnt/workspace/ath11k$ ls -al
     total 19500
     drwxrwxr-x 2 username users    4096 Aug 15 08:48 .
     drwxrwxrwt 12 root  root     4096 Aug 15 08:48 ..
     -rw-rw-r-- 1  username users 1059505 Aug 15 08:48 host.txt
     -rw-r--r-- 1  username users 18898944 Aug 15 08:48 trace.dat
     username@hu-username-hyd:/local/mnt/workspace/ath11k$
     ```
     You can install the `trace-cmd` tool by running the following command in the Ubuntu terminal:
     ```text theme={null}
     apt-get install trace-cmd
     ```
   * To get the firmware logs, share the `trace.dat` log and issue details on the support portal.

### **Capture driver logs in dmesg**

The ath11k commands for dmesg are as follows:

```text theme={null}
enum ath11k_debug_mask {
          ATH11K_DBG_AHB          = 0x00000001,
          ATH11K_DBG_WMI          = 0x00000002,
          ATH11K_DBG_HTC          = 0x00000004,
          ATH11K_DBG_DP_HTT       = 0x00000008,
          ATH11K_DBG_MAC          = 0x00000010,
          ATH11K_DBG_BOOT         = 0x00000020,
          ATH11K_DBG_QMI          = 0x00000040,
          ATH11K_DBG_DATA         = 0x00000080,
          ATH11K_DBG_MGMT         = 0x00000100,
          ATH11K_DBG_REG          = 0x00000200,
          ATH11K_DBG_TESTMODE     = 0x00000400,
          ATH11K_DBG_HAL          = 0x00000800,
          ATH11K_DBG_PCI          = 0x00001000,
          ATH11K_DBG_DP_TX        = 0x00002000,
          ATH11K_DBG_DP_RX        = 0x00004000,
          ATH11K_DBG_CE           = 0x00008000,
  };
```

You can use each command to get a specific log. For example,

* To get WMI-related driver logs, run the following command:
  ```text theme={null}
  echo 0x2 > /sys/module/ath11k/parameters/debug_mask
  ```
* To get host target communication (HTC) related logs, run the following command:
  ```text theme={null}
  echo 0x4 > /sys/module/ath11k/parameters/debug_mask
  ```

### **Wireless sniffer**

A wireless sniffer intercepts the Wi-Fi frames over the air. Use a wireless sniffer to sniff the Wi-Fi Over the Air (OTA) packets.

### **Collect firmware dump**

When the device crashes, the firmware dump is saved as a BIN file at the `/var/spool/crash` directory.

```text theme={null}
sh-5.1# cd /var/spool/crash/
sh-5.1# ls
0000:01:00.0_2022-04-28_17-51-45.bin
```

Share this dump file on the support portal.

## **Logs for ath12k**

The Wi-Fi subsystem offers tools and logs to assist with troubleshooting issues on ath12k platforms.

### **Pull Wi-Fi host driver and firmware logs**

To pull the Wi-Fi host driver and firmware logs for the ath12k driver, run `trace-cmd` on the DUT as follows:

* For the entire log, run the following command:
  ```text theme={null}
  trace-cmd record -e ath12k -e ath12k_htt_pktlog -e ath12k_htt_ppdu_stats -e ath12k_htt_rxdesc -e ath12k_wmi_diag
  ```
* For firmware log, run the following command:
  ```text theme={null}
  trace-cmd record -e ath12k_wmi_diag
  ```

Run the intended test case and then stop `trace-cmd` by pressing **Ctrl + C**. Share the generated `trace.dat` file and issue details on the support portal.

### **Capture driver logs in dmesg**

You can enable specific ath12k debug logs with the `debug_mask` interface.

```text theme={null}
enum ath12k_debug_mask {
        ATH12K_DBG_AHB          = 0x00000001,
        ATH12K_DBG_WMI          = 0x00000002,
        ATH12K_DBG_HTC          = 0x00000004,
        ATH12K_DBG_DP_HTT       = 0x00000008,
        ATH12K_DBG_MAC          = 0x00000010,
        ATH12K_DBG_BOOT         = 0x00000020,
        ATH12K_DBG_QMI          = 0x00000040,
        ATH12K_DBG_DATA         = 0x00000080,
        ATH12K_DBG_MGMT         = 0x00000100,
        ATH12K_DBG_REG          = 0x00000200,
        ATH12K_DBG_TESTMODE     = 0x00000400,
        ATH12K_DBG_HAL          = 0x00000800,
        ATH12K_DBG_PCI          = 0x00001000,
        ATH12K_DBG_DP_TX        = 0x00002000,
        ATH12K_DBG_DP_RX        = 0x00004000,
        ATH12K_DBG_WOW          = 0x00008000,
        ATH12K_DBG_CE           = 0x00010000,
        ATH12K_DBG_ANY          = 0xffffffff,
};
```

* To get WMI-related driver logs, run the following command:
  ```text theme={null}
  echo 0x2 > /sys/module/ath12k/parameters/debug_mask
  ```
* To get host target communication (HTC) related logs, run the following command:
  ```text theme={null}
  echo 0x4 > /sys/module/ath12k/parameters/debug_mask
  ```

## **Logs for ath10k**

The Wi-Fi subsystem offers tools and logs to assist with troubleshooting issues on ath10k platforms.

### **Pull Wi-Fi host driver and firmware logs**

To pull the Wi-Fi host driver and firmware logs for the ath10k driver, run `trace-cmd` on the DUT as follows:

* For the entire log, run the following command:
  ```text theme={null}
  trace-cmd record -e ath10k_log_err -e ath10k_log_warn -e ath10k_log_info -e ath10k_log_dbg -e ath10k_log_dbg_dump -e ath10k_wmi_cmd -e ath10k_wmi_event -e ath10k_htt_stats -e ath10k_wmi_dbglog -e ath10k_htt_pktlog
  ```
* For firmware log, run the following command:
  ```text theme={null}
  trace-cmd record -e ath10k_wmi_dbglog
  ```

Run the intended test case and then stop `trace-cmd` by pressing **Ctrl + C**. Share the generated `trace.dat` file and issue details on the support portal.

### **Capture driver logs in dmesg**

You can enable specific ath10k debug logs with the `debug_mask` interface.

```text theme={null}
enum ath10k_debug_mask {
        ATH10K_DBG_PCI          = 0x00000001,
        ATH10K_DBG_WMI          = 0x00000002,
        ATH10K_DBG_HTC          = 0x00000004,
        ATH10K_DBG_HTT          = 0x00000008,
        ATH10K_DBG_MAC          = 0x00000010,
        ATH10K_DBG_BOOT         = 0x00000020,
        ATH10K_DBG_PCI_DUMP     = 0x00000040,
        ATH10K_DBG_HTT_DUMP     = 0x00000080,
        ATH10K_DBG_MGMT         = 0x00000100,
        ATH10K_DBG_DATA         = 0x00000200,
        ATH10K_DBG_BMI          = 0x00000400,
        ATH10K_DBG_REGULATORY   = 0x00000800,
        ATH10K_DBG_TESTMODE     = 0x00001000,
        ATH10K_DBG_WMI_PRINT    = 0x00002000,
        ATH10K_DBG_PCI_PS       = 0x00004000,
        ATH10K_DBG_AHB          = 0x00008000,
        ATH10K_DBG_SDIO         = 0x00010000,
        ATH10K_DBG_SDIO_DUMP    = 0x00020000,
        ATH10K_DBG_USB          = 0x00040000,
        ATH10K_DBG_USB_BULK     = 0x00080000,
        ATH10K_DBG_SNOC         = 0x00100000,
        ATH10K_DBG_QMI          = 0x00200000,
        ATH10K_DBG_STA          = 0x00400000,
        ATH10K_DBG_ANY          = 0xffffffff,
};
```

* To get WMI-related driver logs, run the following command:
  ```text theme={null}
  echo 0x2 > /sys/module/ath10k_core/parameters/debug_mask
  ```
* To get host target communication (HTC) related logs, run the following command:
  ```text theme={null}
  echo 0x4 > /sys/module/ath10k_core/parameters/debug_mask
  ```
