Your new topic does not fit any of the above??? Check first. Then post here. Thanks.

Moderator: igrr

User avatar
By Sean Phelan
#89568
alka79 wrote:+1. same question.
8 lwIP variants available for my NodeMCU 1.0 board and no clue which to chose and why.

I face issues with HTTPClient and suspect it has has to do with lwIP settings.


Hi alka79 - where are the 8 lwIP variants for NodeMCU? I have been building the firmware by cloning https://github.com/nodemcu/nodemcu-firmware.git and I haven't seen any lwIP options.

I *think* the lwIP version in the default NodeMCU build is close to, but not exactly, lwip-1.4 from 2012. It would be great to hear from anybody who has built, or attempted to build, with lwip-2.1.2. I'm tempted to try, but suspect it will be a testing/debugging nightmare :(
User avatar
By StanJ
#89677 From the gitter, June 10th. I saved it, but don't understand much of anything below, maybe it'll help someone.

david gauchard @d-a-v Jun 10 08:14
There are different version of the TCP/IP layer. The default is good.
Option without "features" takes less flash space, also less ram space.
IPv6 is available but not default. Also older lwIP versions, precompiled or not.

Lower memory uses TCP MSS=536 so it takes less ram,
Higher bandwidth uses TCP_MSS=1460, induces a higher bandwidth but takes more ram
(for example it is required in webradio app from ESP8266Audio).
No features means the legacy lwIP configuration.
v2 versions without "no-features" have (look for "LWIP_FEATURES")

IP fragmentation/reassembly (useful in some cases)
NAT(+forwarding) (check RangeExtender-NAPT example)
DHCP-AUTOIP (automatic address 169.254.x.x when there is no dhcp server)
SACK-OUT (improves TCP in poor conditions)
IPv6 is IPv6 (with features, and lots of additional flash is used)

The two last options use legacy lwIP-1.4, the last is built along with the core and your sketch (MSS=1460 in both cases).
User avatar
By alka79
#89777 d-a-v said this here in june 2020

Summary:
There are different version of the TCP/IP layer. The default is good.
Option without "features" takes less flash space, also less ram space.
IPv6 is available but not default. Also older lwIP 1.4 versions, precompiled or not.[

Details:
v2 Lower memory uses TCP MSS=536 so it takes less ram

v2 Higher bandwidth uses TCP_MSS=1460, induces a higher bandwidth but takes more ram (for example it is required in webradio app from ESP8266Audio).

No features means the legacy lwIP configuration.

v2 versions without "no-features" have (look for "LWIP_FEATURES")
-IP fragmentation/reassembly (useful in some cases)
-NAT(+forwarding) (check RangeExtender-NAPT example)
-DHCP-AUTOIP (automatic address 169.254.x.x when there is no dhcp server)
-SACK-OUT (improves TCP in poor conditions)

IPv6 is IPv6 (with features, and lots of additional flash is used)

The two last options use legacy lwIP-1.4, the last is built along with the core and your sketch (MSS=1460 in both cases).