Test Your Signal With The WiFi Cup

[CNLohr] wanted to test the WiFi range in his house. One look at his roommate’s cup and an unorthodox idea was born. The WiFi Cup used an ESP8266 to connect to his home network. For output, [CNLohr] also added a WS2812 LED strip to the cup. The ESP8266 was programmed to send UDP packets to [CNLohr’s] laptop. When the laptop responded back, the ESP8266 turned on the LEDs, lighting up the cup. The cup’s response to signal strength was very quick – about a second.

[CNLohr] took the WiFi Cup around the house. He was surprised to detect the connection in corners he didn’t expect; in fact, the signal wasn’t weakening at all! He proceeded to walk outside with it, hoping to see the signal strength decrease. As a testament to his roommate’s robust router, the cup merely flickered. Hoping for a better test, [CNLohr] switched out the router for a cheaper TP-Link with shorter antennas. While the initial ping test showed a slower response time, the cup detected WiFi around the house just fine. It only wavered for a couple of moments when it was placed inside a metal bucket. We have to wonder how thin [CNLohr’s] walls are. WiFi never works that well in our house!

40 thoughts on “Test Your Signal With The WiFi Cup

      1. I really wanted to do this with the ESP, I have looked at other people doing it (like the link above) but I could not coax the ESP into giving me accurate signal strength on a per-packet basis. I really wish I could. That would be super cool. I spent about 8 hours looking around in ram, peeking and poking but eventually gave up.

    1. you cannot get accurate position, because of the drift.
      On the other hand, as others have pointed out, it’s not useful. You need to use the real client at the real data rate to get accurate signal quality. So you are better of grabbing you phone/laptop with some software.

  1. The thing is probably connecting at some low barely usable rate as it only has to pass a tiny UDP packet. I can get that from my AP’s with the signal around -85dBm – the thing is it doesnt actually work for anything useful like loading a webpage.

    1. hah this test is like using ETX routing metric for wireless – it kinda sucks;) (it just says it works (even barely) or not at all) and you can’t test throughput as I doubt ESP8266 can communicate any faster than base 1mbps speed.
      If ESP8266 doesn’t provide any information about signal strength/noise I don’t think you can do any meaningful test except to check where you can put your esp module;)

      1. Now I think about it, doing it roundabout way you could just read signal levels from access point and send it back as an brightness update to the lamp. If no update was received before timeout, turn off the lamp ;)

  2. I can confirm from my own messing about that these things are ridiculously robust. In a totally unscientific test I was able to walk down to the other end of my street and maintain a full connection the whole thing. Everything else, laptop, phone, drop out before you’re even 5m out the door. I was extremely impressed.

        1. Absolutely true. Which is why it’s not exactly appropriate for a “wifi test” if you want that test to be meaningful for anything other than a low power wifi beacon that transmits tiny amounts of data.

  3. Can you get the rssi values from the ESP8266? For this type of application that would be ideal. Alternatively you could turn it around and get the rssi from the routers or base station and tell the ESP8266 what colour to display.

    1. I looked at a bunch of places in RAM trying to find the RSSI of every packet, I could not find it. Only on beacons which update once a second or so. I tried later doing something with light and the signal strength, but it was kinda useless since it was too slow. It may be possible, but I can’t find it.

  4. > WiFi never works that well in our house.
    Apparently these ESP8266 modules have quite a good reciever/transmitter, So they are pretty good at “range”.

    Now to those who are complaining: not at a usable data rate… You are talking to the ESP8266 at 115k2, so the 1Mbps WIFI link can easily drown out the link to the “host” controller.

    So, even if the ESP8266 has traded out some “speed” for “range”, it will function quite well in its intended applications…..

    1. In most cases it does not matter, the serial interface is limiting (though i remember 4Mbps possible claimed somewhere?). But it matters in battery powered applications, where if the signal quality is high you would like to send the data as fast as possible.

  5. I can “connect” to a store’s WiFi a block away. It’s when I try to use that connection that things fall apart.
    When you test your connection you should send test packets. Signal strength isnt enough.

    1. Perhaps you’re being snarky – asking why someone would use a completely useless measuring metric like a light instead of a actual meter – if so, well done.

      If you’re actually asking for a wifi signal strength app, look at Wifi Analyzer in Google Play
      https://play.google.com/store/apps/details?id=com.farproc.wifi.analyzer&hl=en

      If you’re one of those sad apple fops, you don’t need such an app, the big words will be way beyond your fisher price comprehension (let alone the concepts).

  6. I see some miss conceptions here, at least from my point of view.

    He tests the light fade when he blocks the antenna, for a “long” period of time like 2 ou 3 seconds.

    I would like to see some tests like, if one ping fails between twoo consecutive sets of acknoledged pings, and test with 2 consecutive ping fails, and 3 ping fails, and 4 ping fails… that would clearly show when we would se some light fading..

    From this point i can say that if one failed ping between 2 consecutive acknowledged ones does not afect light in a visible way, we can have a 50% fail without noticing it.

    Other question, time between each ping..

    Another question is that the ping size packet… small size packets will fail much less….

    Another question, and important one the light turns on when it receives a ping request, or on a checked reply? this implies that you can receive wifi anywhere because you have high sensible device, but to communicate between 2 devices, you need rx sensibility and tx power… and all of us know that routers have high power compared to wifi cards.. so a laptop or even that device may be able to receibe packets, and may not be able to make the replies reach the router..

    To conclude i think there are some great flaws on this project, it is funny, shinny but not very accurate.

    i would suggest using vlc to stream a video, and using a laptop to recive it. this way anyone can get a simple and fast way to check not only if he has wifi, but also wifi quality in that specific point. This stream would have to be on real time, without any buffer, jitter, etc mechanism.

    1. It’s a ESP8266. You don’t stream video with it. You install it in a washing machine to tell you the temperate and state of everything. You install it in a doorbell to tell you when the button was pressed, you install it in a light fixture to turn it on and off. These tests are exactly the application they are made for.

Leave a Reply to JohnCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.