I have tried Rufus on two of my computers, both of which have two optical drives attached, and both have the same problem -- Rufus fails to find the USB drive. These computers are running 64-bit Windows 7.
Rufus only displays "NO_LABEL (E:)" and all of the other boxes are blank. No other device choices are listed, just the E:, even though I have a SSD at C:, optical drives at D: and E:, and a USB drive at F:
Thanks for the report, I'll look into it.
In the meantime, can you install DebugView from http://technet.microsoft.com/en-us/sysinternals/bb896647 and see if it reports anything suspicious? Please feel free to also e-mail me the log you get from DebugView, as it may tell what the issue is.
I've considered optionally listing all drives, but I think the option is too dangerous for regular joes, who may inadvertently end up formatting one of their HDD partitions, and will be a lot more annoyed with the loss of their data than people who don't see their drive listed. Therefore, I'd rather fix the USB detection instead.
Also, since Rufus follows very closely what the HP utility does for drive listing, can you tell me if the HPUSBFW executable has the same issue?
You can obtain a copy of HPUSBFW in: http://akeo.googlecode.com/files/USB_DOS.7z
Let us consider grandma Jones.
Lately, grandma, who has had her PC installed by her grandson, has been experiencing stability issues that seem to be tied to hardware incompatibility. As she mostly uses her computer for e-mail, the occasional browsing and to send/recieve photos of her grandsons and granddaughters, her machine is not one of the the latest PCs but secondhand machine. Her grandson looked into the issue and discovered that there exists a BIOS update from the manufacturer that seemed to be aimed exactly at fixing the symptoms she experiences. However, that BIOS update is delivered as a DOS program only (old machine) and since he's in college/at work at the other end of the country, he can't do the upgrade himself for some time.
Still, he's heard about this neat little program called Rufus, that should be able help grandma Jones create a DOS bootable US drive, and he knows she has an USB key, so he e-mails some instructions to her.
And there we have grandma Jones, running Rufus, with her USB drive plugged in, but for some reason (maybe she has two optical drives, who knows...) she can't see it. She's rather annoyed and confused, so she's looking around because her grandson implied it would be fairly easy. Maybe the checkbox that says "list all drives" will do it? Seems like it, because now she can see a "Data (D:)" entry in the GUI. Sure, she got warnings when checking the "list all drives" box, but her grandson said she would get warnings, so she didn't make much of anything about them. Besides, the USB drive is branded "ADATA" (which is a well known USB keys brand) and the list says "DATA", so how could that not be the same?
Of course, unbeknownst to grandma, the ADATA USB drive is not D: at all, but is listed further down in the list that she didn't open. Instead D: is the partition that stores some of her photos, documents and programs, because her grandson thought it may be safer to store data separately for OS reinstallation. But it's too late to worry about that now, because grandma Jones has just initiated the formatting, after dismissing the second warning ("He said there would be warnings, right?").
Congratulations, you've just caused grandma Jones to lose some very valuable data!
I hope, then, that you can understand that a developer's attitude is to envision the kind of scenarios above and consider not just the benefits but also the drawbacks a feature has across all users, and cater for more than a select group of individuals... As you indicated, it's very easy for an individual to indicate what they want. What's more difficult is to balance what a larger group of people will want, and I doubt grandma Jones would want the "list all drives" feature at all if she had any awareness of the risks it may put her data through. So, yes, sometimes developers have to make decisions that are for the benefit of more than just an individual, even if said individual thinks it as either a snotty attitude and blatant ignorance of their pleas.
Now, if you want to just brush off the scenario above as a remove fantasy, let me give you some more facts:
So there you have it. If seeing that a free program does not implement the feature you request angers you, because the developer considered not to be in the best interest of the program users as a whole, you're free to post all the negative reviews you want. But you should understand that developers have a whole community of users to consider, and that what benefits the many will always trump what benefits the one. I'd much rather deal with an angry user, but who hasn't lost any data because of my application, than one who has.
Not sure if it's the same bug, although the symptoms are exactly the same.
Rufus does not detect my USB device as well. I ran DebugView and the HP USB Disk Storage Format Tool - this is the DebugView output:
 *** RUFUS INIT ***
 SetLGP: Successfully set NoDriveTypeAutorun policy to 0x0000009E
 FreeDOS resources are embedded with this app
 Found drive 'SanDisk Cruzer USB Device'
 IOCTL_DISK_GET_DRIVE_GEOMETRY_EX failed: [0x00000015] Device not ready.
 SetLGP: Successfully removed NoDriveTypeAutorun policy key
 *** RUFUS EXIT ***
The HP tool detects the USB drive, instead.
I suspect that the bug is caused by my unusual disk configuration:
Disk 0 (233 GiB)
While running Rufus, I noticed that it detected the drive correctly (the DebugView output shows that), but it picks up the wrong physical device (in its main window, it shows "NO_LABEL (E:)" in the "Device" list box).
Let me know if I may be of further help.
Thanks for the detailed report!
I have just installed Virtual CloneDrive and I am now able to reproduce the issue. I should be able to do something about it.
I'll provide an update on the fix when I have one. Thanks again for the report.
Rufus v1.0.7, which I just made available at https://github.com/pbatard/rufus/downloads should fix the issue.
Can you please test it and let me know if you still encounter a problem?
Note that, due to the nature of github, the issue will be automatically closed when I push the fix in the source (which I will do in a few hours), so, you may have to open a new bug report if you find that it still doesn't work.
For a full technical explanation, the problem was due to the fact that, because we locate USB drives in 2 passes to be able to access all of its properties, Rufus has to invoke IOCTL_STORAGE_GET_DEVICE_NUMBER during the second pass to try to match a device number with the drive index that was identified with pass 1. However, the second pass is also a more generic one, and device numbers are not guaranteed to be unique. For instance a DVD drive may be listed with the same device number as an HDD (especially if multiple optical drives are available), which of course means that, unless we can differentiate between devices using the same number, we may pick up the wrong one.
The HPUSBFW utility does add a call to GetDriveType(), to eliminate optical drives and avoid this issue. Rufus is now using the same approach.
Thanks for the quick reply!
The new versions seems to detect the device correctly (I did not try to format it yet, but I saw the right drive letter and characteristics show up).
Great. Thanks again for the test and the previous report - it really helped!
I'm going to push the patch and close the issue now.
[core] fixed non detection of USB drives on some platforms
* STORAGE_DEVICE_NUMBER.DeviceNumber is not unique! Optical drives and
HDDs can have the same number
* Use GetDriveType() to filter unwanted devices
* closes #32
I tested the formatting capabilities this morning and can confirm that the new release works fully.
Thanks for solving the issue!