• Not Answered

USB CDCv1.19 (SLAC285A) and Mac OS X

Hello,

I am trying to use USBCDC_Example3 on Mac OS X

and firmware works fine.  However I have to use IOKit interface

on host side to communicate MSP430, and I do not like it.

I would like to use standard unix programing through device

file (/dev/*).

 

Is there any way that Mac OS X recognize this firmware as usbmodem

and automatically create /dev/cu.usbmodem001.

(USB dongle comes with eZ430-Chronos can be recognized in this way.)

 

How about linux?  Does linux recognize this firmware as usbmodem?

 

I am using F5529 Rev. A on MSP-TSP430PN80USB.

 

Thanks

10 Replies

  • I've been using Java's RXTX library with /dev/tty.usbmodem001 with no trouble to interface with the wireless USB dongle.

  • In reply to Eric Allen:

    Thank for the comment, Eric.

    Yes.  I do not have any problem with CC1111 USB dongle and I would like to communicate

    with MSP430F5529 in the same manner .  

     

     

     

     

     

  • In reply to Shigenobu Kimura44566:

    When I plug MSP430F5529 into Mac,  kernel gives following message.

    3/21/10 9:50:38 PM kernel 0        0 AppleUSBCDCACMControl: start - Failed to find the CDC driver

    I guess Mac OS X is actually trying to recognize but for some reason it fails.

     

     

  • In reply to Shigenobu Kimura44566:

    I know basically nothing about McOS but at least with WinXP to run USB CDC, you need to INSTALL an .inf file.

    Is the same true on MacOS?

    Much good startup info (app notes, code, USB stacks, etc) is buried in the .zip files:

    http://www.ti.com/litv/zip/slac293b

    http://www.ti.com/litv/zip/slac285a

    from the F5529 page:

    http://focus.ti.com/docs/prod/folders/print/msp430f5529.html

     

  • In reply to Joe%20G.:

    Joe, thanks for the comment.  

    It turned out the device descriptor that sla285a uses does not meet USB CDC specification version 1.1.

    USB descriptor of SLAC285A  defines only one interface which is Communication Class interface,

    however 3.6.2 of http://www.usb.org/developers/devclass_docs/usbcdc11.pdf says,

    > With an Abstract Control Model, the USB device understands standard V.25ter (AT) commands.

    > The device contains a Datapump and micro-controller that handles the AT commands and relay controls.

    > The device uses both a Data Class interface and a Communication Class interface. 

                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    I think we need a Data Class interface.

    I did a quick hack to USB_Common/descriptor.c to include Data Class interface and

    now Mac OS X recognizes F5529 as a USB modem, although this hack  also does not

    meet USB specification because I had to remove Call Management Functional Descriptor

    and Abstract Control Model Functional Descriptor (due to the limitation of SLAC285A, I think)

     

     

     

     

  • In reply to Shigenobu Kimura44566:

    Hi Kimura:

    I also want to use the MSP430 F5528 with a MAC. Does that mean no drivers are required when we use a Mac ? Also it would be great if you can point out what what made it work.  My end goal is to get data into lab view / Matlab

    Thanks

  • In reply to A46810:

    Yes, you can use USB CDC device with MacOSX's standard device driver.

    All I did is change device descriptor table of F5529 example, so that MacOSX can

    recognize the device as USB CDC device.  Although this change somewhat works

    fine for me,  but breaks the CDC spec.   So you do not want to use this change as is.

     

    I haven't touched MSP430 since March and I think TI already released new version

    of the example,  so please check the latest version whether it works or not.

     hopefully the new version had fixed this problem already.

     

    Anyway I have put what I have at

    http://homepage.mac.com/skimu/msp430/f5529.tgz

    ex1.ihex is LED ON and LED OFF example, ex3.ihex is echo back example.

    When you could successfully write one of these program into F5529 board

    (TS430PN80USB), /dev/usbmodemXXX would show up.

    You can interact with F5529 through this device node with usual UNIX manner.

    mon.c is an example for host side (MacOSX) program to do so.

     

    -- Shigenobu

     

     

     

     

     

  • In reply to Shigenobu Kimura44566:

    Hi Shigenobu,

    > Although this change somewhat works fine for me,  but breaks the CDC spec.

    Your mods on the configuration descriptor set is fine. It follows the CDC spec correctly.

    The TI CDC example (slac285a) applies just single interface for CDC. Rather, this configuration is out of CDC spec. It's the reason why the standard device driver on MacOSX doesn't recognize the device as CDC. Windows and Linux allow this out-of-spec configuration, but MacOSX follows the CDC spec strictly.

    I wonder why TI have distributed such an out-of-spec example like a hobbyist. It doesn't fit to a decent manufacturer. TI should revise it immediately.

    Tsuneo

  • In reply to Shigenobu Kimura44566:

    Hi Kimura:

    I am not primarily a MAC user and want to build a file in Windows platform and want to be able to migrate to any platform whether a mac or a PC. I am building my files using IAR bench in windows and taking my code to MAC when I connect I get the window asking me to configure the modem. But when I try to use the mon application through the terminal it does not work. Any suggestions are things you thing I may be doing wrong ?

  • In reply to A46810:

    > when I connect I get the window asking me to configure the modem.

    Did you see "A new network interface has been detected" dialog on the Mac?
    And then, did you push "cancel" button on the dialog?
    If you would push "Network Preferences..." button on the dialog, OS grabs the device.

    If you don't want to see this dialog any more for your device, follow to this Tech note.

    Technical Q&A QA1667
    "Suppressing the Network Configuration Dialog"
    http://developer.apple.com/library/mac/#qa/qa2009/qa1667.html

    Tsuneo