Re 3.: The switch used to prefer IPv6 DNS lookups will just do that, when connecting to a server the firmware will lookup the IPv6 address (DNS AAAA record) of the hostname. If there is no AAAA record it will look for an A record (IPv4 address). It will then connect to the first found address. When, for whatever reason, that connection fails there is no fall back or retry.
Without additional code modifications it will also do that on an IPv4 only network. Which means that connections to hosts with an AAAA record will always fail.
This is in client mode. For AP mode it doesn’t really matter since in AP-mode there is no connected network and the node runs with a predefined IPv4 address. There won’t be outgoing connections in AP-mode.
Note that this option might not be the best way to do things, I didn’t do a deep dive in the LWIP code to look for other/better methods. The main goal was to get the firmware to use IPv6 without major modifications.
Re 4.: Going to AP-mode is the main problem. Other potential issues are NTP and mDNS and I’m not sure how the used framework/library handles the various IPv6 autoconfiguration setups.
Re 5.: The provided link only shows a downloadable file with firmware builds for registered github users. I’ve also created a ‘release’ where you can get the firmware builds without github-account: Release NRZ-2024-136-B1 with IPv6 enabled (preliminary test builds) · Phaze-III/sensors-software · GitHub
For flashing the firmware I use esptool (esptool.py or esptool.exe) from the command line. esptool can be found at Releases · espressif/esptool · GitHub . On Linux/Mac esptool(.py) is also available in most package repositories.
From the command line you can use something like the following to flash the firmware (Windows):
esptool --port COM3 --baud 115200 write_flash 0x0 latest_nl.bin
or (on Linux/Mac)
esptool.py --port /dev/<yourdevice> --baud 115200 write_flash 0x0 latest_en.bin
Existing settings on the sensor are preserved and if it breaks you can always go back to the official firmware with the airrohr-flasher (which I assume you used already).
If you’re not comfortable with the command line you can (Windows only) use a small graphical utility from Releases · BattloXX/ESPEasyFlasher · GitHub which basically provides a simple GUI to call esptool with the above mentioned parameters.
Re 6.: Making IPv6 configurable certainly would be an option although ideally it should not be needed. However it needs to be coded, just as the modifications needed to fix the above mentioned issues. For me that might be a bridge too far at the moment.