[SOLVED] Leonardo-based board - BAD_POOL_CALLER 0x000000C2 upon driver load

EDIT: SOLVED! See EDIT below for solution!

Hello all, I recently backed this project over on Indiegogo. It's based on the Leonardo. I got my board/components today and am excited to start tinkering! Yay! :)

However, when I plug the board in via USB, I had to load the drivers. As soon as I load the drivers, I get the following BSOD:

BAD_POOL_CALLER
0x000000C2

This has happened with the following drivers so far:

v1.0.5, stable, zip file version
v1.5.4 r2, beta, zip file version

I've tried: - Using another USB port on a different USB hub (internal hub on the motherboard) - A Diagnostic startup using msconfig (disabled non-Microsoft services and all startup items) - Unplugging all other USB devices besides my mouse - Disabling a few devices in Device Manager

I see the error message is exactly the same as in this thread, but I didn't want to bump such an old thread.

I'm able to plug the board in just fine in Safe Mode or Safe Mode with Networking. If the board is connected to my machine during a Normal bootup, it crashes right before or at the login screen.

Using NirSoft's BlueScreenView (v1.52), I see usbser.sys could be at fault. I'm using Windows 7 Home Premium SP1-U x64, US English version.

If you'd like to know my other system specs, USB devices, BIOS settings, and/or would like a full crash dump file, please let me know.

Any help would be much appreciated.

Thank you very much, Dan

EDIT: SOLVED! - Open up Device Manager. - At the top, go to View -> Devices by connection. - Find PCI bus and expand it. - Under that, you'll probably see a few USB Enhanced Host Controllers. Expand them all. - Under each one of those, you'll see USB Root Hubs. Expand them all. - Under each one of those, you'll see Generic USB Hubs. Expand them all. - Under that, you MAY see the name of your Arduino board. [u]This is incorrect.[/u] - Right click on it. Select Update Driver Software.... - Select Browse my computer for driver software. - Select Let me pick from a list of device drivers on my computer. - Select Show All Devices. - Under Manufacturer, select (Standard USB Host Controller). - Under Model, select USB Composite Device. - [u]Done![/u]

Is there a similar fix for the BSOD problem when installing Leonardo drivers for Windows 2000?

Having tried to install them once, even pressing Cancel when Windows asks to install drivers (when connecting a Leonardo) causes a BSOD. In the case of Windows 2000, it's to do with USBD.SYS.

I tried following the instructions here, but they don't quite fit into the way things work in Win2k and I couldn't get them to work. Having the machine blue screen every time I try doesn't help.

Is there a set of drivers for the Leonardo that just plain work in Windows 2000? The documentation implies that they do, but my guess is that no one on the development team has actually tried it.

I haven't been able to get a MiniDump file of the BSOD, because my swap file is kept on a dedicated partition, which stops Windows creating one, for some bizarre reason. I guess I could change that temporarily, if needed. Alternatively, I could attach a photo of the screen, but I don't know how much there is to learn from the error message, other than the module it happens in.

Maybe I should start a new thread, as this one has SOLVED in the title, and was for Win7. The general topic is the same though - Leonardo drivers are unstable, in some versions of Windows. Or to be more accurate, they very reliably don't work at all, causing an instant BSOD when you try to install them.

Hey there Andy2No,

Andy2No:
I haven’t been able to get a MiniDump file of the BSOD, because my swap file is kept on a dedicated partition, which stops Windows creating one, for some bizarre reason.

The location where the swap/page file is stored should be different than where Windows creates the minidump files. The default location is %SystemRoot%\Minidump.

I agree that's where it should be, BlindWolf8, but it isn't. It seems to be an informally documented "feature" of Windows 2000 - if your swap file isn't on the system partition, or possibly just isn't on C, you don't get a minidump. I could change things so it is, if it's important, but I'd have to move some stuff to make room first.

Hey there Andy2No, Can you try and change it under the Properties of My Computer and see how that goes? Change it to somewhere easily accessible, like the Desktop. I'd be interested to see if that takes effect.

I tried, but it doesn’t let me, BlindWolf8. Or, to be more precise, it tells me it’s not going to work, but asks if I’d like to change it anyway (see attached).

I’ve attached a photo of the tasteful, white on blue, on screen crash report, instead.

I assume KMODE_EXCEPTION_NOT_HANDLED 0x0000001E in USBD.SYS is a symptom of a driver trying to use a feature that the Windows 2000 USB stack doesn’t actually have.

Hey there Andy2No, I read the message Windows is giving you (not the BSOD one) and that means that it may not be able to make a minidump file for us because you (or some other program) set the minimum/maximum size to be 0 bytes in size. Try letting Windows manage the size of the paging file and then restart, reproduce the crash, and then a mimidump file should be made.

BlindWolf, I could kiss you. Helped me get a Micro that I've been fighting for the last hour working.

For anyone who comes across this with my problem, note that you have to reset the micro and then (very quickly) manually install the micro bootloader driver, and then after that, install the USB composite driver on the "Arduino Micro" or "Unknown Device" that can't find drivers that pops up after that. Then you'll have a working arduino.

If that doesn't work, reset it using the button on the board (so you're in bootloader mode) and then quickly upload bareminimum or blink using the arduino IDE. After that you should be able to follow the above steps.

Thank you!!!