Well, being a noname “smart” switch makes it hazardous software waste I guess! I think the ping routine may be sending out stuff it should not, most likely freed/uninitialized memory.
When you ping, the request contains some random data. The response is supposed to contain the same data. In this case however, there is some trailing garbage.
The request body (random data):
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 F0 68 C5 0E 03 E9 58 53 7D E0 83 E5 D1 06 EA 66 ðhÅ..éXS}àƒåÑ.êf
00000010 67 34 D1 9D 3F 78 DF 24 D8 68 22 60 50 B6 54 B6 g4Ñ.?xß$Øh"`P¶T¶
The response body:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 F0 68 C5 0E 03 E9 58 53 7D E0 83 E5 D1 06 EA 66 ðhÅ..éXS}àƒåÑ.êf
00000010 67 34 D1 9D 3F 78 DF 24 D8 68 22 60 50 B6 54 B6 g4Ñ.?xß$Øh"`P¶T¶
00000020 A3 C7 63 74 69 6F 6E 3A 20 63 6C 6F 73 65 0D 0A £Çction: close..
00000030 43 6F 6E 74 Cont
Note the “ction: close”. That’s a fragment of a HTTP header, “Connection: close”. It should not be there. The “Cont” thing is almost certainly also an HTTP header.
Windows appears to be more liberal with interpreting ping responses, not requiring the exact same data back. Or maybe it only compares the 32 bytes it sent, which are the same. The sequence number is okay, too. fping is apparently more strict.
In the end, there is nothing you can do. The switch software is broken and you will probably never get an update.
If you’re interested in hacking, this looks like a fun thing to explore. You could try hitting the web interface while pinging to see if the trailing garbage changes or something.