My OrbShield kit and Arduino Uno arrived, so I carefully put it all together, programmed the Uno with the BasicJoystick but when I flip the switch and plug the USB into the OrbShield, Windows says "USB device not recognised" and fails to install any drivers.
I'm using version 0022 of the Arduino software, with orb sketches 1.0 and orb library 1.1
OS is Windows 7 Ultimate 64-bit.
I just had a thought - I remember trying my orb with the XP drivers a few years ago but had could never get it working there either. I know the orb is OK as it still works fine in DOS & Windows 95, so I'm wondering if I have an orb with the early firmware that was known not to work in XP.
Victor, does the OrbShield have the same limitations or should the firmware version be irrelevant?
- How can I tell what FW version my orb has?
- If it has the old version, is there anyway to update?
Okay, I found a protocol document online, so I connected the orb directly to a serial port on my laptop and monitored the data received. The dump below is a few seconds worth of data:
So the first packet starts at 0x03 - the reset packet, however it doesn't really match what the protocol document expects (i.e. "R Spaceball (R) Vx.xx dd-mmm-yy Copyright (C) yyyy<xor>").
Does anyone have any experience with the protocols?
I would be grateful if someone with a working orb can try the same and grab me some data to compare against.
LOL, I just figured out that for some reason the printable ASCII codes all have the high-bit set (not sure if this is really what is received or was set by the tool I was using). Anyway, allowing for this, the following is my reset packet:
Okay, that's not great, but I suspect the problem isn't the orb, but rather the shield or Arduino. The reason I say this is that if the basicjoystick sketch is getting you a "usb device not recognized" message, that means it's a arduino-shield problem.
Just for easy items... have you tried other usb ports, or plugging in the shield with no orb attached?
Also, can anyone verify the shield works with the uno? (It should, but I don't have one)
I will see what I can learn... may not be able to do much for a few days, but we'll figure something out.
Ah, just tried a few tests with different USB ports:
Plugging in the shield without the orb connected gives 'USB Input Device' with 'Installing driver software' which then changes to 'Failed'.
Plugging in the shield with the orb connected gives 'spaceorb/spaceball' with 'Installing driver software' which changes to 'USB Input Device' with 'Failed'.
In both cases, if I look in device manager I can see 'USB Input Device' but the icon has a yellow triangle with an exclamation mark - if I open the properties it says 'This device cannot start. (Code 10)'
Hmm... okay... that's almost good but not quite. Dang!
Tell you what, I found my old Seeeduino and shield, I'll plug around tonight. The way it's behaving sounds almost as if it's registering almost OK, but then waiting too long to send an update or not responding to something and then failing as a device.
Hmm, dang. "But it works for me!"
I *also* haven't compiled it recently with new versions of the Arduino kit. So maybe I should try that and make sure everything's groovy.
Really sorry about the confusion. I'm pretty sure it's not your orb, though. Whether it's fixable remains to be seen, but I'm betting we can work something.
Really sorry about the confusion. I'm pretty sure it's not your orb, though. Whether it's fixable remains to be seen, but I'm betting we can work something.
Thanks, I'd be grateful for the help.
I just tried it on another machine running XP with the same result - detects it initially then gives up, with device manager reporting the exact same error code.
I can't seem to get an Uno to experiment with (everyone's sold out), but I will have time this week to work on it starting tomorrow afternoon (ie use the most recent version of Arduino, etc). If you could post here what version of Arduino (both the hardware and software) you're using and the option you chose in the Arduino environment (ie what chip you were compiling for) that would be a start.
I feel like it has to be a software issue, because if it's connecting and talking such that it lists the right device, it's able to send the right stuff to the USB port. Maybe something's not triggering the interrupt line so that it's not sending updates fast enough, or maybe there's a minor change in the timing on the Uno that's confusing things. Worst case, I'll ship you a "known working" piece of hardware in exchange for yours, which may or may not fix things (Jay still has some trouble).
Once I'm able to get hold of an Uno, I may be able to find a software solution that ignores the USB port on the shield and just uses the regular Arduino port, which actually could be better in terms of timing, etc. But that's a ways down the road.
If you could post here what version of Arduino (both the hardware and software) you're using and the option you chose in the Arduino environment (ie what chip you were compiling for) that would be a start.
Not sure what you mean by hardware version (the Uno doesn't have any version number stamped on it), but here's my setup (let me know if I've missed anything):
Arduino Uno (chip is ATMEGA328P-PU)
Host OS is Windows 7 Ultimate x64 (also tried on 32-bit XP SP3)
Uno driver is version 5.1.2600.0 (dated 2007-11-15)
Windows serial driver usbser.sys is version 6.1.7600.16385
Arduino IDE version is 0022, configured under Tools->Board->Arduino Uno
Orb sketches version 1.0
Orb library version 1.1
SpaceOrb firmware version is 4.26
I feel like it has to be a software issue, because if it's connecting and talking such that it lists the right device, it's able to send the right stuff to the USB port. Maybe something's not triggering the interrupt line so that it's not sending updates fast enough, or maybe there's a minor change in the timing on the Uno that's confusing things.
I agree, sounds the most logical reason.
Are you still in Oxford UK? - if so I'm only half an hour down the road so I could bring you my hardware and we could take a look together
> Are you still in Oxford UK? - if so I'm only half an hour down the road so I could bring you my hardware and we could take a look together
I wish, mate-- sadly, defended my thesis and done (actually that part's not sad, but I really miss the UK; that was a great three years).
Hmm, OK. I'll fire up my shield-on-seeduino with 22 and see what's up. This is actually sounding familiar, like I had this problem at one point and fixed it, but it's not coming back into my brain. Bleah. Hopefully I can sort it.
Okay, minor bad news: I connected my old shield and arduino (Seeduino 328) and uploaded the BasicJoystick sketch and it worked like a champ. Scratch one easy idea. Plugging it in without any orb attached ALSO worked fine (it set up the game controller but didn't actually do anything, ie the properties window opened but of course nothing moved).
Scratch one easy idea. I think I'm using the latest version of the lib from the site. If I am, I may have to pick up an uno to check further compatibility, but I don't see why that would be any different.
I just bought a second-hand orb on ebay with firmware version 4.34 - so once it arrives I'll be able to tell for sure if the issue is down to my original orb (and the old firmware) or if it's a problem with the shield.
Does anyone actually know what the difference is in the firmware versions - I'm wondering why the older firmware orbs don't work with the hidsporb drivers?
I've just been playing with the old libOrb library and it works perfectly well with my older orb.