Ambient Weather WS-2080 hang fix

A weather station, Ambient Weather WS-2080 that I installed in my backyard has a receiver unit with a pretty nasty hardware issue: occasionally, its USB interface would hang hard. It could happen twice a week or once a month – it is very unpredictable and highly annoying. Once it happens, nothing short of a power reset of the receiver unit would fix it. You’d have to remove the battery or unplug the USB if you powered it through it. I’ve finally got around to fixing it. If you have a similar problem with that weather station, you may be interested to read on…

If this is happening to your unit, you will also know that in addition to the hang, the software that talks to it (“Cumuls” in this case), would also hang trying to read the USB data. This creates an additional problem: you would have to actively monitor the setup daily so you can fix it and not lose any weather data.

Instruments like that should be able to work autonomously for months, years at a time!

Ambient Weather, WS-2080, weather station, powershell, pcb, arduino
WS-2080 Weather Station

I wanted a robust and fully automatic solution since I tried almost anything suggested at various forums, but nothing worked.

My solution to this problem was a set of software scripts to detect when a device hangs and a small Arduino-based dongle board that controls the USB power to the receiver and can hard reset the unit when a problem is detected. As an additional bonus, I also wanted to get an email when the fault (and correction) happens.


I used a spare Arduino Nano board and fitted it inside a small phone jack enclosure which I could then mount on the wall between the server PC and a weather station receiver.

The idea was for the server to talk to the Arduino via USB/serial and the Arduino would control a relay which would control the power of the USB connection to the receiver. The USB cable to the receiver would pass through this dongle.

This is a final schematic done in the Eagle software:

USB dongle schematics
USB dongle schematics

and the board layout:

USB dongle layout
USB dongle layout

The board also has a “garage door” terminal. This is hooked up to a switch on my garage door rail and detects when a garage is opened – a part of my home Internet-of-Things network. However, that’s a topic for another blog.

The 5×2 pin connector is a simple USB pass-through and the relay controls its +5V wire. All other USB signals are passed through unmodified.

This is the image of a finished board already fitted in the enclosure:

Board fitted in place
Board fitted in place

Once the board was ready, I mounted it on the wall. I want to thank my friend Brent who created a perfectly fitting (red) enclosure cover on his 3D printer for me!

USB dongle mounted in place
USB dongle mounted in place

It is then connected to my weather station, whose USB power is now fully controlled by the server software through the pass-through dongle.

WS-2080 station in place
WS-2080 station in place

The board contains these parts:

A reed relay with an internal clamping diode from NTE Electronics is used. Its data sheet can be found here.


This is the software that runs on the Arduino Nano board:

Since I am using the same setup to detect garage doors being opened and closed, the source contains code to handle that task as well. As with anything else, you may want to just take the main ideas and create your own solutions.

The USB dongle is connected to a Windows Home Server 2011 box, so I made a couple of scripts in Windows PowerShell to monitor for the failure condition which can be identified by Cumulus software not saving its real-time report data file within some time (I selected 60 min). The script was added to the Task Scheduler to run every 1 hour:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File ServerAutomation\Watchdog\CheckTime.ps1

The script checks if that file has a timestamp older than 60 minutes, and if it does, it will set a signal (via an environment variable) to another script to reset the power on the USB dongle. At the same time it will also (1) send an email to notify me about the event and (2) reset Cumulus software. PowerShell makes doing all of that really easy.

I used a separate script to reset the USB since I am running some other processes that were combined with it. This is a part of that script that checks for the event and resets the USB:

It was a satisfying moment when I first got the email from the system: It rebooted the receiver unit, the software and had reset the weather station. It all continued to work as if nothing had happened and you’d not know if you hadn’t checked the weather data and saw a few missing entries. Then I checked the Weather Underground feed and surely enough – a short flat-line of missing data was closely followed by new valid data and all that happened without my intervention.

This is a link to WeatherCloud where I post weather data. This is a RapidFire WU site where the weather conditions are updated every 5 seconds.

Finally, this is a hosted website containing weather data updated by the Cumulus software using one of the many available weather templates.

Backup images

Mask for the board
Mask for the board
The board is ready
The board is ready
Cut a slot with a nibbler!
Cut a slot with a nibbler!
Testing the Arduino software
Testing the Arduino software
Fitting the board into a convenient enclosure
Fitting the board into a convenient enclosure
Bookmark the permalink.


  1. on my ambient weather monter the tendency and humidity stop working i drop it

    • I have 2 receiving units and on one the internal pressure sensor stopped working. AW are entry level products for HWS purposes so I am ok with that.

  2. When I reset my 2080 by holding the “up” button it fully resets. But when I remove power for 30 seconds it comes up with a bunch of bugus readings. Does your software somehow restore the last valid readings to the station?

    • No, the software (via a relay) simply cuts off the USB power for a few seconds and that resets the receiver. The data is lost – but not much of it since it figures out that the station is frozen rather quickly. Recently, these units started giving me some other problems (failed sensor readings etc.) so I am thinking of dumping the AW for something more reliable that should work more years without having to deal with issues like that.

      • Thank you for your reply. I have looked into Davis but they are frightfully expensive. I had LaCrosse before and that was not very good either. Lately my Ambient has gone into hang state within seconds of starting Cumulus. I guess it’s dead. Sigh….

        I guess if either of us finds a reasonably priced unit that works properly we should spread the word.

  3. Hello Goran, my name is Victor from Lima – Peru. I want to made this project, but I dont understand a few thinks.

    First, could you bring me a total list of the electronic components?.
    Second, the arduino Nano need a specific scketch to upload
    Third, I understand that this module is connect between the WS2080 console and the PC, but how?

    Thanks a lot for your time, best regards


    • Hi Victor,
      I have updated the blog with Arduino source code and the BOM. The board has a 2×5 pin header connector marked “USB” which requires USB cable splicing: on the schematics you will see that pins 3-4, 5-6, 7-8 and 9-10 are tied together, so those signals are passed through, but 1-2 are separated by a reed relay. That is a USB power rail which is controlled by the relay. You will simply have to cut two USB cables (one leading to the PC and another one to the weather unit) and solder 1×4 .1″ pitch connectors on their ends being careful to follow the standard USB wiring lineup: 1=5V, 2=Data, 3=Data, 4=Ground. (Yes, the on-board connector has a spare pair of pins, it could have been 2×4 but I was planning to tie the ground twice, if needed.)
      Hope that helps!

  4. Thank you so much for such an informative piece of information 🙂
    If anyone interested similar one’s have a look here
    “Ambient Weather WS-2902B WiFi Smart Weather Station”


Leave a Reply (your email address will not be published):