## New run of orbshields

SpaceOrb drivers and software discussions
kenyee
Posts: 51
Joined: April 02 2013, 8:33 AM

### Re: New run of orbshields

vputz wrote: smtstencil.co.uk, who are right here in London and can send me a whole sheet of stencils for a little over \$20 in two days
Wow. That's cheap

If you want your brain to hurt for a while, read this:
http://www.qualiecocircuits.co.nz/stenc ... spects.htm

I have no idea what that means for best stencil size for you though

kenyee
Posts: 51
Joined: April 02 2013, 8:33 AM

### how to confirm SpaceBall 5000 ball is dead?

Well...curiosity got the better of me and I picked up a SpaceBall 5000 off fleabay. Unfortunately, the idiot seller (new_life_electronics2) decided it was good idea to ship it in one of those yellow bubble mailers w/o anything around it...it arrived w/ holes in the yellow part of the mailer and the punctured bubble layer was the only thing keeping it from falling out since there was no wrapping around the SpaceBall at all

Anyways, I loaded up the BasicJoystick w/ SpaceBall 5000 support and the buttons all work but they seem to be offset by 1 (1 is 2, A shows up as button 2, etc. though there's no chording) and the ball has no response.
I loaded the orbserial sketch and it emits a bunch of values when you push the buttons, but nothing when you move the ball. Just wanted to know if there's any other way to confirm the ball is dead...

vputz
Posts: 339
Joined: March 25 2006, 20:21 PM

### Re: New run of orbshields

Pursuant to the earlier conversation, this didn't happen to be a 5000FLX-A (rebranded 4000)?

If not, no idea. That behaviour is consistent with either not receiving enough voltage (but the board works with your Spaceorbs, so I don't think that's it) or the device not receiving the initialization string. I haven't tested on mine, but does it beep shortly after plugging it in? (I seem to remember the 4k and 5k beeping after initialization).

For kicks, try it with the 4000 initializer.

In other unrelated news, the Thrustmaster wcs/fcs/pedals converter seems to work; hooray for old HOTAS gear. Unfortunately requires some surgery on the WCS to replace the electronic guts, so I doubt this would be a popular mod, but I can't be bothered learning how to reverse-engineer Thrustmaster's 1990's-era keyboard programming codes.

kenyee
Posts: 51
Joined: April 02 2013, 8:33 AM

### Re: New run of orbshields

vputz wrote:Pursuant to the earlier conversation, this didn't happen to be a 5000FLX-A (rebranded 4000)?

If not, no idea. That behaviour is consistent with either not receiving enough voltage (but the board works with your Spaceorbs, so I don't think that's it) or the device not receiving the initialization string. I haven't tested on mine, but does it beep shortly after plugging it in? (I seem to remember the 4k and 5k beeping after initialization).
Oh, wait, it does say 5000 FLX on the model line, though at the top, it says SpaceBall 5000. Copyright 1992-2003. I thought the 5000 FLX was only rebranded by HP/IBM.
Here's what the back looks like:

Weird part is I loaded the SpaceBall 4000 BasicJoy sketch and it doesn't even show button presses.
And I still don't get why the serial port sketch doesn't show any data from the ball...if you send the wrong init string to it, the ball doesn't return any serial data but the buttons work?

p.s., for guys who have the older Orbotron, be careful when unpluggint the microusb cable. I pulled the microusb jack off the board...looks like a cold solder joint on the outer support pads..and it's the PITA to solder connector whose pins are underneath the shield

Tehrasha
Posts: 26
Joined: May 19 2013, 19:37 PM
Location: Midwest, USA
Contact:

### Re: New run of orbshields

*growl* People who cannot package electronics properly really raise my hackles.
Of all the spacemice I have bought on ebay (over 30) I have only had one end up DOA, and in the same way.
All buttons work, ball mech is dead. Whether damaged in shipping or broken before I will never know.

I see the same seller still has another 5000 avaialble, and claims "Item was tested and is working!"
Given how hard it is to get drivers around to test the, I call bullsh*t on their 'testing'.
Most sellers do not go further than claiming 'pulled from a working environment'

FLX is standard the FLX-A is the rebranded-4000 model. Your unit is a true 5000.

FWIW, none of my spacemice report any ball movement when using the orbSerial sketch, only button data.
Other than using linux and its drivers, I know of no other way to confirm the condition of the ball mech, but if there is no response on any axis in the windows joystick panel, I suspect that it is dead.
Spacemice -- Input Devices for a 3D World

vputz
Posts: 339
Joined: March 25 2006, 20:21 PM

### Re: New run of orbshields

Couple quick things:
p.s., for guys who have the older Orbotron, be careful when unpluggint the microusb cable. I pulled the microusb jack off the board...looks like a cold solder joint on the outer support pads..and it's the PITA to solder connector whose pins are underneath the shield
Aw, crap. I was worried that would happen to someone. If you got one of the "production" boards with four holes in a row behind the USB connector, those four holes should be (top to bottom, looking with the USB connector on the left): +5V, D-, D+, GND. So you could get a USB cable and just solder the wires right onto the board, which would be even more strain resistant.
Tehrasha wrote:FWIW, none of my spacemice report any ball movement when using the orbSerial sketch, only button data.
That's probably because it hasn't been sent the initialization string (the OrbSerialTest sketch doesn't send anything by default). Hmm. So one thing you could try is manually send it the init string. Right now the library sends the init string after 2 seconds. Maybe that's not enough! One thing you could try is to send it during the setup of OrbSerial, something like

Code: Select all

void setup() {
Serial.begin(9600);
Serial1.begin(9600);
Serial.println("This sketch simply takes input from the OrbShield's serial port");
Serial.println("and sends it out the serial port.  DIP switches should be set with");
Serial.println("switch 1 (nearest to the serial port) ON, switch 2 OFF");
Serial.println("Serial dump follows:\n");

delay(4000);
Serial1.print("\rm3\rpBB\rz\r");

}

So what this does is wait for four seconds (will feel VERY long but should undoubtedly give it time to be powered up) and send the 5000 init string. That SHOULD get the ball going. If I have time today I'll try it with one of mine.

kenyee
Posts: 51
Joined: April 02 2013, 8:33 AM

### Re: New run of orbshields

vputz wrote:If you got one of the "production" boards with four holes in a row behind the USB connector, those four holes should be (top to bottom, looking with the USB connector on the left): +5V, D-, D+, GND
....
So one thing you could try is manually send it the init string.
Luckily, it did happen to the "production" board...I'll have to look up the cable pinouts on a USB port but soldering to those holes is probably a much more viable long term solution.
The prototype board doesn't have these holes, so I'll probably blob some solder onto it and superglue it down for good measure. The USB port in this board version is being held on by basically two solder pads with not much solder because it's reflowed (the latest has a connector w/ mechanical legs that go through holes in the board so no worries w/ that one). For folks who do have the older one, I'd recommend superglue at least if they're not up to soldering...

I did add the init string so it does work.
Should I change the sketch and do another pull request on github or do you want to change this on the official copy?
FWIW, mine looks like this now:
Serial.println("switch 1 (nearest to the serial port) ON, switch 2 OFF");

delay(4000);
Serial1.print("\rm3\rpBB\rz\r");

Serial.println("Serial dump follows:\n");
Tehrasha wrote: FWIW, none of my spacemice report any ball movement when using the orbSerial sketch, only button data.
Other than using linux and its drivers
Could you point me at the drivers and any utility to test it?
I loaded the Spaceball 5000 sketch and the values being reported in the Windows joystick settings, make no sense so it seems like the ball may be damaged.
E.g., the x-y-z rotation returns variances of maybe 20 points +- from the neutral value of 512. So you can run the calibration utility to get it mostly work, but it's *very* sensitive as a result. I don't think I should need to run the calibration utility to get the full +-512 values if I crank the ball hard enough

vputz
Posts: 339
Joined: March 25 2006, 20:21 PM

### Re: New run of orbshields

Hmm... that sounds vaguely familiar to part of my hindbrain. Tell you what, I was overcome with projects yesterday (the "next" version prototype DOES work, I'm happy to say, time to order boards; again no functional difference from the ones that have gone out but the USB connector is much better and it's a little smaller) but I'll take a look today. It could be I've forgotten something about calibration for a 5k and they report a different range or something.

Historical note: the original orbshield waited until a button press to send the init string; I changed it to a 2-sec timer because people forgot to push a button, but I'm wondering if 2 sec is too short.

kenyee
Posts: 51
Joined: April 02 2013, 8:33 AM

### Re: New run of orbshields

vputz wrote:It could be I've forgotten something about calibration for a 5k and they report a different range or something
That's why I was hoping to try the Linux drivers to find out what whether it's your code that reads values or whether it really is broken.
But I was referring to the raw value display in the windows joy.cpl settings. Most axes see a variation of +- 20 instead of the full 512 range...

Another thing I'm surprised about is that the ball is easy to rotate around...certainly not as stiff as some of the Spaceball5000 comments I've read which seemed to indicate that the new Magellan design was a lot stiffer than a SpaceOrb...

vputz
Posts: 339
Joined: March 25 2006, 20:21 PM

### Re: New run of orbshields

Yep, it's not you. Looks like we have an Opportunity To Fix Something (sigh). I have the same result... the translation axes are very small and the rotation ones act like they're showing the wrong range.

And the reason it must have reminded me of something is I noticed this in the setup for the translator code:

Code: Select all

	case SpaceBall5000 :
set_chording( false );
set_axis_map( Axis_map_spaceball_4k );
set_polarity( Polarity_spaceball_5k );
set_axis_gain( 0, 40 );
set_axis_gain( 1, 40 );
set_axis_gain( 2, 40 );
send_joystick_reports = true;
break;

So clearly earlier it had been reporting small values there too.

Dang, thought this was going to be easy. Well, I guess there's some spelunking to do, but the good news is it should be fixable. It may even be a setup issue.

vputz
Posts: 339
Joined: March 25 2006, 20:21 PM

### Re: New run of orbshields

Kenyee:

Looks like it was severely over-gaining the axes. Here's what I found out through testing: at full range on my Magellan, I was getting -480 to 480 or thereabouts (instead of -512 to 512). Looking at the code, at one point I was shifting the first three axes right by two (dividing by four!) and then later trying to up the gain! Weird. So I pulled out the line that shifted those axes and dropped the gain a little bit... it helps some.

So things to try:

First, try replacing orbotron_translator.h in the libraries/orbotron directory with the one from the git repository (I'd attach it here, but I can't seem to attach any source files).

Second, try changing the sensitivity curve and see what you think... change the #include in BasicJoystick.ino to "#include <chart_1.h>" and the line in setup to "sensitivity_1_chart".

Let me know if any of these feel decent to you. There's probably more tweaking we could do but I didn't want to overdo it.

Tehrasha
Posts: 26
Joined: May 19 2013, 19:37 PM
Location: Midwest, USA
Contact:

### Re: New run of orbshields

kenyee wrote:Could you point me at the drivers and any utility to test it?
The official linux drivers from 3DConnexion still support the 5000.
(be sure to click the 'show archived software' checkbox)

Running that with --debug options will dump raw I/O packets in hex to the screen.
There should also be a simple text-value and rotate-cube utility with that package.

The opensource driver spacenavd currently does not support Magellan devices without patching.
You will need to download the 0.5 version and apply the Magellan patch to it before building it. That -should- work.
In that package there is (working from memory here) libspcnav/examples/simple directory where you can build a test prog to display XYZ/ABC and button values.

(there is a internet-drama story behind the lack of official Magellan support in spacenavd, but it should all be resolved soon.)
vputz wrote:Yep, it's not you. Looks like we have an Opportunity To Fix Something (sigh). I have the same result... the translation axes are very small and the rotation ones act like they're showing the wrong range.
Ok, that matches what I was seeing during my testing.
I thought it was just something screwy with the calibration at my end, and didnt look into it any further.
The longer delay before INIT might be all I need to allow my older spaceballs to work properly!
Spacemice -- Input Devices for a 3D World

vputz
Posts: 339
Joined: March 25 2006, 20:21 PM

### Re: New run of orbshields

Well, the parsing code for the 5000/Magellan comes right out of the magellan.c file of the Linux driver (it's a case of "why make it that hard?" since the protocol does some odd nibble crunching and packs a 16-bit integer into 4 encoded bytes, which at least is more straightforward than the SpaceOrb stuff). It seems to produce a range from -512 to +512, and you'd think that was it.

But instead I got values near -480 to +480, so I amplified them a bit. Part of the problem with a unified code base is that it assumes that all the devices need the "sensitivity curve" that the SpaceOrb did, but if I recall, the 5000 may have done that automatically; I'm not sure. So there's some massaging to be done. We'll get it.

kenyee
Posts: 51
Joined: April 02 2013, 8:33 AM

### Re: New run of orbshields

vputz wrote: First, try replacing orbotron_translator.h in the libraries/orbotron directory with the one from the git repository (I'd attach it here, but I can't seem to attach any source files).
...
Second, try changing the sensitivity curve and see what you think... change the #include in BasicJoystick.ino to "#include <chart_1.h>" and the line in setup to "sensitivity_1_chart".
Needed to do the combo to hit the full +=512 range...actually, x-axis only hits 960 when pushed to the right.
Without the chart_1 change, the x-axis only hits 50-860 and y-axis only gets down to 80. X-rotation only went to 960. z-rotation went down to 60. Slide went from 22-890.

So I'd say the chart_1 change is pretty much needed for the SpaceBall5000.

Where's the code that does chording? Looks like only 10 buttons are supported for the SpaceBall5000 when there could be 36 combos. And the 10 buttons are offset by 1 mod 10.

Still have to try the spacenavd code on Linux but I'll post back when I do. I'm curious what raw values it reads out as well and how it handles calibration.

Tehrasha
Posts: 26
Joined: May 19 2013, 19:37 PM
Location: Midwest, USA
Contact:

### Re: New run of orbshields

kenyee wrote: Where's the code that does chording? Looks like only 10 buttons are supported for the SpaceBall5000 when there could be 36 combos. And the 10 buttons are offset by 1 mod 10.
While chords may be possible with the 5000, I dont know if it is exactly practical.

Are you able to get all 10 buttons to work?
My testing with a 5000 had the ABC buttons map the same as 123.
Spacemice -- Input Devices for a 3D World