Pololu Micro Maestro 6 Channels - USBProblem on Ubuntu 12.04

Hi all,

I just acquired a pololu micro maestro 6 channels and I am trying to access it from my linux machine (Ubuntu 12.04 64b)

I copied the 99-pololu.rules to /etc/udev/rules.d and installed the required libs (libusb mono…).

My problem is that I can only connect once to the micro. The first time I connect I see in dmesg:

[  115.461481] usb 4-2: new full-speed USB device number 3 using uhci_hcd
[  115.763167] cdc_acm 4-2:1.0: This device cannot do calls on its own. It is not a modem.
[  115.763184] cdc_acm 4-2:1.0: ttyACM0: USB ACM device
[  115.767168] cdc_acm 4-2:1.2: This device cannot do calls on its own. It is not a modem.
[  115.767188] cdc_acm 4-2:1.2: ttyACM1: USB ACM device
[  115.769434] usbcore: registered new interface driver cdc_acm
[  115.769438] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

And the LEDs remain on.

I opened the Maestro control center and at the beggining it says there is an I/O problem and I can’t do anything.

If then I disconnect the micro and connect again, the green and orange LEDs blink 2-3 times and go off. dmesg says:

[ 2627.471313] usb 4-2: new full-speed USB device number 36 using uhci_hcd
[ 2627.591066] usb 4-2: device descriptor read/64, error 8
[ 2627.814656] usb 4-2: device descriptor read/64, error 8
[ 2628.030382] usb 4-2: new full-speed USB device number 37 using uhci_hcd
[ 2628.150127] usb 4-2: device descriptor read/64, error 8
[ 2628.373769] usb 4-2: device descriptor read/64, error 8
[ 2628.589427] usb 4-2: new full-speed USB device number 38 using uhci_hcd
[ 2628.619896] usb 4-2: device descriptor read/8, error -61
[ 2628.747668] usb 4-2: device descriptor read/8, error -61
[ 2628.960790] usb 4-2: new full-speed USB device number 39 using uhci_hcd
[ 2628.991261] usb 4-2: device descriptor read/8, error -61
[ 2629.119033] usb 4-2: device descriptor read/8, error -61
[ 2629.220319] hub 4-0:1.0: unable to enumerate USB device on port 2

I have to shutdown and unplug the computer (only reboot doesn’t work) to go back to the behaviour at the beginning.

Could you help me? Is a problem of the USB connection?

Thank you

–Roberto

Some extra info. The first time I connect it (the USB connection seems to be established, one green LED is running, one orange LED is blinking) I can’t reach the device with an error of “There was an error while starting up. I/O error”.

I tried to use some of the examples of the SDK an all fail with the error:

Unhandled Exception: System.Exception: Error getting serial number string from device (pid=89, vid=1ffb). ---> System.Exception: I/O error.
  at Pololu.UsbWrapper.LibUsb.throwIfError (Int32 code) [0x00000] in <filename unknown>:0 
  at Pololu.UsbWrapper.LibUsb.throwIfError (Int32 code, System.String message) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at Pololu.UsbWrapper.LibUsb.throwIfError (Int32 code, System.String message) [0x00000] in <filename unknown>:0 
  at Pololu.UsbWrapper.LibUsb.getSerialNumber (IntPtr device_handle) [0x00000] in <filename unknown>:0 
  at Pololu.UsbWrapper.UsbDevice.getDeviceList (UInt16 vendorId, System.UInt16[] productIdArray) [0x00000] in <filename unknown>:0 
  at Pololu.Usc.Usc.getConnectedDevices () [0x00000] in <filename unknown>:0 
  at Pololu.Usc.UscCmd.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.Exception: Error getting serial number string from device (pid=89, vid=1ffb). ---> System.Exception: I/O error.
  at Pololu.UsbWrapper.LibUsb.throwIfError (Int32 code) [0x00000] in <filename unknown>:0 
  at Pololu.UsbWrapper.LibUsb.throwIfError (Int32 code, System.String message) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at Pololu.UsbWrapper.LibUsb.throwIfError (Int32 code, System.String message) [0x00000] in <filename unknown>:0 
  at Pololu.UsbWrapper.LibUsb.getSerialNumber (IntPtr device_handle) [0x00000] in <filename unknown>:0 
  at Pololu.UsbWrapper.UsbDevice.getDeviceList (UInt16 vendorId, System.UInt16[] productIdArray) [0x00000] in <filename unknown>:0 
  at Pololu.Usc.Usc.getConnectedDevices () [0x00000] in <filename unknown>:0 
  at Pololu.Usc.UscCmd.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 

After a lsusb -v I get:

Bus 004 Device 002: ID 1ffb:0089  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0         8
  idVendor           0x1ffb 
  idProduct          0x0089 
  bcdDevice            1.01
  iManufacturer           1 
  iProduct                2 
  iSerial                 5 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          150
    bNumInterfaces          5
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass          2 Communications
      bFunctionSubClass       2 Abstract (modem)
      bFunctionProtocol       1 AT-commands (v.25ter)
      iFunction               3 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      2 Abstract (modem)
      bInterfaceProtocol      1 AT-commands (v.25ter)
      iInterface              0 
      CDC Header:
        bcdCDC               1.20
      CDC ACM:
        bmCapabilities       0x02
          line coding and serial state
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1 
      CDC Call Management:
        bmCapabilities       0x00
        bDataInterface          1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x000a  1x 10 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               0
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         2
      bInterfaceCount         2
      bFunctionClass          2 Communications
      bFunctionSubClass       2 Abstract (modem)
      bFunctionProtocol       1 AT-commands (v.25ter)
      iFunction               4 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      2 Abstract (modem)
      bInterfaceProtocol      1 AT-commands (v.25ter)
      iInterface              0 
      CDC Header:
        bcdCDC               1.20
      CDC ACM:
        bmCapabilities       0x02
          line coding and serial state
      CDC Union:
        bMasterInterface        2
        bSlaveInterface         3 
      CDC Call Management:
        bmCapabilities       0x00
        bDataInterface          3
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x000a  1x 10 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      4 
      bInterfaceProtocol      1 
      iInterface              2 
Device Status:     0x0000
  (Bus Powered)

I hope someone has an idea…

Thank you

Roberto

Hello, Roberto.

I am sorry you are having trouble with the Micro Maestro. It seems like your computer is having trouble communicating with the Maestro at a pretty low level. Could you try using a different USB cable, if possible? It would also be helpful to try different USB ports and a different computer if possible.

–David

Hi David,

I tried with a different cable, no luck.

But yes, I agree it must be a low level issue.

I got the Maestro Control Center to run once, at the beginning. But as soon as I close the application, if I open again the device cannot be found. The control the Maestro with my own program (basically the cross-platform c example adapted to Linux/ttyACM0) doesn’t work, it stops when it has to read from the port.

Thank you

I am sorry you are still having trouble. Do you have another computer available that you could try the Maestro on?

–David

Hi,

well, I have some other computers but they are the same model. I could have to install a couple of things on them to try. Any other USB device work without problems (kinects, usb hdd, memory sticks, Iphone, Ipod…).

I tried in windows. I installed everything and started Maestro Control Center. When I connect the device and select its serial number (#0051783) in “Connected to” I get the error:

“Error applying settings to the form. Value of ‘20’ is not valid for ‘Value’. ‘Value’ should be between ‘Minimum’ and ‘Maximum’.
Parameter name: Value”

And I can’t select the device.

Once I disconnect and connect again, the same behaviour as in Linux happens, so some LEDs blinking and then off and a message from Windows: “USB Device Not Recognized. One of the USB devices attached to this computer has malfunctioned, and Windows does not recognize it. For assistance in solving the problem, click this message”. If I go into the message I see an “Unknown Device”. If I click on it I see in the Device status: “Windows has stopped this device because it has reported problems. (Code 43)”

So it seems to not be a OS problem, since it is similar in Windows and Linux.

Thank you for your help!

Hi again,
I just tried in another computer (a laptop, different hardware) running linux. Exactly the same behaviour. Some LEDs blinking, then all off, dmesg showing what I posted before: “usb 6-1: device descriptor read/64, error 8 …”

If it is not the machine and it is not the OS and it is not the cable…

Thanks!

–Roberto

I’m sorry for being so active on this, but I really need to get the Maestro to work :slight_smile:
After a while connected in the “good way” under Linux (the first time I connect it, when the serial devices are well created and the green LED remain on, sometimes I can even use it to control servos), even without using it, a red LED gets on and remains on while the yellow blinks. Checking the manual it says: “Yellow blinking, red steady: A firmware error resulted in a soft reset. This should never occur during normal usage.”

Could I solve it?

–Roberto

Unfortunately, it sounds like something is wrong with the Maestro. Please email us about this and include your order information. I have one more thing you can try (reloading the firmware), but if that does not work then I’ll see what we can do for replacing the Maestro.

–David