DGC WiME problems of reliability with TCP sockets !

Hello,

I’m building a wireless communication system between a computer and a FPGA board with the DigiConnect WiME module.

I bought this module on November 2006 on the web site of Mouser: www.mouser.com

The FPGA integrated on the board is a Xilinx Spartan 3-E. I use Xilinx’s UART component to send data to the WiME module. The serial link between the FPGA board and the WiME module works very well [The parameters: Wires connected to port 2 - Speed: 230400 bits/s - 1 Start bit / No parity / 1 Stop bit - No flow control - Link works at full load: 230400bits/s on wire TX].

I configured the WiME module in TCP Sockets mode - to send the data received on the serial link to a TCP server running on my computer.

Here is the main configuration of the WiME module:

IP - @IP: 172.16.0.2 Netmask: 255.255.255.0 Gateway: 172.16.0.1
Wifi - IEEE 802.11b in Ad-Hoc mode - Excellent signal - Channel 6 [The WiME module is alone on this channel !] - 11 Mbits/s … [No Identification / No Authentication / No Encryption]
TCP Sockets on port 2 - WiME module is configurated to send the data to my computer 172.16.0.1 on TCP port 12702 - No others options like: keep-alive, match string, send after, send socket id …

I builded a TCP server running under Cygwin (last version) in Microsoft Windows XP Pro SP2.

The system doesn’t work perfectly. Sometimes, I loose some TCP segments, and so, some data …

I’ve done frame captures with Ethereal to understand what happened. I saw that sometimes another equipment, probably a Wifi Access Point, broadcast on my channel a LLC frame. This event cuts the link during 1 seconde, the WiME module doesn’t send anything. After, the communication restarts, the WiME sends data, but +/- 20 TCP segments have been discarded, and these segments are not retransmitted …

Moreover, when the serial transmission is finished, I always lost the last data. The WiME module never send the last 200 / 500 bytes (There is not enought data for TCP to send a segment !), and the TCP client close the connection … [Or after 45 min / 1 hour, the WiME module sends all the time ARP request to my computer to obtain the MAC address of my Wifi board and transmission becomes impossible !]

How can I fix this problem of reliability ?

Thanks !

David

Are you sure you’re talking about the Wi-ME? The Wi-ME only has one serial port.

I also take it you’re using the plug and play firmware, have you tried updating to the most current revision of firmware?

The nature of TCP doesn’t allow for packets to just be ‘discarded’. If it’s out of sync when Wi-ME and your PC are able to talk again, you’ll see duplicate ACK’s from the PC until either the socket connection is closed or the data is retransmitted.