The thread is from 2004, it should go into the title.
I've been using Windows XP until January 2009, then I reformatted my laptop with Ubuntu. One of the first things I noticed was that it instantaneously recognized pen drives without going through all that found new device dance. OS X is also fast at mounting USB drives. I just can't understand the technical reasons that make Windows annoy people with that. Is it still the same with Windows 8?
Some of that stuff is a result of legacy issues where Microsoft tried to handle badly made USB devices as well as possible. For example the reason Windows used to try and install the device again every time you switched ports was because USB device vendors really often didn't use a unique ID so identifying the device was tricky. Coupled with the multi-year release cycle that Windows had and Microsoft's mission to keep backward compatibility meant we had to put up with a lot of this stuff for a long time.
I'm wondering why Microsoft didn't add the unique serial number requirement to its WHQL driver testing, allowing vendors who realize too late that their shipped devices don't have a unique serial number to add the "magic registry key" (for ignoring the serial number) to their next WHQL driver candidate.
In Windows 8 its pretty fast(less than 5 seconds, just tried) but it did come up with a prompt saying new device found.
I don't know if you realise that you are comparing an OS released in 2001(winxp) to Ubuntu, an OS that wasn't around until three years after XP's release.Chances are you are even comparing it to a version of ubuntu that is much more recent that it's 2004 initial release.
The initial Ubuntu release leaned heavily on Debian -- so I don't think the comparison is entirely unfair. Debian started in 1993, and Debian 1.1 "Buzz" was released in 1996.
Now, I can't really remember when I first came across an usb device -- but I also can't remember them ever causing me trouble in Debian.
Win 7/8: the device install process is still there but it's instant, you wouldn't even know if it weren't for the notification popup in the tray.
My issue on the other hand, is that it keeps asking to "scan and fix errors" when you plugin thumb drives if you take them out without using "eject" first.
I think that's a good idea. You can lose all the drive by pulling it out without stopping it first. It happened to me a couple of times. Even if that scan and fix thing was only a way to scare people into ejecting drives, I think it's worth it.
A flashing light tells you when the device is writing or reading. It doesn't tell you when an important cache on the operating system side has been completely flushed. Or that the OS will start writing to the device again in a fraction of a second. Or a dozen other things that are relevant to removing a storage device on a modern system.
A good UI would be to have the USB's normal state be "ready to pull", and have the icon in the tray turn red when there is unflushed data in the cache, and turn green when you can safely pull the drive. That way there is nothing to remember to click on. Then, in the case where another write starts up just before you pull the drive, give you the ability to plug the device back in to let the data flush to it (after the OS check the volume ID of course).
> A good UI would be to have the USB's normal state be "ready to pull"
That's completely wrong. If it were workable, that's how these things would have always been set up. We've got good reasons for not doing things this way.
> have the icon in the tray turn red when there is unflushed data in the cache
There's a lot more to worry about than data in the cache. Open or locked files are an issue regardless of whether or not the cache is empty.
> turn green when you can safely pull the drive
We have almost got this now, with the icon that indicates whether it's safe to pull the drive or not. The difference is that you have to unmount the drive manually to get the friendly "all clear" indication. (a lot of times it won't really matter if you pull the drive while it's mounted)
You could add a process to automatically unmount the drive, but simultaneously provide some kind of virtual drive such that applications could seamlessly remount it and use it. You've then got the possibility that an app will start using it in the moment between when you look at the screen to verify it is safe to pull the drive and when you pull the drive. To make THAT error go away you need to add a request to the user to put the drive back in...
> Then, in the case where another write starts up just before you pull the drive, give you the ability to plug the device back in to let the data flush to it (after the OS check the volume ID of course).
Of course it's not just writes, there are also reads to be contended with.
Anyway, after seeing a few of the new "Not ready reading drive A Abort, Retry, Fail?" error messages, people are going to wonder why your new feature is fucking with them.
I was thinking that at a minimum, have an the indicator be red if the write cache is dirty or there are open files on the drive. But I see your point, that in that case green wouldn't really mean that it is safe either. And having the indicator be green/yellow/read (for unmounted/clean cache, no open files/open files or dirty cache) might be a bit more confusing.
An unplugged drive doesn't need locks, and if a program puts a file into an inconsistent state and leaves it there because it has a lock? Have they ever heard of crashing or power outages?
You want "them" to use files more safely so that you can implement a less safe means of mounting and unmounting devices? I'm grateful Microsoft (and others) do not think that way.
If a program crashes when idle I don't want corrupt data. If I leave a program open in the background and I lose power or my video card driver takes down the system I don't want corrupt data.
I can somewhat excuse losing data if things go wrong during a save. At any other time it should be robust enough that my data is safe.
This is not just about unplugging drives, this is a general sanity measure.
I've had it happen to me as well. Bumped a USB drive to which I was copying files under OS X, and it disconnected. It left the drive in a really wierd state - I could see the files on the drive, but could not read or delete them. Using diskutil under OS X errored out when trying to format, and diskpart in Windows said the drive was read-only (but could not change that flag).
I ended up needing to use some low level tool from a USB drive manufacturer's website to get it working again.
I thought this was a buffered-writes issue, where (perhaps based on the filesystem?) the OS may have buffered some of the disk operations in memory and by asking it to unmount you can ensure that everything gets flushed to the drive. Not sure how that would result in ruining/wiping the drive though.
You can ruin entire filesystem, because not only file blocks are cached, but filesystem blocks too.
If you still do not want to eject the drive beforehand, turn on Optimize for quick removal option (should be default for flash drives now). You will lose write cache though (the write performance will be drastically worse).
It ruins the filesystem if you're in the middle of writing important metadata to the filesystem that can't be done atomically.
This is not an issue for modern filesystems, but most USB drives are formatted with FAT, which has no journaling or other defences against such issues. You could minimize the risk by doing synchronous writes to the drive, but that'd also incur a _very_ big performance penalty.
I understand why it's there, but it's a "systematic" warning appearing every time and which does not give the cause, only that there is an issue. Which means people learn to ignore it, case in point my brother and father.
Also it gets triggered by the dumbest of things, eg my linux laptop does not unmount it in a way that windows 8 consider good enough. At the very least windows itself could/should "clean slate" (aka unmount remount I guess) the thumb every once in a while if there has been activity followed by no activity and no opened descriptors for a few minutes since that would cover a majority of the cases.
You have a point with those dialogs. I didn't use Vista but I remember all the clamour about UAC and how it further trained users to click blindly without understanding what's going on. Setup.exe's next next next could have been the first serial offender of that kind.
I'm sorry for that other issue. How does Windows complain exactly?
Same thing can happen with newer versions of Windows if you mount your C:\ NTFS drive from within Linux, then go boot into Windows. The warning basically says in so many words, the drive has not been cleanly unmounted and it needs to be checked. I've seen it, but I don't have the exact text handy.
In a geologic time scale at least, I believe that was actually a "new feature" some time after Windows Vista and maybe even after 7.
Linux actually does this on purpose, and has for some time. The NTFS driver was kind of scary for a long time (not sure if it still is) - read/write support was beta quality at best. So, the developers of the driver made Linux mark every NTFS volume as dirty, once it was mounted read/write. Then, when you booted into Windows, it would see it as a dirty volume, and do a file system consistency check on it - which is what the Linux driver was aiming for.
I thought the "scan and fix errors" is file-system dependent. IIRC, if you're using something ancient and dumb like FAT32, it doesn't show up, but if you use something non-ancient and intelligent like NTFS it does. (I don't know how exfat is handled).
Try pulling out a mounted ext4 drive on Linux, it will also be marked dirty and request fsck.
>if you take them out without using "eject" first.
That's not exactly true. That only happens if the NTFS volume has a dirty bit set. That happens when you corrupt something and some check fails. I pull drives in and out all the time without ejecting and almost never see the error you mention.
If you pull the drive when there's a write going on, then you'll activate the dirty bit and get that message.
I've noticed that OS X seems to flag a USB drive as needing to be scanned until it is ejected. More than once I've copied files off a USB device and unplugged without ejecting and as soon as it's plugged into windows it comes up with scan option.
It does get you into the habit of ejecting the drive first
That's shameful negligence. There's no reason the drive shouldn't be fully consistent seconds after activity on the drive goes idle. What responsible driver writer would leave uncommitted blocks indefinitely!
Said as a driver writer who always commits blocks on an activity one-shot.
Who said anything about "indefinitely"? It's very possible for a user to pull out the drive within seconds after hitting "save" - or even at the same time.
Everybody in the thread were talking about 'indefinitely' - you are forced to hit 'eject' to safely remove USB storage. This is required even if its many seconds or minutes after use.
Hm, I thought that was just in case some other process was using the disk. I mean most of the time, you can yank a FAT32-formatted drive out without losing data.
Others on the thread report otherwise. I'm with you; I will take my drive when I'm done, and never am going to ask 'mother may I'. If it fails, I'll file a bug report. Its a minimum standard of function in my viw.
Not only pen drives but also keyboards and mices. At home I often switch my keyboard from one laptop to the other and while it's always enabled near-instantly on linux it always takes a few seconds on windows (and especially the first time). It always annoyed me.
This is actually one of the few areas where linux is significantly superior to windows from an average "destktop" user's perspective. For instance getting PS3 controller to work on windows is (used to be?) very painful. On linux I plug it and it just works. Same for network-over-usb "RNDIS" devices but that might be more of a niche.
Same here. I normally work exclusively on macs & gnu/linux boxen, and when recently doing a stint in a windows 7 pro environment was in utter disbelief that plugging in a USB keyboard or mouse could occasionally require waiting over a minute before it became usable, often with a popup saying, "new drivers installed, you should probably restart" or similar. The environment is a bit odd - on a ship, so restricted internet and permissions, but even still. What the hell does windows need to go looking for drivers for a bog standard USB mouse???
It doesn't really know it's bog-standard until it looks up the USB VID&PID in the Windows Update database, right? I mean sure it could initialize as a basic HID device in the meantime but it would have to make you wait later when it uninstalled the HID driver and installed the new one, which seems like a pain as well.
Isn't it caused by different kernel designs? Or is it only user-space implementation that causes this? I mean how long does it take to recognize and initialize a device.
I tried some old RHL and other Linux installs on qemu a while back, and it's hit and miss if they even work -- mostly miss in fact. (Back to RHEL 3 you're OK, RHL <= 7 didn't work). It seems qemu only emulates devices enough to work with modern Linux device drivers, which is natural because that's all most people test.
Right, I just didn't expect anyone would compare to that since RH has been not really usable for quite some time (unlike Windows XP). (Usable in the sense of getting any recent application versions to install, not to mention getting security patches). Is there really someone actually running RH 6 from the year 2000?
(I was actually thinking that if the comment were referring to RH prior to RHEL, we were talking of a version that was still using a.out binary format, but that was not so, I was off by some three years, it came in RH3).
My favorite similar WTF Windows behavior (I hope this is fixed by now):
Drag a file onto an application in the taskbar (as you would with a Dock icon in OS X), and it doesn't just fail to open it in that application—it actually gives you an alert saying "you can't drag things onto the taskbar" or something like that.
So they built in the ability to tell people they can't do it, instead of building the ability to actually do what people clearly already wanted to do. Classic Microsoft UX.
The reason it's not allowed is probably because it's unclear what it should do. Windows doesn't have a means to do a generic drag-and-drop onto a whole application. They'd have to get every application updated to support it.
I'm not that hard on MS, I learned so late that you could drag icons on taskbar-minimized application to reopen them and then drag the file to use it. Saw that from an average guy dropping mp3 files in winamp. I was silently screaming in awe.
I switch between fedora, osx and windows 8.1 on the regular. It's not fixed, and drives me crazy every time I have to wait for the window to open before I can plop down my file.
I consult a lot which means I often have to use a Windows desktop because the IT staff needs it to run Office for people who only know one email client. I mostly work in Linux usually in a VM in these case. To you point, on a new machine designed to run Windows 7, 3 times in the past few months I plug in my external keyboard and it fails. The only resolution is to reboot the windows machine. At least once I've had my USB headset fail, had to reboot Windows. In the past year on a different machine also designed to run Windows I could not get it to detect my Android phone while my Ubuntu desktop has never failed on 3 different machines running Ubuntu.
When people say in any thread that Windows driver support is superior to Linux; the answer from my experience on a number of machines is still no.
From my experience with windows 8 is even slower, it consistently stays there for 5 minutes saying it is installing etc (but sometimes the drive is ready within 30sec, but the message stays)
That, and Windows also seems to create a different network connection profile for the same wireless adapter, every time I plug it into a different USB port. I always end up with something like "Local Area Connection 4" just because that's the fourth different port I've connected it to.
Other operating systems do not seem to suffer from these problems as badly, and this MSDN post is from 2004 (three major Windows versions, soon four, will have been released since then), so does anyone know what are the current roadblocks to getting this behavior changed? As someone else said, these kinds of annoyances add up (you really notice them better if you frequently use other OS).
Unfortunately I don't have two devices with the same ID and no serial number to test, but assuming Linux et al deal with them correctly, there sure must be some way? I guess Windows could resort to using the bus/device number information only when there is no other way of distinguishing between two devices (serial number, USB PID/VID...).
The impression I get is that when Windows executes the "Found new hardware" thing, it installs (usually from Windows Update, if the setting is enabled) the drivers, but it's as if the drivers were installed for that USB port only... it appears to install the driver again and again as I move the device to other ports. This is not the way Linux deals with device drivers (once a driver exists in the kernel or is available as a kernel module, it works irregardless of the port), and as far as I know on OS X and BSD kernels it's similar.
Yes. The post might explain why the device is popping up as new, but it doesn't explain the reinstallation of an already existing, installed driver that's identical because it was just installed a minute ago when the USB device was on a different port.
The driver isn't being reinstalled. A second device is being set up.
Remember, due to vendors producing devices which share IDs with different devices, Windows can't assume that a device on a different port reporting the same device ID is the same device or works with the same driver.
Depends what you mean by "install the driver". Windows already has the driver on the disk in its driver store, but it won't actually start using it until a device requires it. But the driver isn't "reïnstalled" when you insert another device requiring it, that's just setting up a separate device.
Fun story. Once I helped a friend with his Arduino code. I program the Arduino on his Windows PC and remove it. There were still issues, so we had to program it once more. “Great” he says, “now we have to reboot”. “Why” I ask and he replies “these are windows man, they aren't like your linux machine”. In disbelief I connect the Arduino to the USB port but indeed, Windows fail to detect it. Trying to be smart, I pull out his usb mouse receiver and swap USB ports with the Arduino. The PC recognizes it and I feel triumphant. “Now you've done it” he says, “we have to reboot if we ever expect Windows to recognize this mouse again, you don't just move things between USB ports in Windows”.
He still uses Windows to this day, I guess we value different things as important in our OSes. :)
Well that's an odd problem and not usual at all (at least not for me and my 4 Windows machines).
However, my main computer in my last job was an Ubuntu machine (A Dell with hardware linux-friendly components) and the amount of oddities weren't even funny. (Like having to uninstall your video driver before update to avoid losing a morning making boot again)
I guess we value different things as important in our OSes.
We have that problem at the office very frequently, somebody got it first then lose a morning figuring out a workaround and then that person tells everyone else.
My point is... this weird things with drivers happens in every OS (OSX included).
After been working with Windows, OSX and Linux at work in different stages of my life, my conclusion is that at least for me, any choice of an OS is about personal taste.
Yup, every OS has weird annoying quirks. Funny how this thread is "Windows does lame thing X for me, but my Linux is cool" "Your problem is unusual, Windows works fine for me, but my Linux does lame thing Y" "Your problem is unusual, it works fine for me"...
FWIW, Windows has been mostly painless for me, except for the ridiculously bad command line UI, and my last experience with Linux on the desktop was a circus of weird problems.
Indeed, there are issues with every OS. I think though, Linux get attacked most often and usually is because people do not know it as they know Windows.
Oh come on. I use the Linux desktop a lot, typically Xubuntu but lately ElementaryOS and its full of quirks and oddities that cement why OSX and Windows are the leaders and why the "Year of the Linux Desktop" never happened.
Hell, Elementary and Mint seem like the first really usable desktops I'd even come close to recommending (No, grandma has no idea how to even begin using the GUI Ubuntu ships with now). It took us how many years to get here? 20+? While the whole time Apple and MS had easy to use GUI's and stable OS's that just worked.
Desktop experiences are a lot harder to perfect than we give to credit to. I wish more people understood that.
Maybe, but at least in my case I have been using Linux exclusively as a desktop at several jobs for many years and still I found it to be a buggy experience.
I'm still waiting for the year of linux's desktop. That's not the case with the server though. I really love the linux's server experience more than windows and osx. There is one thing that Linux really got it right and it is the terminal experience.
The Linux desktop has been here for quite a while. If you expect to see high usage numbers, it's not going to happen. The problem is the entry barrier to a completely different OS. Most people when sit next to me, admire and are jealous of the things a Linux desktop can do (as does my friend from the story), but they can't invest the time needed to learn a new OS; there are literally hundreds of big and small things they have to forget and re-learn anew.
This is the funny part too, because for me the same happens with Windows. I can't invest the time to learn the new Windows (I left at Windows XP). Once I spent half an hour on Windows 8 trying to find out how I shutdown the machine! I even opened windows help! Another time I spent as much time on Windows 7 trying to make file extensions visible.
I'd rather "lose a morning" because the manufacturer of my OS is essentially a bunch of volunteers, rather than "lose a morning" applying security patches and rebooting because my OS manufacturer is a company with $370bn of market cap but doesn't invest that money in making a secure OS.
I've only seen better support for hardware across all machines I've ever run Linux on compared to Windows. That is experience across over 2 dozen machines in the past 10 years.
". They gave all of their devices serial numbers, that's great, but they all got the same serial number"
Yes, there are functioning adults that work in technology that don't understand the concept of a serial number
Source: was very glad of not making 'serial number' of a certain product in a database the primary key, when repeated serial numbers started to arrive (it was not our responsibility to generate those numbers)
ISTM that primary keys should be completely internal to the DB. You can always add another column with a unique index, if someone lies to you that any particular datum is unique. Then when dupes roll in like they usually do, you can just drop the index.
A great frustration of mine in a previous job was that a predecessor had informed the accounting department of internal keys used for a many-to-many relation in the configuration of a process that journalled transactions from the billing system to the accounting system. That meant I could never reconfigure the janky-ass, inefficient way that journaling was set up, because the accountants knew how it should be.
I have not only this issue with windows, but on my gaming machine, unless I unplug my Microsoft-made keyboard when booting, the OS blue screens [1]. Of course if I then don't plug it back into the same USB port as before, it will reinstall the drivers...
(I also find it amusing that this happens with devices made by Microsoft themselves; you'd think they would make sure it worked, wouldn't you)
You may wish to enable kernel dumps, reproduce the BSoD, then install Debugging Tools for Windows. Now spin up WinDbg and inspect the kernel dump to see what is really causing this.
Looks like a corrupt Windows install to me, but you'll know more after WinDbg. Scandisk (with fix bad sectors) and the Windows memory checker might also reveal how the OS became damaged.
The same computer and hardware runs both Linux and Mac OS without issues, so if it's some other piece of hardware, Windows is the only one choking on it. And it only manifests when the Microsoft keyboard is plugged in.
So yeah. Sure, possibly it is some other piece of hardware in combination that is exposing brokenness in the MS USB drivers. But that doesn't change the fact that the software is the problem here.
Well the problem is the driver and likely Linux and MacOS are treating the keyboard as a generic device. Have you tried forcing windows to use a generic drive for the keyboard?
Small things like this is what starts bothering me about Windows (they add up). The 'Found New Hardware' wizard will also come up each time you plug it in a different USB port (along with the annoyances that comes with).
and (until recentest version of windows) you will get a copy of the same printer according to each usb port, with all the others showing up as disconnected.
"Device manager hides devices that are no longer connected, even when "Show hidden devices" is on. The workaround is to set an environment variable DEVMGR_SHOW_NONPRESENT_DEVICES but this is one of those tips thats not widely know and it can get frustrating trying to fix problems."
Win7/8 actually stop installing a device driver when the device is removed. This is especially frustrating when you've got an intermittent connection on a USB device; Windows begins device discovery, then aborts, begins again, aborts.
Give it any explanation you want, in Linux I can plug in 3 mice in 3 different USB ports and they all work immediately without any "recognising and configuring", so it should be technically possible for Windows to also have it work immediately.
Microsoft really picked the wrong abstraction here. They wanted it so that each device can be separately configured and known, implementing a system that can support if you plug ten devices that are exactly the same, but want them configured differently. Whereas on linux, it's more like "if I plug in a logitech xyz mouse, I want it working like so". Ultimately, I think not even power users have much use for this behaviour being the default, but it's too late to change it on Windows. Maybe if they let you define a set of devices for which you WANT settings to be keyed by port+device, whereas the rest you want keyed only by device type.
On a related note, I got weird behaviour once I switched to an SSD on my Win7 gaming machine, now it boots so fast into the logon screen that the keyboard doesn't work until 2-5 seconds after the logon screen appears.
I'm wondering if it has something to do with the OS not recognizing my keyboard, although I always have it plugged into the same USB port.
I'm using laptop with external keyboard and mouse, connected via hub.
After waking up the laptop from the sleep, the keyboard does not work for a few seconds (so no entering password at the lock screen). The mouse does work, though.
Looking from the OEM's perspective, if they didn't need to add the Maxim part to BOM, it gives them a better profit margin. If the OEM manufactures 1,000,000 USB devices, that could result in a extra profit of $760, (Based on the back of envelope calculations).
One should make it clear that the quoted price on the Maxim product page is $0,76 @ 1000, so if you order 1000, you pay 76cent per chip. But you can easily find offers going down to about 50 cent.
As the DS2401 uses the 1wire bus, which requires a relatively complicated logic inside the chip handling device isolation and power recovery from the data line, it's not the cheapest option. Maxim, for example, has a SPI connected digital serialnumber chip going down to 35 cents.
These chips all come in small SOT sized packages, if you really want to shave off the last cent the companies will be happy to sell you the bare dice you glue on your PCB, bond with wires directly to the board and protect with a glob of epoxy. Also: if you are going to build 1 million devices you'll not pay the standard list-prices but your procurement department will negotiate with high-volume sellers or the chip manufacturers directly. So, you'd probably pay around half.
But then.... if you are going to build 1 million devices you really want to have individually numbered, you might not use the off-the-shelf USB controller without serial number plus a 20cent serial-number chip, no, you'll redesign to use a 5cent more expensive usb-controller with unique serial number, and leave out the external serial-number chip completely.
You've added a few too many 0's to that, the savings for 1,000,000 USB devices would only be $760 which would definitely be worth it for customer satisfaction.
So it's because some USB devices might report the same ID and Windows doesn't want to accidentally confuse one for the other, right?
What would actually need to happen for this to go wrong? You'd need two different USB devices, that are not only cheap/bad (using a non-unique ID), but they'd have to just happen to actually share the ID as well.
Isn't that a rather unlikely thing to happen? Unless many devices report a very common ID such as 0, or something.
Then, I'd have to unplug one device, and plug in the other into a different port, and what would happen is the OS would try and "talk" to the device using the wrong driver, yes?
But, given that Windows doesn't go through the whole "installing new device" spiel if you plug the same device again into the same port ... what if I would unplug that device, and then plug the other device (that reports the same ID as the first) into that same USB port. Then Windows would still get confused right? So the problem isn't even really solved, at all. It just makes it slightly less likely to happen (by a factor of your number of free USB ports).
Okay so that is one thing. But then, from what I read in this thread, I get the idea that Linux in fact does consider devices with the same ID to be the same device, regardless of port (correct?). So, in Linux you'd run into this problem? Has anyone ever actually experienced it? Because I certainly haven't.
And then there's the part that, if the problem occurs, you'll figure it out real quick, because it only happens right after you plug in this new USB toy that you recently bought, on the cheap. That's not too bad, is it? I bought a €1.50 USB-hub a while back, noticed my keyboard and mouse started acting glitchy, didn't take a second to figure out it was probably that cheap thing, and threw it out.
I noticed this behavior in early versions of the Windows 20xx family, but I found a consistency to it that wasn't mentioned in the article and now I'm left wondering if I was completely wrong in my assumption.
In my case any USB version 2 device would be detected as "new" if it was plugged into any port other than the one it was first plugged into, however, all of my version 1 devices would work without Windows "forgetting about them" when they were plugged into another port.
Does anyone have any insight on this? Did manufacturers supply a serial number more consistently with early version devices or was it just my (somewhat massive) collection of those devices that was at fault?
Of course this isn't the only way it could have been done. Settings could have optimistically traveled from port to port until the system saw two at once of the same device with either no serial number or the same serial number.
Sometimes linux usb stack is stateful too. I have some ghost /dev/sd* nodes hanging. Also some embedded devices usb chipset is bogus, causing duplicate descriptors and duplicate devices (one being DOA).
Many USB devices over time also starts to fill the registry with . . . stuff, leading to more slowness and instability as the system ages. WTF.
I found out that for a few years I sat next to the guy largely responsible for this behavior. I had no idea. Not that I wanted to slug him, but, but . . . argh :-)
I had the unfortunate experience where my Win7 would not recognize ANY new usb device. I had my keyboard, mouse, and n52 from years of use. I could freely swap them to all of my usb ports and they would still work. However the moment I tried any NEW usb device (like a new mouse or game pad) it would never recognize it. The devices worked on other Win7 computers and my Mac.
I have never been more stumped and ended up reformatting (which I had been wanting to do anyways to move to a 1TB ssd)
The fix for it was pretty awful, as well. Under "System Devices", I'd locate the parts of the chipset associated with USB and PCI, find the driver the OS was referencing and remove the files associated with that driver from wherever in the OS they were being grabbed[1]. Then I'd download the chipset drivers from the chipset (not motherboard) manufacturer and install those. The problem always went away after that step, but often took several reboots to get everything exactly right for the new drivers.
It seemed to happen most commonly in Windows XP with motherboards that were Intel based and had USB 2 controllers with third-party (I want to say Realtek[2]) USB 3 controllers. At the time, Intel had no chipset that included a USB 3 controller so motherboard manufacturers would use a non-Intel controller for the USB 3 ports and the Intel controller for the USB 2 ports.
It's possible my problems were simply an artifact of working with USB 3 devices that were bleeding edge and not implemented exactly right, but in all cases replacing the chipset drivers with the ones provided by the chipset folks did the trick. Doing the same with the ones provided by the motherboard manufacturer (often ASUS for me) would result in the same behavior.
[1] The best way to do this, I've found, is to remove the files associated with the broken drivers and reboot. Once they came up as "Unknown Devices", I'd proceed with the installation of the drivers I grabbed from Intel/Whomever. If the device was detected properly -- in the case of this specific problem -- the new driver would be skipped in favor of the one provided by the motherboard or the Windows installation.
[2] I may not have this right. I tend to jump to Realtek when I think about devices I've had terrible experiences with. Their network adapters that seem to be included on a lot of lower quality motherboards have given me so many problems that I no longer purchase boards with them installed and if I have no other choice, I'll buy an Ethernet adapter from someone else and use up one of my PCIx slots just to avoid their drivers.
I'm sure these little niggles accumulate easily when your devs never have the equivalent of the "Steve's gonna kill/fire/humiliate me if my code ever inconveniences him" thought at the back of their minds.
It's not a hardware thing though. Linux systems work with USB devices instantly, as soon as you plug them in, without any installation phase. That makes it a software thing Microsoft did wrong.
Linux systems work instantly because they only have to support one (usually sorely lacking) driver for any device ID, and if this is a problem, don't need to prevent a friendly user interface to fix it. They don't have to deal with the real world.
Linux distinguishes devices by their manufacturer and device ID and loads the driver that matches most specifically. There are plenty of drivers for specific mice, and the correct kernel module is loaded automatically (via udev). The generic driver (hid-generic) matches all HID devices (mice and keyboard) and provides basic functionality for all such devices.
Inserting a kernel module is fast. What else would you need?
Raymond Chen's blog in particular has been well worth reading for insight into why MS has made some of the crazy-seeming technical decisions it has for well over a decade now.
A lot of them boil down to "incredible contortions to support applications written years ago to which the source code, and probably the original developers, are no longer available."
I've been using Windows XP until January 2009, then I reformatted my laptop with Ubuntu. One of the first things I noticed was that it instantaneously recognized pen drives without going through all that found new device dance. OS X is also fast at mounting USB drives. I just can't understand the technical reasons that make Windows annoy people with that. Is it still the same with Windows 8?