Hardware failures are a major cause of computer system crashes. To improve system reliability, making device drivers sufficiently robust to tolerate hardware failures is important. Unfortunately, testing device drivers against hardware failures is not easy because hardware failures must be artificially produced in a controlled manner. Prior work has required source code, OS-dependent implementation efforts, or special virtual environments for testing in which it is difficult to find problems that only occur in real environments. This paper presents FaultVisor, a bare-metal hypervisor specialized for testing device drivers. FaultVisor injects pseudo hardware failures by modifying access to real hardware using the hypervisor layer, allowing closed-source and OS-independent driver testing in real environments, and easy insertion of test systems into existing systems. In our evaluation, FaultVisor discovered 41 fault patterns that disclose problems in device drivers, 30 of which led to critical system failures.