I doubt the issues are hardware, as USB is a pretty reliable standard, at least in the ways it's being used here. Plus, the failure would present as "device not found", which is not what is happening.
The obvious correlation is the python-usb version, where it works on 0.4.3-1 and does not on 0.4.2-2.
This can be a misleading hypothesis, however, but may provide a clue.
My ubuntu box has 10.04 and I may be able to try testing, but may be a few days out. I just installed python-usb in anticipation for this test, and it presented 0.4.2-2, so that is the latest for that ubuntu version and not upgradeable beyond that version.
The usbmon data on the python-usb 0.4.2-2 OS'es would be a good log to gather when weewx is trying to startup.
I'm not sure the differences between the 0.4.2-2 and 0.4.3-1. My guess is that once we find the bug, it's a simple fix to get it all working properly.
One required fix for the driver you already discovered is some way to determine the device timeouts as device not there and to abort rather than continuously retry reads that will never complete.
C
--