Configuring WMR89 with weeWX



My WMR88 Oregon Scientific Station unfortunately died a couple of weeks ago after almost 6 years working. I was very satisfied with this model but Oregon Scientific does not produce it anymore. The updated version, the WMR89, is compatible with the sensors of the old model but, surprisingly, their computer interfaces are completely different. Luckily some clever people from www.wxforum.net found out how to decode the data sent by the station. In this short guide I will expose how to install and configure a WMR89 station with weeWX in a Raspberry Pi.

Configuring CP210x Driver

Most weeWX drivers use pyusb library to communicate with weather stations. That was the case, for instance, of the WMR88. However, the WMR89 uses chip CP210x as a USB to UART (serial) Bridge Virtual COM Port. Using the CP210x drivers the device can be mapped to a serial port of the Raspberry Pi, such as /dev/ttyUSB0. The required drivers are already included in the last Raspbian version (Strech) but, to map the device, you should first load the CP210x kernel module. You can do it manually by typing:

Unfortunately, the vendor and product ID of the WMR89 are not registered in the driver CP210x.c. This means that, even though the device can be found with dmesg when connected, your Raspberry will not be able to communicate with it (/dev/ttyUSB* doesn’t exist). One option could be to edit the driver, include the pair vendor/product, recompile and reinstall.

A much simpler solution is to edit the file /sys/bus/usb-serial/drivers/cp210x/new_id and include the vendor and product ID of the WMR89 station in it. Writing a product ID to this file will make Raspberry to attempt to dynamically add it to a PCI device driver. Upon successfully adding an ID, the driver will probe for the device and attempt to bind to it. Do it with this code, where 0fde is the vendor Id and ca0a the product:

If everything runs correctly, you should see now the device in /dev/ttyUSB0.

If you want to load automatically cp210x kernel module at boot time append it to file /etc/modules:

I have also included in rc.local the  command to add the device to new_id file in order to ensure that the weather station, when connected, is correctly configured.

Installing WMR89 weeWX driver

There are a couple of available weeWX drivers for the WMR90 station. However, none of them are officially included in the last weeWX release (3.8.0 version).  The drivers are not complete and are unable to decode forecast values or low battery signals. However the basic weather information is correctly captured. I have used fcauwe driver, available in his Github. Download the file, place it in /usr/share/weewx/drivers (for a Raspberry Pi running Raspbian) and do the following changes in your weewx.conf file:

 Due to the utilisation of CP210x, the driver uses pyserial instead of the pyusb module to communicate with the weather station unlike it happened with the WMR100 driver. Once configured, you should just restart weeWX to see the first incoming data. Note that some weather data are sent in a low pace. For instance, the barometric pressure is sent every 15 minutes. For this reason, and depending on your archive interval, you will see some missing values in your records.

3 thoughts on “Configuring WMR89 with weeWX”

  1. Hey!
    Not working with me. I don’t see the device /dev/ttyUSB0 and there will be an error message: raspberrypi weewx[1505]: import of driver failed: [Errno 2] could not open port /dev/ttyUSB0: ()
    Jul 9 18:34:57 raspberrypi weewx[1505]: engine: Unable to load driver: [Errno 2] could not open port /dev/ttyUSB0:

Leave a Comment