This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Mount Launchpad USB MSC device on OSX

Other Parts Discussed in Thread: LM3S3748

I've developed a fairly simple USB mass storage application on my Stellaris Launchpad LM4F120 board, it's based on the lm3s3748 example so it's pretty straight forward.

Everything works great on Windows, as soon as you plug it in Windows recognises the device just like a USB drive and you can access the files as you'd expect. The actual files are stored on a 2gb FAT16 SD card attached to the board.

Unfortunately when I connect it to my MacBook running OSX Mountain Lion it doesn't recognise it at all.

It doesn't show under the "Disk Utility" application, and running diskutil list doesn't return it.

If I run sudo dmesg I can see a number of entries which I think are related:

=========

USBF: 25147.447 AppleUSBEHCI[0xffffff801796d000]::Found a transaction past the completion deadline on bus 0xfd, timing out! (Addr: 4, EP: 1)
IOUSBMassStorageClass[0xffffff8026ce0400]: The device is still unresponsive after 6 consecutive USB Device Resets; it will be terminated.
[0xffffff8026ce0400](6)/(5) Device not responding

=========

If I use "USB Prober" I can definitely see it:

========

Full Speed device @ 4 (0xFD120000): ............................................. Composite device: "Mass Storage Device"
Port Information: 0x1018
Not Captive
External Device
Connected
Enabled
Number Of Endpoints (includes EP0):
Total Endpoints for Configuration 1 (current): 3
Device Descriptor
Descriptor Version Number: 0x0110
Device Class: 0 (Composite)
Device Subclass: 0
Device Protocol: 0
Device MaxPacketSize: 64
Device VendorID/ProductID: 0x1CBE/0x0005 (Texas Instruments - Stellaris)
Device Version Number: 0x0100
Number of Configurations: 1
Manufacturer String: 1 "Texas Instruments"
Product String: 2 "Mass Storage Device"
Serial Number String: 3 "12345678"
Configuration Descriptor (current config)
Length (and contents): 32
Raw Descriptor (hex) 0000: 09 02 20 00 01 01 00 C0 FA 09 04 00 00 02 08 06
Raw Descriptor (hex) 0010: 50 00 07 05 81 02 40 00 00 07 05 01 02 40 00 00
Unknown Descriptor 0020:
Number of Interfaces: 1
Configuration Value: 1
Attributes: 0xC0 (self-powered)
MaxPower: 500 ma
Interface #0 - Mass Storage/SCSI
Alternate Setting 0
Number of Endpoints 2
Interface Class: 8 (Mass Storage)
Interface Subclass; 6 (SCSI)
Interface Protocol: 80
Endpoint 0x81 - Bulk Input
Address: 0x81 (IN)
Attributes: 0x02 (Bulk no synchronization data endpoint)
Max Packet Size: 64
Polling Interval: 0 ms
Endpoint 0x01 - Bulk Output
Address: 0x01 (OUT)
Attributes: 0x02 (Bulk no synchronization data endpoint)
Max Packet Size: 64
Polling Interval: 0 ms

========

I have not really had any problems with developing for the Launchpad on OSX before,  debugging via OpenOCD works fine and I've been using ARM-GCC.

I was hoping someone might be able to point me in the right direction, I assume the solution might also relate to a Linux environment so hopefully someone has come across this before.

  • Hi,

    I am not an expert in OSX but from what I know, it seems you need a codeless kext dictionary file in XML format - this is to inform the operating system what driver should be run (since the driver already exist). How to write such thing - there are some docs on Apple site (Mass Storage Device Driver Programming Guide: Mass Storage Overview)

    Petrei 

  • Well I gave that a shot but it didn't seem to make a difference, here is a copy of my .plist file: http://pastebin.com/kBd9sUKw

    I also tried getting a USB drive which I know works and copying the device details, but that didn't seem to work either.

  • Hi,

    As I said, no too much experience with drivers on OSX - but two questions:

    a) I did not seen in any .pinfo file names like ${PRODUCT_NAME} - I have seen only numbers and masks (and this is recommended in documentation).

    b) You declare subclass as 0 - but the documentation said this:

    Petrei

  • Check the descriptor and make sure the length and content is correct.  Mac OS X ACTUALLY reads the descriptors (Windows does not).

    Configuration Descriptor (current config) 
    Length (and contents): 32
    Raw Descriptor (hex) 0000: 09 02 20 00 01 01 00 C0 FA 09 04 00 00 02 08 06 
    Raw Descriptor (hex) 0010: 50 00 07 05 81 02 40 00 00 07 05 01 02 40 00 00 
    Unknown Descriptor 0020:
  • Hi Tim,

    I am doing the same project as your on Windows. Is it possible to send me your code ?

    That would be great...

    Here is my email: juba07@hotmail.com

    Thanks,

    Jack