diff --git a/boards.txt b/boards.txt
index 3d2c355c29..8279cd5c53 100644
--- a/boards.txt
+++ b/boards.txt
@@ -5458,9 +5458,76 @@ gen4iod.menu.ssl.all.build.sslflags=
 gen4iod.menu.ssl.basic=Basic SSL ciphers (lower ROM use)
 gen4iod.menu.ssl.basic.build.sslflags=-DBEARSSL_SSL_BASIC
 gen4iod.upload.resetmethod=--before default_reset --after hard_reset
-gen4iod.build.flash_mode=dio
-gen4iod.build.flash_flags=-DFLASHMODE_DIO
+gen4iod.menu.FlashMode.dout=DOUT (compatible)
+gen4iod.menu.FlashMode.dout.build.flash_mode=dout
+gen4iod.menu.FlashMode.dout.build.flash_flags=-DFLASHMODE_DOUT
+gen4iod.menu.FlashMode.dio=DIO
+gen4iod.menu.FlashMode.dio.build.flash_mode=dio
+gen4iod.menu.FlashMode.dio.build.flash_flags=-DFLASHMODE_DIO
+gen4iod.menu.FlashMode.qout=QOUT
+gen4iod.menu.FlashMode.qout.build.flash_mode=qout
+gen4iod.menu.FlashMode.qout.build.flash_flags=-DFLASHMODE_QOUT
+gen4iod.menu.FlashMode.qio=QIO (fast)
+gen4iod.menu.FlashMode.qio.build.flash_mode=qio
+gen4iod.menu.FlashMode.qio.build.flash_flags=-DFLASHMODE_QIO
 gen4iod.build.flash_freq=80
+gen4iod.menu.eesz.2M64=2MB (FS:64KB OTA:~992KB)
+gen4iod.menu.eesz.2M64.build.flash_size=2M
+gen4iod.menu.eesz.2M64.build.flash_size_bytes=0x200000
+gen4iod.menu.eesz.2M64.build.flash_ld=eagle.flash.2m64.ld
+gen4iod.menu.eesz.2M64.build.spiffs_pagesize=256
+gen4iod.menu.eesz.2M64.upload.maximum_size=1044464
+gen4iod.menu.eesz.2M64.build.rfcal_addr=0x1FC000
+gen4iod.menu.eesz.2M64.build.spiffs_start=0x1F0000
+gen4iod.menu.eesz.2M64.build.spiffs_end=0x1FB000
+gen4iod.menu.eesz.2M64.build.spiffs_blocksize=4096
+gen4iod.menu.eesz.2M128=2MB (FS:128KB OTA:~960KB)
+gen4iod.menu.eesz.2M128.build.flash_size=2M
+gen4iod.menu.eesz.2M128.build.flash_size_bytes=0x200000
+gen4iod.menu.eesz.2M128.build.flash_ld=eagle.flash.2m128.ld
+gen4iod.menu.eesz.2M128.build.spiffs_pagesize=256
+gen4iod.menu.eesz.2M128.upload.maximum_size=1044464
+gen4iod.menu.eesz.2M128.build.rfcal_addr=0x1FC000
+gen4iod.menu.eesz.2M128.build.spiffs_start=0x1E0000
+gen4iod.menu.eesz.2M128.build.spiffs_end=0x1FB000
+gen4iod.menu.eesz.2M128.build.spiffs_blocksize=4096
+gen4iod.menu.eesz.2M256=2MB (FS:256KB OTA:~896KB)
+gen4iod.menu.eesz.2M256.build.flash_size=2M
+gen4iod.menu.eesz.2M256.build.flash_size_bytes=0x200000
+gen4iod.menu.eesz.2M256.build.flash_ld=eagle.flash.2m256.ld
+gen4iod.menu.eesz.2M256.build.spiffs_pagesize=256
+gen4iod.menu.eesz.2M256.upload.maximum_size=1044464
+gen4iod.menu.eesz.2M256.build.rfcal_addr=0x1FC000
+gen4iod.menu.eesz.2M256.build.spiffs_start=0x1C0000
+gen4iod.menu.eesz.2M256.build.spiffs_end=0x1FB000
+gen4iod.menu.eesz.2M256.build.spiffs_blocksize=4096
+gen4iod.menu.eesz.2M512=2MB (FS:512KB OTA:~768KB)
+gen4iod.menu.eesz.2M512.build.flash_size=2M
+gen4iod.menu.eesz.2M512.build.flash_size_bytes=0x200000
+gen4iod.menu.eesz.2M512.build.flash_ld=eagle.flash.2m512.ld
+gen4iod.menu.eesz.2M512.build.spiffs_pagesize=256
+gen4iod.menu.eesz.2M512.upload.maximum_size=1044464
+gen4iod.menu.eesz.2M512.build.rfcal_addr=0x1FC000
+gen4iod.menu.eesz.2M512.build.spiffs_start=0x180000
+gen4iod.menu.eesz.2M512.build.spiffs_end=0x1FA000
+gen4iod.menu.eesz.2M512.build.spiffs_blocksize=8192
+gen4iod.menu.eesz.2M1M=2MB (FS:1MB OTA:~512KB)
+gen4iod.menu.eesz.2M1M.build.flash_size=2M
+gen4iod.menu.eesz.2M1M.build.flash_size_bytes=0x200000
+gen4iod.menu.eesz.2M1M.build.flash_ld=eagle.flash.2m1m.ld
+gen4iod.menu.eesz.2M1M.build.spiffs_pagesize=256
+gen4iod.menu.eesz.2M1M.upload.maximum_size=1044464
+gen4iod.menu.eesz.2M1M.build.rfcal_addr=0x1FC000
+gen4iod.menu.eesz.2M1M.build.spiffs_start=0x100000
+gen4iod.menu.eesz.2M1M.build.spiffs_end=0x1FA000
+gen4iod.menu.eesz.2M1M.build.spiffs_blocksize=8192
+gen4iod.menu.eesz.2M=2MB (FS:none OTA:~1019KB)
+gen4iod.menu.eesz.2M.build.flash_size=2M
+gen4iod.menu.eesz.2M.build.flash_size_bytes=0x200000
+gen4iod.menu.eesz.2M.build.flash_ld=eagle.flash.2m.ld
+gen4iod.menu.eesz.2M.build.spiffs_pagesize=256
+gen4iod.menu.eesz.2M.upload.maximum_size=1044464
+gen4iod.menu.eesz.2M.build.rfcal_addr=0x1FC000
 gen4iod.menu.eesz.512K32=512KB (FS:32KB OTA:~230KB)
 gen4iod.menu.eesz.512K32.build.flash_size=512K
 gen4iod.menu.eesz.512K32.build.flash_size_bytes=0x80000
diff --git a/doc/boards.rst b/doc/boards.rst
index 7ab98e2513..9c94b63120 100644
--- a/doc/boards.rst
+++ b/doc/boards.rst
@@ -413,7 +413,7 @@ Datasheet and associated downloads can be found on the 4D Systems product page.
 
 The gen4-IoD range can be programmed using the Arduino IDE and also the 4D Systems Workshop4 IDE, which incorporates many additional graphics benefits. GFX4d library is available, along with a number of demo applications.
 
-- Product page: http://www.4dsystems.com.au/product/gen4-IoD
+- Product page: https://4dsystems.com.au/products/iot-display-modules
 
 Digistump Oak
 -------------
diff --git a/tools/boards.txt.py b/tools/boards.txt.py
index 8263191495..30f2a9bbe5 100755
--- a/tools/boards.txt.py
+++ b/tools/boards.txt.py
@@ -759,8 +759,9 @@
             },
         'macro': [
             'resetmethod_nodemcu',
-            'flashmode_dio',
+            'flashmode_menu',
             'flashfreq_80',
+            '2M',
             '512K',
             ],
         'desc': [ 'gen4-IoD Range of ESP8266 powered Display Modules by 4D Systems.',
@@ -771,7 +772,7 @@
                   '',
                   'The gen4-IoD range can be programmed using the Arduino IDE and also the 4D Systems Workshop4 IDE, which incorporates many additional graphics benefits. GFX4d library is available, along with a number of demo applications.',
                   '',
-                  '- Product page: http://www.4dsystems.com.au/product/gen4-IoD',
+                  '- Product page: https://4dsystems.com.au/products/iot-display-modules',
                   ],
     }),
     ( 'oak', {