RC Servo controller doesn't work through a USB hub

I just bought a 6-channel RC servo controller. It works fine plugged directly into the computer, but doesn’t work through an external USB hub. It gets an error 0x1f all the time. Any ideas?

Mike

Michael Wilt

Hello,

The only way you should be getting error 0x1f on the Micro Maestro is if your controller is connected to something on its TTL serial port. So, please tell us exactly what else is connected to it and how it is connected, and post your configuration file.

(Without knowing these details, I would guess that you are connecting to a serial device with a low voltage or without a ground connection, and the hub supplies a different voltage than your computer, causing the connection to fail.)

-Paul

Only servo power, one servo, and the USB are connected. When I plug the USB cable into the hub I get this error, directly into the PC it works fine. I am running Maestro Control Center for this experiment, firmware is the latest 1.01. Here is the whole error dialog message:

Error loading settings from the device. There was an error getting parameter PARAMETER_SERIAL_MINI_SSC_OFFSET from the device. Control transfer failed. Error code 0x1f.

All configuration settings are pure vanilla- I just received this and haven’t had a chance to change anything.

The voltage on the servo board is 4.2 when the hub had only USB power, 4.8 when the hub has external power, and 4.8 when plugged directly into the PC. I thought the lower voltage when the hub is on USB power might be the problem but it doesn’t seem to matter.

Mike

Ah, thanks for posting the full error message this time! I thought you were talking about Maestro error 0x1f. A Microsoft error 0x1f is a totally different thing.

Does your hub otherwise work perfectly fine, as far as you know? For example, does it work with all of your other devices?

Can you try it without servo power or the servos connected?

-Paul

This hub works fine with a digital camera. I get the same issue whether or not the servo or servo power is connected. I just tried the same experiment with another board (I bought two) and the result is the same. This one has never been connected to anything but USB.

Mike

I just tried a different hub with the same result, so I think the problem should be easy to reproduce. If you have seen this board work ok through an external hub please post the specific make and model. I may be able to get what you have to work around this for now. My application requires going through one external hub to make the distance from the computer to the servo.

Mike

whenever I use non streaming devices on a USB2 hub… all works great… but when I use something that is constantly processing data like a webcam or the like, you have to imagine that a hub ‘shares’ its time among the devices when it mux’s them together to speak to the PC… I tried my Maestro too via hub on my netbook, I constantly got breaks of unresponsiveness and sometimes full drops… This is the data sharing properties of the hub, not the Maestro… better to stay with a single connection direct to the PC.

In general, USB hubs work fine with USB devices so I don’t believe TJFitz is saying.

I just tested the Micro Maestro 6-Channel servo controller, firmware version 1.01, on a USB hub and it worked fine. I was able to use the control center, reconfigure the device, and even upgrade the firmware using this hub. The hub doesn’t have a model number on it, but it does have a sticker that says “PrimeLine China”. It’s the kind of hub that you can order and have your company name printed on it. This one is gray/silver colored and says “Duff & Phelps”. The top of the hub’s case (besides the printed company name) looks identical to this picture from PrimeLine’s website, and it looks pretty similar to the black hub found here. I’m not sure how you would go about buying just one of these, sorry!

mikewilt and TJFitz, could you please tell me the make and model number of the hubs you have tried that don’t work well with the Maestro, so that we might get them and reproduce the problem?

–David

The two I have tried are:
D-LINK DUB-H7 (7 ports)
GigaWare USB 2.0 Extension Cable (1 port active extension)

I have only tried through Maestro Control Center so I can’t rule out and application-specific issue. It may simply poll too aggressively for this connection and get tangled up.

Mike

I was able to get over this hurdle by running in USB command mode and sending commands to the COM port. The one-way outbound communication seems to work ok through the hub. I have not tried reading data yet, which is where Maestro Control Center seems to have a problem.

Mike

mikewilt and TJFitz,

I received a the DLink hub mentioned above this morning. I was able to reproduce the problem you were having. I’m not sure what’s causing the problem, but I think I have a temporary solution for you: try replacing the UsbWrapper.dll file that came with your Maestro Control Center with the new one attached to this post.

The only difference is there is an added 10ms delay before and after every USB Control transfer; so the Maestro Control Center will be sluggish but it will probably work (it worked on my computer; I was able to control a Micro Maestro 6 via a DLink hub).

–David
UsbWrapper_with_delay.zip (8.46 KB)

I am also having an issue with two separate USB hubs. I have a micro maestro that works just fine when plugged directly into the computer, running Windows XP. With the hub, the maestro seems to start as normal: the motor turns a bit the second it receives power from the USB, the maestro control center lists my device #00004996, and the connection is stable. The moment I send a command to the servo, either through the maestro control center or through the serial protocol, the maestro disconnects. With the control center the most I can do is click the enable button to enable the servo channel, at which point it goes to the midpoint of the target range (happens to be 1232 for my configuration), and no further command can be sent. With the serial protocol I can tell the servo to go to any target number, but once the servo gets there, the maestro disconnects. Is this what everyone else was seeing? Also, I can use the TTL port without it disconnecting, even if the maestro command port disconnects the TTL port keeps running.

Replacing the standard dll file with the delayed dll file has not worked either (though you are right that the control center was quite sluggish with the delay). I don’t know the make and model of the first hub because I took the case apart and am using the PCB. The second USB hub that I tried is a CablesToGo USB2.0 4port Hub. Have you, mikewilt or Pololu, experimented any more with controlling maestro through USB hubs.

Hello, ahihmc.

Your problem sounds different from what we have experienced. Since it happens as soon as you try to send a servo command it’s likely to be a power issue. Could you try disconnecting the servos from the Maestro and see if the problem remains?

Also, how did you wire the Maestro and everything connected to it? How is everything powered? In particular, are you supplying power to the Maestro’s VIN pin? (Supplying power to the VIN pin would actually make things worse if it is an issue with your power supply.)

–David

I actually resolved the issue shortly before you responded. The issue was a power problem. I am using the computer’s USB for power to both the maestro and the motor since both use under 500mA of combined current. If I use the hub’s external power supply, which sources 2A, the maestro and the motor return to normal operation. It seems as though hubs must not use a general power plane from which all ports can draw power, that rather they ration off power to each port even if the ports aren’t being used.

Sorry for the false hub communication alarm. :slight_smile: