1. A method for diagnosing and repairing devices connected to a computer and interfaced to the computer by each device's driver software, comprising the steps of: enumerating the devices connected to the computer; detecting whether any device has an error; selecting the type of repair to perform on a device from a software repair directed to the device's driver or a hardware repair of the device itself or its connections; and attempting to perform the selected repair.