RCM6700 problem with USB-Ethernet interface

Hello,

I have a problem trying to connect with Rabbit RCM6700 using Exar XR22801 through USB connection. Exar XR22801 acts as a bridge with a switch and with a GPS module connected to one UART line, all in one PCB. In principle, the USB-Ethernet driver works well with most connected devices but I am having trouble establishing a connection with the Digi Rabbit RCM6700 microprocessor. When connecting the RCM6700 device to the switch via Ethernet, from the USB interface I can connect to the device only if I deactivate the option “TCP Checksum Offload” or activate the option “only for Tx” on the driver. The problem is that by doing this, the network connected to the switch of our equipment goes much slower.

The configuration of the driver also has auto 100 MB full duplex and flow control disabled. I have tried to activate / deactivate all the options of the driver and I only get the connection by deactivating “TCP Checksum Offload”. Some tests performed:

  • Using a normal Ethernet connection with the Rabbit RCM6700 microprocessor everything works correctly without deactivating the checksum offload options.

  • Using another microprocessor (ECOG1X14Z5 MCU) everything works correctly using the USB interface, without deactivating “TCP Checksum Offload”.

  • Using wireshark to capture the packets of the TCP connection, it seems that the SYN ACK packets that the microprocessor RCM6700 should send to the PC are lost, so that connection is not reached. With normal Ethernet interfaces this does not happen.

Additional Information:

  • Operating system windows 7/8/10 (tested on all three).
  • Software version Dynamic 10.72.
  • Ethernet connection with fixed IP on all devices, all in the same subnet.
  • The PCB switch has two RJ45 Ethernet interfaces and the interface with the Exar device. Making the connection using only the RJ45 connections everything works fine, it is only when the microprocessor is connected through the RJ45 port and an attempt is made to connect through the USB port.

It is probably a problem of compatibility between the two devices but I would like to know what else I can do.

Thanks in advance and greetings.

1 Like

That sounds like a tough troubleshooting issue, but it sounds like a possible issue with the USB port. If you have the Rabbit working when connecting Ethernet to Ethernet, but then it fails when connecting Ethernet to USB, the only thing that’s changed is moving to the USB interface.

Have you contacted Exar yet about the issue? Are there updated USB drivers that may have resolved the issue? Maybe there’s something the Rabbit does on the Ethernet interface that the ECOG1X14Z5 doesn’t do.

Note that you can configure the Ethernet of the Rabbit to force half duplex and/or 10Base-T. Try using pd_networkmode() to set the various combinations to see if you find one that works. It could be that you need to use half duplex on the Ethernet port if you choose to use the USB interface.

Hi Tom,

After some time dealing with the incident with the manufacturer (Exar), they have concluded that it is a processing problem in the Rabbit. Using the Wireshark software it is seen that the SYN packets to establish the TCP connection are being continuously retransmitted, and sometimes if the connection is established it becomes unstable and zero size windows are sent from the Rabbit.

With other products connected to the Exar module we have no problems. I have tried to modify the different functionalities that you have commented to me using pd_networkmode () without result. The only way to connect to the device is to disable the option TCP Checksum Offlad for RX (in Wireshark doing rest everything works normally), but it makes the rest of the connections in the network go slower.

I have also tried to establish connections using small sample files, using tcp_listen and sock_wait_established, without positive results.

What next step can I give? Can I review something else in the programming code of the rabbit RCM6700? Thanks in advance.

Sorry for not following up on your comment earlier. Can you send me the Wireshark capture so I can see what’s happening? How often are you calling tcp_tick() in your program? It sounds like you’re connecting to the Rabbit from the PC, and the Exar module is sending multiple SYN packets (at what frequency?) but the Rabbit isn’t responding in a timely fashion?

Does it work with Samples/tcpip/http/STATIC.C?

My email address is my name, with a dot in the middle and @digi.com at the end, if you want to send the Wireshark capture.

If necessary, you can contact Digi’s support department and request a formal investigation of what’s happening. It would require you loaning us the Exar hardware and providing a small sample program for an RCM6700 in a development board to demonstrate the failure.

Hi Tom,

I have sent you an email with captures and additional information. I look forward to your response, greetings.