diff --git a/ChangeLog.txt b/ChangeLog.txt
index a9eb87fc066fc14bc2f065b07c8daa933dd8a613..91eeb02d56d1ddc32faf64ef7640c252867b7805 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -2,6 +2,13 @@
 # neOCampus operation
 # (c) neOCampus / F.Thiebolt Université Toulouse3, Laboratoire IRIT
 
+=== Feature-bspupgrade
+Bumps to esp32 2.0.9
+Bumps to esp8266 3.1.2
+- switch WiFi to both 802.11b AND 802.11g (DSI cut down 802.11b !!)
+- recompiled lwip for NTP server support from DHCP answer (IDF 4.4.4)
+
+
 === Release 230116 / feature-SDKupgrade
 Bumps to esp32 2.0.6
 Bumps to esp8266 3.1.0
diff --git a/README.md b/README.md
index 927995299fed350461156251b7b5d66caa8b4978..3b5f4e62c105e7c72adf4a41d52959e2d219dbc3 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,10 @@ All this work was undertaken at Université Toulouse 3 / IRIT laboratory in the
 ![neOSensorv5](/images/neOSensorV5.jpg)
 
 ## NEWS ##
- * **[Jan.23]** bumps to esp8266 3.10.0; bumps to esp32 2.0.6 along with recompiled lwip
+ * **[May.23]** bumps to esp8266 3.1.2; bumps to esp32 2.0.9 along with recompiled lwip (no need for esp8266)
+    allow WiFi 802.11b & 802.11g
+ * **[Jan.23]** bumps to esp8266 3.1.0; bumps to esp32 2.0.6 along with recompiled lwip
+    force WiFi 802.11b
  * **[Aug.22]** bumps to esp8266 3.0.2; bumps to esp32 2.0.4 along with recompiled lwip
  * **[Nov.21]** added support for various serial sensors like PMSx003, SDS011 and IKEA Vindriktning :D
  * **[Aug.21]** added support for digital inputs (PIR & switches)
@@ -41,8 +44,8 @@ First of all, you ought to install esp32, esp8266 or CubeCell support in your Ar
 
 | Device   | Release   | Arduino Board Manager json file                                                                            |
 |----------|-----------|------------------------------------------------------------------------------------------------------------|
-| esp8266  | 3.10.0    | https://arduino.esp8266.com/stable/package_esp8266com_index.json                                           |
-| esp32    | 2.0.6     | https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json                |
+| esp8266  | 3.1.2     | https://arduino.esp8266.com/stable/package_esp8266com_index.json                                           |
+| esp32    | 2.0.9     | https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json                |
 | CubeCell | *latest*  | https://github.com/HelTecAutomation/CubeCell-Arduino/releases/download/V1.3.0/package_CubeCell_index.json  |
 | stm32    | *latest*  | https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json             |
 
diff --git a/arduinoIDE_esp32_boards/liblwip.a b/arduinoIDE_esp32_boards/liblwip.a
index 34217e943f75d8f05ab64635a03eb288b86700f4..5feb9510f400047c01f5c3de190a78616faa5c1b 100644
Binary files a/arduinoIDE_esp32_boards/liblwip.a and b/arduinoIDE_esp32_boards/liblwip.a differ
diff --git a/arduinoIDE_esp32_boards/opt.h b/arduinoIDE_esp32_boards/opt.h
index 0433126eb4c6563ea30488fa9680ca5327fdcc56..df302dad33c5d2e8d731cb74b98b7e49ad2b509b 100644
--- a/arduinoIDE_esp32_boards/opt.h
+++ b/arduinoIDE_esp32_boards/opt.h
@@ -506,7 +506,7 @@
  * The default number of timeouts is calculated here for all enabled modules.
  */
 #if ESP_LWIP
-#define LWIP_NUM_SYS_TIMEOUT_INTERNAL   (LWIP_TCP + IP_REASSEMBLY + (LWIP_ARP + (ESP_GRATUITOUS_ARP ? 1 : 0)) + (2*LWIP_DHCP + (ESP_DHCPS_TIMER ? 1 : 0)) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + PPP_NUM_TIMEOUTS + (LWIP_IPV6 * (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD)))
+#define LWIP_NUM_SYS_TIMEOUT_INTERNAL   (LWIP_TCP + IP_REASSEMBLY + (LWIP_ARP + (ESP_GRATUITOUS_ARP ? 1 : 0)) + (ESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND ? LWIP_DHCP : 2*LWIP_DHCP + (ESP_DHCPS_TIMER ? 1 : 0)) + LWIP_AUTOIP + LWIP_IGMP + (ESP_LWIP_DNS_TIMERS_ONDEMAND ? 0 : LWIP_DNS) + PPP_NUM_TIMEOUTS + (LWIP_IPV6 * (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD)))
 #else
 #define LWIP_NUM_SYS_TIMEOUT_INTERNAL   (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + PPP_NUM_TIMEOUTS + (LWIP_IPV6 * (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD)))
 #endif
@@ -2273,6 +2273,14 @@
 #define MIB2_STATS                      0
 #endif
 
+/**
+ * IP_NAPT_STATS==1: Stats for IP NAPT.
+ */
+#if !defined IP_NAPT_STATS || defined __DOXYGEN__
+#define IP_NAPT_STATS                   (IP_NAPT)
+#endif
+
+
 #else
 
 #define LINK_STATS                      0
@@ -2293,6 +2301,7 @@
 #define MLD6_STATS                      0
 #define ND6_STATS                       0
 #define MIB2_STATS                      0
+#define IP_NAPT_STATS                   0
 
 #endif /* LWIP_STATS */
 /**
diff --git a/deploy.sh b/deploy.sh
index 2c32f083aea37077d91ed6aaf862a55e6cee5163..15f3b6fec2d7aa58f516d6d2af0172046c6adc38 100755
--- a/deploy.sh
+++ b/deploy.sh
@@ -12,8 +12,8 @@
 
 #
 # Global defs
-ESP32_REV=${ESP32_REV:-"2.0.6"}
-ESP8266_REV=${ESP8266_REV:-"3.1.0"}
+ESP32_REV=${ESP32_REV:-"2.0.9"}
+ESP8266_REV=${ESP8266_REV:-"3.1.2"}
 CUBECELL_REV=${CUBECELL_REV:-"1.3.0"}
 
 
diff --git a/neosensor/neosensor.ino b/neosensor/neosensor.ino
index 97821960168842042829b8296957d36581e3764c..6dd56dc2874ef8ead7d5f624d0124127c2857724 100644
--- a/neosensor/neosensor.ino
+++ b/neosensor/neosensor.ino
@@ -1,5 +1,4 @@
-/* -----------------------------------------------------------------------------
- *
+/*
  * neOCampus operation
  * 
  * neOSensor firmware for various ESP8266 and ESP32 based boards: