[ESP32S3 Undocumented] Простая диагностика проблем WIFI. Через счетчики ошибок

Привет.

На ESP32-S3 есть куча счетчиков ошибок WIFI, некоторые из них даже полезны :).

Я пользовался несколько раз, чтобы разобраться с тем, почему нет связи. Может кому пригодится.

Примечание: данные по указанным адресам можно читать исключительно как uint32_t. Читать не по 4 байта за раз нельзя - все грохнется.

Примечание: понятно назначение далеко не всех счетчиков.

Общая статистика по принятым пакетам WIFI

Адрес Описание
0x600332f8 Сколько пакетов было действительно полезных и предназначенных именно нам. Если не идет реальной передачи данных, счетчик растет крайне медленно, фиксируя приход management/control кадров.
0x600332bc Сколько попыток приема закончилось неудачей (шум в эфире, пакеты не для нас и т.п.). При обычной работе этот счетчик растет довольно быстро.
0x60033d58 Количество событий Wi-Fi железа: принятые пакеты, прерывания и прочая внутренняя активность. Обычно растет быстро.

Статистика Wi-Fi прерываний (RTS/CTS/ACK)

Используются механизмом предотвращения коллизий в эфире. В нормальных условиях растут очень медленно. Если начинают быстро увеличиваться — это повод насторожиться.

Адрес Описание
0x600332ec ACK interrupts.
0x600332f0 RTS interrupts
0x600332f4 CTS interrupts. Если мы слишим чей-то CTS, то нам приходится молчать. Если CTSы идут непрерывно, мы ничего не сможем передать. Так WIFI борется с коллизиями в эфире. И так же можно угробить связь посылая рандомные CTS. При нормальной работе этот счетчик не растет или растет супер медленно. Если растет быстро - шумный эфир (много передатчиков)

Ошибки приемного радиотракта и демодулятора

Адрес Описание
0x600332c0 CCK errors. Растет довольно быстро.
0x600332c4 OFDM errors. Почти всегда близок к CCK error. Похоже, приемник пытается декодировать мусор одновременно как CCK и OFDM, прежде чем признать его мусором.
0x600332c8 AGC RX errors. Ошибки, связанные с уровнем сигнала: слишком тихо, слишком громко или проблемы автоматической регулировки усиления. Обычно тут ноль.

Ошибки после демодуляции

На этом этапе сигнал уже успешно превращен в цифровые данные, и начинаются проверки содержимого кадра.

Адрес Описание
0x600332d0 RX_ABORT. Ну аборт, он и в Африке аборт.
0x600332d4 RX_FCS. Контрольная сумма кадра не совпала с вычисленной. Битый пакет.
0x600332e0 RX_OTHER Прочие ошибки приема. Обычно растет медленно.

Тсс! Криптография

Адрес Описание
0x600332e4 Ошибки TKIP (crypto).

Внутренние шестеренки и трубопроводы

Эти счетчики обычно стоят на нуле или около него. Если начинают заметно расти — скорее всего, что-то идет не так.

Адрес Описание
0x600332cc Счетчик RXSF. Точное значение аббревиатуры неизвестно. Судя по поведению, это счетчик ошибок. Моя ставка — RF Short Frame.
0x600332d8 FIFO Full3. Какая-то внутренняя FIFO переполнилась. Обычно равен нулю.
0x600332dc FIFO Full2. Какая-то внутренняя FIFO переполнилась. Обычно равен нулю.
0x60033308 FIFO Full1. Какая-то внутренняя FIFO переполнилась. Обычно равен нулю.
0x60033304 HOP errors. Что именно означает — неизвестно. Обычно равен нулю.
0x60033d3c TXhung Передатчик завис из-за аппаратного механизма Collision Avoidance. Обычно происходит, когда в эфире слишком много станций и постоянно слышны чужие CTS.
0x60033d40 PANIC. Что именно означает этот счетчик применительно к Wi-Fi железу — неизвестно. Но ничего хорошего он точно не означает.

а дзен-буддиста спросить?
когда канал засран договариваются прыгнуть на другой, ну прыгнули, а там тоже не срослось, вот это как раз оно
PS если ты установил 11 канал это совершенно не означает что работа будет вестись на этом канале и если ты открываешь верхние канала выбрав соответствующую страну с большой вероятность твой wifi там отметится