Jan, Bret thanks for the comments.
I think the power problem is mostly due to the transients of the current switching on & off when programming the Flash memory.
The device keeps running, but the memory is not correctly erased & reprogrammed.
I'm hoping that in Windows there is a way to work backwards from the device to the root hub, so that I can count bus segments.
(Ignoring whether the hubs are bus powered or self-powered seems lika good idea, thanks.)
John Hyde's book shows how (like USBview) to iterate through the root hubs, and search the tree of connected hubs & devices. I can do my search like this, but it seems a bit inefficient.