Help with Weather Display/Ubuntu 9.1/Oregon Scientific WMR200A

Hi all!
Im struggling with Weather Display in Ubuntu. I was hoping someone could understand what I trying to say. Im pretty new as a Ubuntu user, so some of my questions may be wierd… I have read the “Topic: HowTo: Create device-matching udev rules and permissions”, but Im still dont understand. Probably a little slow…

Here is what I got:
Hardware : HP pc with Vista Home Premium installed.
Oregon Scientific WMR200A weather station.
OS : Ubuntu 9.10 - Karmic Koala
Software : Weather Display for Linux

Working perfectly under Vista when using the Windows version, but I get errors in Weather Display when starting it in Ubuntu.

What I’ve done :
I started it. Got the Nag screen, pressed ok, and i get a picture showing the display.

First this message appear:

Looking for data from 18:53:00 01/20/10
USB port failed to open
No more missed data count 1
No more missed data count 2

then the terminal window show a LOT of these messages:

USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USBWrite USB device is not open USB

I have read a little about this on various forums, and tried some of it, but im not a linux expert, so much of this is beyond my wit.

Got a hint about udev in one of the post. I did :

kjetil@linux:~/Skrivebord/wdisplay$ udevadm monitor --environment
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[1264018703.353452] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1 (usb)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1
SUBSYSTEM=usb
DEVNAME=bus/usb/004/011
DEVTYPE=usb_device
DEVICE=/proc/bus/usb/004/011
PRODUCT=fde/ca01/302
TYPE=0/0/0
BUSNUM=004
DEVNUM=011
SEQNUM=1815
MAJOR=189
MINOR=394

UDEV [1264018703.355881] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1 (usb)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1
SUBSYSTEM=usb
DEVNAME=/dev/bus/usb/004/011
DEVTYPE=usb_device
DEVICE=/proc/bus/usb/004/011
PRODUCT=fde/ca01/302
TYPE=0/0/0
BUSNUM=004
DEVNUM=011
SEQNUM=1815
ID_VENDOR=0fde
ID_VENDOR_ENC=0fde
ID_VENDOR_ID=0fde
ID_MODEL=Universal_Bridge
ID_MODEL_ENC=Universal\x20Bridge
ID_MODEL_ID=ca01
ID_REVISION=0302
ID_SERIAL=0fde_Universal_Bridge
ID_BUS=usb
ID_USB_INTERFACES=:030000:
MAJOR=189
MINOR=394
DEVLINKS=/dev/char/189:394

KERNEL[1264018703.357466] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0 (usb)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
DEVICE=/proc/bus/usb/004/011
PRODUCT=fde/ca01/302
TYPE=0/0/0
INTERFACE=3/0/0
MODALIAS=usb:v0FDEpCA01d0302dc00dsc00dp00ic03isc00ip00
SEQNUM=1816

UDEV [1264018703.357546] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0 (usb)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
DEVICE=/proc/bus/usb/004/011
PRODUCT=fde/ca01/302
TYPE=0/0/0
INTERFACE=3/0/0
MODALIAS=usb:v0FDEpCA01d0302dc00dsc00dp00ic03isc00ip00
SEQNUM=1816

KERNEL[1264018703.357691] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/0003:0FDE:CA01.0010 (hid)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/0003:0FDE:CA01.0010
SUBSYSTEM=hid
HID_ID=0003:00000FDE:0000CA01
HID_NAME=Universal Bridge
HID_PHYS=usb-0000:00:1d.2-1/input0
DRIVER=generic-usb
MODALIAS=hid:b0003v00000FDEp0000CA01
SEQNUM=1817

UDEV [1264018703.357766] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/0003:0FDE:CA01.0010 (hid)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/0003:0FDE:CA01.0010
SUBSYSTEM=hid
HID_ID=0003:00000FDE:0000CA01
HID_NAME=Universal Bridge
HID_PHYS=usb-0000:00:1d.2-1/input0
DRIVER=generic-usb
MODALIAS=hid:b0003v00000FDEp0000CA01
SEQNUM=1817

KERNEL[1264018703.376601] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/usb/hiddev0 (usb)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/usb/hiddev0
SUBSYSTEM=usb
DEVNAME=usb/hiddev0
SEQNUM=1818
MAJOR=180
MINOR=96

UDEV [1264018703.376672] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/0003:0FDE:CA01.0010/hidraw/hidraw0 (hidraw)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/0003:0FDE:CA01.0010/hidraw/hidraw0
SUBSYSTEM=hidraw
DEVNAME=/dev/hidraw0
SEQNUM=1819
MAJOR=252
MINOR=0
DEVLINKS=/dev/char/252:0

KERNEL[1264018703.376739] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/0003:0FDE:CA01.0010/hidraw/hidraw0 (hidraw)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/0003:0FDE:CA01.0010/hidraw/hidraw0
SUBSYSTEM=hidraw
DEVNAME=hidraw0
SEQNUM=1819
MAJOR=252
MINOR=0

UDEV [1264018703.378287] add /devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/usb/hiddev0 (usb)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb4/4-1/4-1:1.0/usb/hiddev0
SUBSYSTEM=usb
DEVNAME=/dev/usb/hiddev0
SEQNUM=1818
MAJOR=180
MINOR=96
DEVLINKS=/dev/char/180:96

Sorry about all the pasting, im not sure what Im looking for. I think it is DEVNAME=/dev/usb/hiddev0, but im not sure.

I did another test I found in forum. I unplugged the device, started a tail and plugged the device back in. This is what I got:

kjetil@linux:~/Skrivebord/wdisplay$ tail -f -n 0 /var/log/kern.log
Jan 20 21:12:13 linux kernel: [30961.720019] usb 4-1: new low speed USB device using uhci_hcd and address 10
Jan 20 21:12:13 linux kernel: [30961.945133] usb 4-1: configuration #1 chosen from 1 choice
Jan 20 21:12:13 linux kernel: [30961.962120] generic-usb 0003:0FDE:CA01.000F: hiddev96,hidraw0: USB HID v1.10 Device [Universal Bridge] on usb-0000:00:1d.2-1/input0

My hope is that someone understand a little of this, and can guide me closer to my goal of getting a working Weather Display in Ubuntu.

Im happy for answers, even those who a yelling about me being stupid and so on… :slight_smile:


Best regards,
Kjetil S.

So the next step is to do a ls -l /dev/usb/hiddev0. Look at the permissions and they should be rwxrwxrwx at least. WD writes to the port as well as reads from it. So parts of the messages mean you can’t read or write to the port. You would use /dev/usb/hiddev0 for the device in WD.

Also read the message at the top of this forum http://discourse.weather-watch.com/t/39935 as it shows you how to set the permissions as well as work through the process of getting WD to talk through the USB port.

Mike - N7DQ

Thanks a lot for your quick reply!
First; believe me, I have read through the permission post several times, but Im starting having problem when I get to the Device Permissions, and Udev rules. Im really struggling understand this. Where to type what and so on.

I feel I have got a small step closer to the solution by figuring out this hiddev0. I have put it into Weather Display, and now I get some other messages saying

dleException Access violation
Stack trace:
$00ED052C
$00BA1B4A
$00BA1BC5
$0868733A
$0809F178
$0809DC7C
$0809DCB1
$08CD2BA2
$0809AF8D
$08CD7D39
[TGtkWidgetSet.Destroy] WARNING: There are 1 unreleased GDIObjects, a detailed dump follows:
[TGtkWidgetSet.Destroy] GDIOs: 030CF770
[TGtkWidgetSet.Destroy] gdiBitmap: 1

However, i feel I have come closer, and I will try to sort out this permissionproblem.

Thanks.


Best regards,
Kjetil S.

Here is what I did last :

I opened a file called 38-weather-station.rules and put this inside :

WMR200A Weather Station

ACTION!=“add|change”, GOTO=“weather_station_end”
SUBSYSTEM==“usb”, ATTRS{idVendor}==“fde”, ATTRS{idProduct}==“ca01”, GROUP=“weath
er”

LABEL=“weather_station_end”

The idVendor and idProduct I picked from the UDEV print.

Then I made a group called weather and added my user ‘kjetil’ into it.

I restart udev, log my user out and back in, but I still get the same error.

Im not sure what you mean about “udevadm info -a -p $DEVICE”. Is $DEVICE hiddev0?

When I try udevadm monitor --environment there is no output.


Best regards,
Kjetil S.

check the permissions on /dev/usb/hiddev0 again, are they correct? Use

ls -l /dev/usb/hiddev0

On Fedora, I had to reboot the server and make several other changes for it to work. Each time I would have to check the permissions to see if the changes took effect or not.

I’ll try to look at the other part of your question when I have time tonight.

Mike - N7DQ

For the test i put permissions on this file to chmod 777, but it had no effect.
Whan I booted the permissions were back to

crw-rw---- 1 root root 180, 96 2010-01-22 11:54 /dev/usb/hiddev0

Try again; before boot :
crwxrwxrwx 1 root root 180, 96 2010-01-22 11:54 /dev/usb/hiddev0

After boot:
crw-rw---- 1 root root 180, 96 2010-01-22 12:00 /dev/usb/hiddev0

Once back to the old s***t.

Until now I have rebooted, Ill try to turn off the machine entirely.

For the test I put permissions on this file to chmod 777, but it had no effect.
When I booted the permissions were back to

crw-rw---- 1 root root 180, 96 2010-01-22 11:54 /dev/usb/hiddev0

Try again; before boot :
crwxrwxrwx 1 root root 180, 96 2010-01-22 11:54 /dev/usb/hiddev0

After boot:
crw-rw---- 1 root root 180, 96 2010-01-22 12:00 /dev/usb/hiddev0

Once back to the old s***t.

Until now I have rebooted, Ill try to turn off the machine entirely.
Done this several time now, but the filepermissions change back after every boot/restart.

This is far beyond my ability to understand… #-o


Best regards,
Kjetil

I went thru the same thing on Ubuntu 9.10 (64-bit) and finally got it working – until today. After allowing all the available Ubuntu patches to be installed today the GUI version of WD is aborting. However consolewd still works, other than the rain data which never worked in either the GUI or console versions. Actually I had given up on the GUI version when faced with the same things you’re seeing and moved on to the consolewd version. When it started working I went back and tried the GUI version and it just worked (at least until today).

BTW, not sure if it makes a difference but my rules file uses an ATTRS{idVendor}==“0fde” (with the leading zero). I don’t think it all started working though until I actually rebooted the system.