From 43171d12a7b92ec1739109e85f7ad8f56e5ec4c0 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 7 Dec 2020 18:16:28 +0100 Subject: [PATCH] Fix ESP32 phy mode detection --- .../ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp | 11 ++++++++++- tasmota/support_wifi.ino | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp b/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp index 9ce191cde..a72d95cb6 100644 --- a/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp +++ b/lib/libesp32/ESP32-to-ESP8266-compat/src/ESP32Wifi.cpp @@ -19,6 +19,7 @@ // #include "Arduino.h" #include +#include // // Wifi @@ -35,7 +36,15 @@ void WiFiClass32::setSleepMode(int iSleepMode) int WiFiClass32::getPhyMode() { - return 0; // " BGN" + int phy_mode = 0; // " BGNL" + uint8_t protocol_bitmap; + if (esp_wifi_get_protocol(WIFI_IF_STA, &protocol_bitmap) == ESP_OK) { + if (protocol_bitmap & 1) { phy_mode = 1; } // 11b + if (protocol_bitmap & 2) { phy_mode = 2; } // 11g + if (protocol_bitmap & 4) { phy_mode = 3; } // 11n + if (protocol_bitmap & 8) { phy_mode = 4; } // Low rate + } + return phy_mode; } void WiFiClass32::wps_disable() diff --git a/tasmota/support_wifi.ino b/tasmota/support_wifi.ino index 87d0110f1..6cba8a053 100644 --- a/tasmota/support_wifi.ino +++ b/tasmota/support_wifi.ino @@ -163,7 +163,7 @@ void WiFiSetSleepMode(void) void WifiBegin(uint8_t flag, uint8_t channel) { - const char kWifiPhyMode[] = " BGN"; + const char kWifiPhyMode[] = " bgnl"; #ifdef USE_EMULATION UdpDisconnect();