Wifi + TCP

Hello everyone,

I have a wifi shield and I’m trying to telnet to it from Windows 8 (cmd.exe – Admin mode). I’m using the default Sample sketch code for testing a TCP connection to the wifi shield: http://arduino.cc/en/Tutorial/WiFiChatServer

Below is my sketch code (almost identical to the sample):

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "belkin.fed"; //  your network SSID (name) 
char pass[] = "fa8dd6d3";    // your network password (use for WPA, or use as key for WEP)

int keyIndex = 0;            // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;

WiFiServer server(23);

boolean alreadyConnected = false; // whether or not the client was connected previously

void setup() {
  //Initialize serial and wait for port to open:
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present"); 
    // don't continue:
  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) { 
    Serial.print("Attempting to connect to SSID: ");
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:    
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
  // start the server:
  // you're connected now, so print out the status:

void loop() {
    Serial.println("waiting for client");
  // wait for a new client:
  WiFiClient client = server.available();

  // when the client sends the first byte, say hello:
  if (client) {
    Serial.println("got client");
    if (!alreadyConnected) {
      // clead out the input buffer:
      Serial.println("We have a new client");
      client.println("Hello, client!"); 
      alreadyConnected = true;

    if (client.available() > 0) {
      // read the bytes incoming from the client:
      char thisChar = client.read();
      // echo the bytes back to the client:
      // echo the bytes to the server as well:

void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  IPAddress subnet = WiFi.subnetMask();
  IPAddress gateway = WiFi.gatewayIP();
  Serial.print("IP Address: ");
  Serial.print("Subnet: ");
  Serial.print("Gateway: ");

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.println(" dBm");

And here is my output from the Serial Console:

Attempting to connect to SSID: belkin.fed
SSID: belkin.fed
IP Address:
signal strength (RSSI):-33 dBm
waiting for client
waiting for client

When I try to telnet from Windows cmd.exe, almost immediately, it responds that it cannot connect. Notice that I first try connecting to the router (which has a port forward rule for port 23 – see attached screenshot), then I try connecting directly to the IP of the wifi shield:

C:\Windows\system32>telnet 23
Connecting To not open connection to the host, on port 23: C
onnect failed

C:\Windows\system32>telnet 23
Connecting To not open connection to the host, on port 23: C
onnect failed

I’ve also tried this connection from Linux and Mac computers, using “telnet” or “nc” commands, but they say connection refused. Finally, pinging the IP of the wifi shield works fine, so I am completely lost at this point. Please help if you can. Thanks.

P.S. I have an Arduino Uno with an Arduino WIFI Shield

FireShot Screen Capture #015 - '' - 192_168_2_1.png

The fix: UPDATE YOUR FIRMWARE! After following this great tutorial on updating the wifi shield firmware, it’s not working like a charm: http://forum.arduino.cc/index.php?PHPSESSID=c1q95cp0ihovdcshsocldelhd2&topic=121503.msg1260977#msg1260977

Though, it would be good to ship the wifi shield with the new firmware already in it…