I recently acquired a TI LaunchPad[1] and want to use FreeBSD as my
development enviroment (for anyone else who is interested in this, at
some stage I intend to post my experiences with the various ports to
-ports or feel free to contact me off-list). It provides a FET430UIF
USB interface to the host computer and some googling shows that this
is a Communication Device Class (CDC), Abstract Control Model (ACM)
sub-class which is supported in Linux via the cdc_acm driver.
On FreeBSD 8.1, umodem(4) reports:
ugen0.2: Texas Instruments at usbus0
umodem0: MSP430 Application UART on usbus0
umodem0: data interface 0, has no CM over data, has no break
and creates /dev/ttyU0 (and friends) but mspdebug reports that it
cannot access the UIF (so it is presumably talking to the device
UART, rather than the control interface).
I have tried adding the device id to usbdevs and
{USB_VPI(USB_VENDOR_TI, USB_PRODUCT_TI_FET430UIF, 1)},
to sys/dev/usb/serial/umodem.c:umodem_devs[] and this changes the
probe to:
ugen4.2: Texas Instruments at usbus4
umodem0: MSP430 Application UART on usbus4
umodem0: data interface 0, has no CM over data, has no break
umodem1: MSP430 Debug-Interface on usbus4
umodem1: Missing descriptor. Assuming data interface is next.
umodem1: data interface 2, has CM over data, has no break
umodem1: no data interface
device_attach: umodem1 attach returned 6
umodem1: MSP430 Debug-Interface on usbus4
umodem1: Missing descriptor. Assuming data interface is next.
umodem1: data interface 2, has CM over data, has no break
umodem1: no data interface
device_attach: umodem1 attach returned 6
but there's no change to the accessibility.
Looking at the Linux driver sources, there are no quirks for this on
Linux. How do I go about getting umodem(4) (or some other driver) to
detect the debug interfaces on FreeBSD?
The output from usbconfig dump_device_desc is:
ugen4.2: Texas Instruments MSP-FET430UIF Texas Instruments at usbus4, cfg=0
md=HOST spd=FULL (12Mbps) pwr=ON
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0110
bDeviceClass = 0x
bDeviceSubClass = 0x
bDeviceProtocol = 0x
bMaxPacketSize0 = 0x0008
idVendor = 0x0451
idProduct = 0xf432
bcdDevice = 0x0100
iManufacturer = 0x0001 Texas Instruments
iProduct = 0x0002 Texas Instruments MSP-FET430UIF
iSerialNumber = 0x0003 1EFF426C50172852
bNumConfigurations = 0x0001
The output from usbconfig dump_curr_config_desc is:
ugen4.2: Texas Instruments MSP-FET430UIF Texas Instruments at usbus4, cfg=0
md=HOST spd=FULL (12Mbps) pwr=ON
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x0055
bNumInterfaces = 0x0002
bConfigurationValue = 0x0001
iConfiguration = 0x no string
bmAttributes = 0x0080
bMaxPower = 0x0032
Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x
bAlternateSetting = 0x
bNumEndpoints = 0x0003
bInterfaceClass = 0x0002
bInterfaceSubClass = 0x0002
bInterfaceProtocol = 0x0001
iInterface = 0x0005 MSP430 Application UART
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x00
RAW dump:
0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x01
RAW dump:
0x00 | 0x05, 0x24, 0x01, 0x00, 0x00
Additional Descriptor
bLength = 0x04
bDescriptorType = 0x24
bDescriptorSubType = 0x02
RAW dump:
0x00 | 0x04, 0x24, 0x02, 0x02
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0082 IN
bmAttributes = 0x0003 INTERRUPT
wMaxPacketSize = 0x0040
bInterval = 0x00ff
bRefresh = 0x
bSynchAddress = 0x
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0003 OUT
bmAttributes = 0x0002 BULK
wMaxPacketSize = 0x0040
bInterval = 0x00ff
bRefresh = 0x
bSynchAddress = 0x
Endpoint 2
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 IN
bmAttributes = 0x0002 BULK
wMaxPacketSize = 0x0040
bInterval = 0x00ff
bRefresh = 0x
bSynchAddress = 0x
Interface 1
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x
bNumEndpoints = 0x0002
bInterfaceClass = 0x0003
bInterfaceSubClass = 0x
bInterfaceProtocol = 0x
iInterface = 0x0004 MSP430 Debug-Interface
Additional Descriptor
bLength = 0x09
bDescriptorType = 0x21
bDescriptorSubType = 0x01
RAW dump:
0x00 | 0x09, 0x21, 0x01, 0x01, 0x00,