Using ROS on real hardware caused the cat in the backyard to have a litter of puppies that are not sure whether to bark or meow.
I learned about ROS maybe 8 years ago or so. I had the notion that maybe there were 3rd party DLL solutions that did the job faster or better. But I couldn't find faster alternatives to Windows components, but I did find ROS. That was like a dream, a free version of Windows that you could use without it expiring, and you could legally modify it if you wanted. Sadly, while loads of work have been done since then, not many more machines can run it than then without emulation. Notable things since then have been mouse/keyboard fixes, ATA/SATA driver fixes, sound improvements, a new explorer, limited NTFS support, and many graphical fixes.
Several attempts have been made to fix USB support, and it still isn't stable for everyone. There were changes made in last year's GSOC, but not sure if all were merged, and the legacy USB drivers need more work. Yes, someone is working on 3.x support. While that is needed for 3.x ports, and while it supports all common modes, it will, AFAIK only help 3.x sockets. The legacy mode support is limited to that which can be done on 3.x devices. That means that non-3.x sockets still need the other 2-3 drivers. The 2.x support for 2.x ports does work on 3.x sockets at all, and vice-versa, with the 2.x mode of a 3.x driver not being of use to a native 2.x port. I know that because on machines I've used with 3.x support, the sockets are often "dead" if there is no 3.x driver, while the 1.x/2.x sockets work with the Windows driver. So the 3.x driver was started as a courtesy for those with 3.x on their machines, not to replace 2.x or even 1.x. The rationale is that if modern machines with 3.x ports don't have XP or 2003 drivers, then we should provide them.
I'll add some things on the hardware thing. Hard drives do have some programmable registers and memory locations, like the acoustic dampening level. And old IDE drives did not block low level formatting attempts, even though IDEs cannot be successfully low-leveled by end users. So you'd erase the "servo" markers, and the drive would be unable to find it's sector addresses, thus bricking the drive. The few drives that might succeed at this might reformat to a lower capacity. Later IDEs (and SATA) intercept low-level formatting attempts and treat them as simple data clearing requests. So issuing low-level formatting commands will not attempt to rewrite their sector boundaries.