Besides the advice given by Simon, have you even tried the obvious and
basics of networking ?
The way you phrase makes me think you are not comfortable with the
secret arts of networking, so...
If your devices are on different subnets, they are in different
networks. Subnet or no subnet, when you apply your mask to your IP and
to the other end IP and the results are not the same, you need someone
else to deliver the message. Yes, a router.
Perhaps you forgot you need a router or forgot to properly set the
gateway address or the mask, or both. Since you didn't post your setup,
A "communication problem with X and Y on different subnets" is a routing
problem. Yes, there can be a firewall, not quite common on inside
networks, but you must know your company/lab/whatever network if you
plan to do tests in there.
Have you even tried to ping ?
First of all, as Simon said, you need to see what your device gets and
sends in the wire. I guess you did that at the other end. In the good
old days we used to use hubs. A hub connects all ports together, so you
are able to see other people's traffic, and that includes a notebook
sniffing your lwIP box. If you are fortunate enough, perhaps you can get
one. I saved a couple for these tasks. They are 10baseT, so perhaps some
hardware won't like them, but working in 10Mbps is great for finding
driver errors on the tx side.
Today we use switches. Some people invest some extra bucks on a switch
with monitor capability: you connect your PC to the monitor port and
then you monitor the lwIP device port, in order to sniff its traffic.
Other thing you can do is run your stuff on a PC, with a tap interface,
that is, your lwIP stack and application run as a process on your
computer and you see it as an extra interface. I use the Unix example
app that is in the contrib tree. This way I can easily sniff on that
Other tool you might have available is the router itself. Some of them
have a sort of tcpdump capability.
And finally, I'm running out of ideas today, you can put a breakpoint
somewhere in the interface code and check if the stack is getting the
SYN or trying to send the ACK to whereverland.
lwip-users mailing list