K8055 works under Windows XP, not under Windows7

Hi,

Just built this great little kit and tried it out on my Windows7 laptop. Windows doesn’t recognize the device, and LED8 does the 2-blink thing when the board is plugged in :frowning:.

Fortunately, I have an older laptop (WinXP) kicking around, and I was able to run K8055_Demo.exe with complete success (Windows recognizes the board with no hesitation).

So that would indicate the problem is with the OS and not the board. What should I do to make it work under Windows7?

Thanks a lot,

Charles Wright

Normally the K8055 works OK with Windows 7 too.
Anyhow there seems to be problems in some cases.
Please see this thread:
viewtopic.php?f=16&t=7247
There are some links to other threads for possible solution.

Ok, thanks for the links. My machine is 64-bit Windows 7

viewtopic.php?f=4&t=6941 - Does not help
viewtopic.php?f=3&t=6699 - No help either
viewtopic.php?f=3&t=7107 - No help
viewtopic.php?f=15&t=5960 - No help

viewtopic.php?f=3&t=7107 - No help
viewtopic.php?f=3&t=3832 - Interesting, but not a help
viewtopic.php?f=3&t=4202 - No help

I’ve compiled the example program: K8055DemoVC_2008 and the GUI starts up just fine. I played around with the build config and made it “x64”, which crashes when I click “connect” (message: “Unable to load DLL “k8055d.dll”: The specified module could not be found.”). So I copied the DLL in the System32 folder. In this case, the message is “An attempt was made to load a program with an incorrect format”. So, I assume this is because a 64-bit program can’t use a 32-bit DLL.

When I compile as a Win32 application, I get the “Unable to load DLL ‘k8055d.dll’: The specified module could not be found.” message. So, I copy the DLL into SysWOW64. This time, when I click “connect”, the demo program simply says “Card 0 not found” under the connect button.

I’m not an expert at Windows programming by any means. But it looks to me like the DLL is being found by the demo program no matter what the architecture. But under what I assume are the correct circumstances (Win32, DLL in SysWOW64), the demo program tries to open the DLL, succeeds, and then determines that the device is not present. This would certainly be born out by the fact that the system considers the device to be unknown.

Anyway, I’ll shut my machine down again and pull the battery for an hour (3 minutes isn’t long enough?). I don’t have a lot of faith that will work, though…

Charles Wright

[quote]When I compile as a Win32 application, I get the “Unable to load DLL ‘k8055d.dll’: The specified module could not be found.” message. So, I copy the DLL into SysWOW64. This time, when I click “connect”, the demo program simply says “Card 0 not found” under the connect button.[/quote]This is just the right way to get a Win32 application to run and use the 32-bit DLL under 64-bit environment. Your program seems to work OK.

If you look in the Device Manager under the Human Interface Devices, do you see any yellow exclamation mark there? Also if you unplug and plug the K8055 USB cable, does the number of the drivers loaded there change?

In the Device Manager one of the “HID-Compliant Device” and one of the “USB Input Device” should show this kind of details if you double click on it, then select the Details tab and there select the “Hardware Ids”:

Hi,

Thanks for the info.

I should have mentioned earlier that in the Device Manager, the K8055 shows up as “Unknown Device” under USB controllers. The message in the Properties pane is “Windows has stopped this device because it has reported problems. (Code 43)”. I should add that this takes about 30 seconds or so, and that there’s nothing telling me it’s the K8055, just that it eventually shows up after I plug it in. I don’t see anything listed as a Human Interface Device.

Is there anything else I should check? I’ve tried running the demo using Windows XP SP3 compatibility mode, and various of the other compatibility modes, but it doesn’t seem to matter. Board still works just fine on my WinXP machine. I can do application development there, but in the end, I need the board to work under Windows7…

Thanks,

Charles Wright

In this link there are maybe some more alternatives to fix this problem:
http://technet.microsoft.com/en-us/library/cc725873(WS.10).aspx

One solution may be to use an external USB HUB:
forums.techguy.org/windows-7/904 … error.html

Thanks for the ideas.

The Microsoft Fix It program definitely found the K8055 and returned the same “Code 43” error, and later says,

I tried the external USB hub idea with the one hub I have sitting around here and it didn’t work. In fact, the K8055 LED8 blinked twice as soon as I plugged it into the (powered) hub, even when the hub wasn’t plugged into the computer. I’ll have to try other hubs I have at work to see if any of them work.

Is there some way to forcibly tell Windows which driver to use?

[quote]I tried the external USB hub idea with the one hub I have sitting around here and it didn’t work. In fact, the K8055 LED8 blinked twice as soon as I plugged it into the (powered) hub, even when the hub wasn’t plugged into the computer.[/quote]This is normal operation. The PIC microcontroller starts to run immediately when the supply voltage is connected. The LED LD8 blinks twice and stays on. The microcontroller waits for the USB connection to the PC. When connected and the USB “enumeration” process is complete, the LD8 turns off.
This indicates that the PC has successfully installed the driver too.
The driver is included in the Windows operating system.

[quote]Is there some way to forcibly tell Windows which driver to use?[/quote]I think this is not possible.

It works!

At least, it works on one powered USB hub I have at work. For other readers, what happens is the board LED8 blinks twice and stays on, then a short time later, blinks more and shuts off. I guess this second set of blinking is when somehow the board is recognized by Windows. Once, Windows said the driver successfully installed, another time, it said it didn’t, but the demo program still worked.

On a second powered USB hub, it didn’t work, and in fact, it seems Windows got stuck in a loop of retrying to enumerate and saying the driver didn’t successfully install.

Anyway, now I guess it’s a matter of finding USB hubs that work. At least in my application, all I need is a single one that works, not universal compatibility.

Thanks,

Charles Wright

Thank you for the feedback.
Indeed this “code 43” problem is very strange.

[quote]For other readers, what happens is the board LED8 blinks twice and stays on, then a short time later, blinks more and shuts off. I guess this second set of blinking is when somehow the board is recognized by Windows.[/quote]This may also indicate that the USB power is turned of for a short period of time by the PC.
The blinking starts only when the K8055 power is turned off and then on.
If you used a self powewred HUB this shouldn’t happen - I think.

I’m glad to see you seem to find a solution.

Hello,

I had also same problem:

Card worked with my previous pc (Win7 x32/Win XP) and my Notebook (Win7 x32) perfectly, only under my new machine, i7 with Windows 7 x64 pro it always shows “Code 43”. Also the LED8 was always off, deview shows error with enumartion, in the control panal I see a unknown device where no USB VID/PID are readable.

Any tips from technet or ifixit did not help. I tried several USB Ports and cables, also I tried the onboard USB3.0 port, no success, always identical behavior.
Sometimes the device also Log on/off at PC periodcaly… strange

The only one solution which helped on my side was the tipp by VEL255, to use a powered USB Hub
After that the board was recognized as USB-Input device but with yellow “!” and Code 10 but LED8 was off now. Then I uninstalled the USB Input Device by control panel, and selected “search for changed Hhardware”.
Then it was working as expected!

After my detailed test and investigation, my opinion is that it may be a hardware timing/detection issue on the USB side caused by the combination of Host Controller and the K8055, and has nothing to do with the OS itself.

The newer USB Host generations (USB2.0) are very optimized for data transfer. in Bulk mode they reaches ~35MB easily. some years ago 30MB was also a good result, and the most used NEC USB2.0 wasn´t able to reach more than 22MB…

I also was checking to have all PC side drivers up to date and this was also ok.
I am sure that it is not caused by the VBus supply which powers the K8055, cause I had used also alternative supply and on the USB 3.0 there it can power 0.9A

Here my PC Hardware configuration which could realted to the issue. Maybe if other users with same behavior has identical Host chipset, then this could be a help to investigate more detailed.

Mainboard: Asus P8Z68-V Pro,
CPU: Intel Core i7 2600
RAM 12GB RAM 4Modules
Chipset: Intel Z68 Express Chipset
Graphic nVidia GeForce GTS450

USB Hosts:
Intel Z68 Southbridge:
Intel® 6 Series/C200 Series Chipset Family USB Enhanced Host Controller - 1C26 PCI\VEN_8086&DEV_1C26&SUBSYS_844D1043 Driver Ver: 9.2.0.1021

USB3.0:
ASMedia XHCI Controller PCI\VEN_1B21&DEV_1042 Driver: 1.10.0.0

Greetz, Thorsten

Thank you for the feedback and the report.

[quote]After that the board was recognized as USB-Input device but with yellow “!” and Code 10 but LED8 was off now. Then I uninstalled the USB Input Device by control panel, and selected “search for changed Hhardware”.
Then it was working as expected![/quote]This is very useful information for other Windows 7 x64 users to fix the problem.

Is there also a way without any external USB hub?

I read that I need the 64 bits driver, but the only download I found is this Complete SDK pack (Rev 4.0): velleman.eu/support/downloads/?code=K8055. Is this a 32 or a 64 bits version? I copied the required DLL to my Windows directory and the subdirectories System32 and SysWOW64, but that didn’t help. The computer doesn’t recognize the board, and hence LED LD8 remains lit. The power LED LD11 is not lit. Is this normal?

[quote]Is this a 32 or a 64 bits version?[/quote]It is 32-bit. Normally it works without any problems with 64-bit Windows too. [quote]The power LED LD11 is not lit. Is this normal?[/quote]No, this is not normal. Please check the LED polarity and connection.

Hi,

I have not same but similar problem. Have bought an old HP 4010 compaq in order to have only task
to run an application for the K8055.

Surprise as usual; the HP runs a Windows XP, one of the reasons i bought it, in order NOT to get into
compatibility problems movning my application wiht K8055, from my Dell D600 XP.

when plugging in XP says Unknown device

No driver for this unit is installed.

The led 8 blinks 2 times and then gets on fixed.

I have no notion that any driver should be installed ? is there a downloadable driver for the board for windows ?

/georg

Have you tried other USB port. Also using external USB HUB may help in some cases.
The K8055 is using the Windows HID driver.
No downloadable driver.
Some of the Windows system files may be missing or corrupted.
Please see: viewtopic.php?f=3&t=4195&start=0

I used this card years ago perfectly well under Windows XP and Visual Basic 6.

I’ve also had problems with the card not being recognised under Windows 7 (64-bit). However, continually unplugging and re-plugging seems to eventually get it working. I keep running the K8055 Demo program until it tells me the card connects. Afterwards it seems to be happy to find the card regularly, so I’m guessing that the suggested timing problems over usb are possible culprits.

More importantly, I’ve downloaded the SDK version 4 software and put the K8055D.dll in the SysWOW64 folder. The only problem remaining was using the latest version of Visual Basic which is part of Visual Studio Express 2013. The declarations in the version 4 software cause problems, and it took me a while to figure out why. The errors were headed “PInvokeStackImbalance was detected”.

The integer variable type “Long” in VB6 is actually a 32-bit integer, but in VB2008 and later versions for 64-bit operating systems, “Long” means a 64-bit integer. Eventually I figured out that declarations like:

Private Declare Function OpenDevice Lib “k8055d.dll” (ByVal CardAddress As Long) As Long

need to be re-written as:

Private Declare Function OpenDevice Lib “k8055d.dll” (ByVal CardAddress As Integer) As Integer

If any examples you see in VB6 are changed so that every “As Long” becomes “As Integer”, they seem to work with Win-7 64-bit.

This really needs to be mentioned in the SDK, because otherwise it isn’t compatible with 64-bit Visual Basic. Hope this helps others who are having the same problems.