-1

I am developing embedded microcontroller hardware using a Texas Instruments Starter Kit. I am writing the firmware for the Ethernet link between my microcontroller and x86 Windows desktop.

I have written my own Ethernet driver for the microcontroller and my own protocol driver. So I have absolute FULL control over what data is being transmitted to and from the microcontroller. Up until now, I have managed to write ARP, IP, and ICMP drivers.

I use Wireshark on Windows closely to monitor all data frames going in and out. Now when Wireshark is capturing, "ping" from the console works correctly, but when I stop capturing on Wireshark, my ping fails with "Destination host unreachable." I check the logs on my microcontroller; I see Windows is sending ARP requests, and the microcontroller is replying to them correctly. But the network driver in Windows is filtering them away. So no ICMP requests are being sent. When I check the MAC table using "arp" from the console, my microcontroller is in the list while capturing but not when not capturing its not in the list.

What could be the problem, and how can I debug this problem? Are there any tools/apps for Windows that give statistics on dropped/filtered packets?

Bubu
  • 129
  • 7

1 Answers1

0

I found the problem, there was a punny padding missing in my ICMP echo reply. I did a side by side comparision between a working ping with my wifi router vs my microcontroller on wireshark and found this difference. I thought it wasn't such a big deal, apparently not.

enter image description here

Although what has it got to do with wireshark capturing, I have no clue.

Bubu
  • 129
  • 7
  • 1
    arps need a pad to satisfy the min ethernet frame size; why running / not running wireshark is a factor is strange – Andrew Jan 27 '23 at 12:01