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.

How do I use Tiva Launchpad TM4C123GXL as a host for a HID gamepad

Other Parts Discussed in Thread: EK-TM4C123GXL, TM4C123GH6PM, EK-TM4C1294XL, EK-TM4C129EXL, TM4C123GH6PGE, LMFLASHPROGRAMMER

I have read a few examples for HID devices with the launch pad but never a complete or well explained example of code. I wish to connect a USB HID gamepad to the Launchpad and read the output from the controller.

  • Hello Matthew

    The existing usblib library does not support TM4C as a Host for HID Gamepad but as a Device. You would need to write the library file for USB HID Host.
  • I was under the impression from the documentation that it could act as a host to HID devices such as mice or keyboards with some minor hardware adjustments on the Launchpad
  • Hello Matthew

    Yes, it will act as Host for HID devices like mouse and keyboard only. But not for a GamePad.

    Also the hardwrae changes that need to be made require a USB power controller to control VBUS to the device and protection mechanism like Over Current protection.
  • Well if you have any other suggestions for writing my own library to do it then that'd be great.
  • Hello Matthew

    There has not been much done other than what is present in the usb library as most customer applications fit in the framework (Bulk Device Class being the most common). I would suggest starting the USB Host HID library for Mouse and modifying it for GamePad.
  • Welp, I am still clueless as to how in goodness name the mouse library works. I can't even figure out how the TivaWare example outputs the mouses location. I get that it designed to use a graphical display, but i have no idea where its pulling this info from. It's all kinda confusing.
  • okay i get it more now. however I'm having trouble gettin the mouse to work with the tiva. the mouse flicks on and then off when i turn on the board. any ideas or suggestions
  • Hello Matthew

    And what is the mouse status reading in the application code. There is a case statement which has a variable that tracks the state of the mouse as UNKNOWN, CONNECTED, DISCONNECTED, etc.

    You would need debug the code. The standard mouse example works with the Launchpad and DevKit.
  • Well its stuck in the fault interrupt loop, right now the only modification i have done is placing the 0 ohm resistors r25 and r29 on the launchpad. I also removed all of the code related to interacting with the display since i don't have it and the board would get hung up over the device not existing.

    specifically this line :        ROM_GPIOPinConfigure(GPIO_PG4_USB0EPEN);

  • Hello Matthew

    Did you enable the clock to Port G?
  • i believe so because to these lines i call:
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
    ROM_GPIOPinConfigure(GPIO_PG4_USB0EPEN);
    which should start the clock. should there be a delay or something?

    I'm using the tivaware example code in the dk-tm4c123g, which i would assume works for my tm4c123gxl. or am i incorrect on this matter?

  • Hello Mathew

    The EK-TM4C123GXL does not have the host function. You would need to add the USB power switch and connect the control signals from the micro to the power switch. Also PB0 and PB1 are needed to be connected as well for full host/OTG function.
  • Thank you very much, I should of been more specific about the model number before. It's a little frustrating that the two boards have the same 'name'. Disappointed that there is no host example library then for this device. Oh well back to slaving away over a hot keyboard.
  • Hello Matthew

    Correction: There is no host example for the EK-TM4C123GXL as it does not have the Power Switch for USB. That can be added by you. The device supports USB Host, Device and OTG mode.
  • So write my own program from scratch it is.
  • Hello Matthew

    No. First you need to make the circuit. Then you may re-use the code from the DK-TM4C123G
  • re-using the code is a-lot easier said then done in my opinion.
  • Hello Matthew,

    Re-using without support is never easy, and that is where the E2E forum plays a vital role. I have a board (self designed with the TM4C123GH6PM) that I could help you out with the code porting if you run into issues.
  • I would really like that help. I just would like to get to the point where I can request the HID reports or use the event handler to get input updates. I haven't used libraries much with code composer as usually i have just wrote my own code so it's a learning experience for me.

  • Hello Matthew

    To implement the HID controller, you would still need to add the external components for USB VBUS sourcing on the LaunchPad for EK-TM4C123GXL. Alternatively, you can use EK-TM4C1294XL which has the same already and with software example.
  • The external Vbus is not an issue at all for the application
  • Hello Matthew

    Why not? The VBUS powers the external device and if there is an over current, allows for a shutdown of the current source path preventing device damage.
  • I have designed an external power unit for the board and USB that is regulated with protection
  • Hello Matthew

    In that case you can begin the process of updating the USB Host Library of Keyboard or Mice for Gamepad. Then we can see how to integrate it with the application code.
  • Which board library example do you recommend
  • Hello Matthew

    As I mentioned earlier, there is no direct example for TM4C in host mode for a gamepad. It has to be created. Also what needs to be created is the library file under usblib/host for GamePad. There is right now mouse and keyboard files, which we will copy and modify for gamepad.
  • Okay so far I've read over usbhhidmouse.c file and was trying to find the place where the usage ID is checked. However a larger priority to me right now is converting the ek-tm4c129exl, or ek-tm4c1294xl demo mouse host codes just to work for ek-tm4c123gxl by reconfiguring the ports and clock speeds (full 80Mhz on the 123gxl).
  • Hello Matthew

    The first thing you would need to change is the SysCtlClockFreqSet API to SysCtlClockSet. It would be simpler taking the example from DK-TM4C123G EVM.
  • SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); 

    is what I've replaced it with now   i think the DKTM4C123G is a frustrating example to work with as I have to deal with the gui system. are you certain that its easier than examples than the others boards i looked at. Im just really frustrated working with a device with an unsupported functionality it boasted to have.

    Also having difficulty getting the pinout file to work. I've tried switching target to my device.

  • Hello Matthew,

    I would disagree. Unsupported is different from non-implemented feature. The USBlibrary is a framework for development. There are multiple device classes that are not implemented in the USBlib. It does not mean that it is unsupported. Since there is not a ready to use example, it is what is frustrating. We can add an example like what you have mentioned, but it takes time for validating the functions involved and not every board can have the same flavor of the example.

    Let us look at issues one by one.

    1. What is the issue with the pinout file?
    2. What changes have you made for the mouse example from DK-TM4C123G for EK-TM4C123GXL launchpad.
  • pinout is fine now that i moved to dktm4c123G example, no i have error 10263 About the FLASH and SRAM memory range already being specified, and another error relating memory range overlaps.
  • Hello Matthew

    The cause is that there are two cmd files in the project folder which declare the same FLASH and SRAM memory range. If they are identical then remove one of them. If they are not then keep the one which maps the FLASH and SRAM correctly as per the TM4C123GH6PM and remove the other one.
  • this is an interesting error

    Can't find a source file at "C:/Jenkins/workspace/TivaWare-Git-Release/DriverLib/build/DriverLib.test/usblib/host/usbhostenum.c"
    Locate the file or edit the source lookup path to include its location.

    Thats quite unique
  • Hello Matthew

    The usblib.lib available in the TivaWare is built on a build machine and hence it cannot find the path on your machine. There are two ways to get around it.

    1. Map the path to the usbhostenum.c file in your TivaWare installation
    2. Import usblib as a project into your CCS workspace, compile it and use the usblib.lib from the CCS workspace into your project.

    I would prefer the 2nd one as it will be anyways used when creating new library files for GamePad HID.
  • suggestions for setting up the uart correctly so i can view it in the console?
  • Hello Matthew

    I believe the examples in EK-TM4C123GXL show how to setup UART and the IO's for UART. Make sure to add uartstdio.c for the UART configuration function of UARTStdioConfig and to use UARTprintf for printing.

    When setting up the console make sure that the Windows Device Manager and the console has the same property of baud rate and bits as the embedded configuration in the program.
  • okay i gave up on uart, moved onto just watching a variable to figure which state the tiva is. Here's the Current Code. It currently won't connect to a mouse. did i miss something?

    //*****************************************************************************
    //
    // usb_host_mouse.c - An example using that supports a mouse.
    //
    // Copyright (c) 2013-2016 Texas Instruments Incorporated.  All rights reserved.
    // Software License Agreement
    // 
    // Texas Instruments (TI) is supplying this software for use solely and
    // exclusively on TI's microcontroller products. The software is owned by
    // TI and/or its suppliers, and is protected under applicable copyright
    // laws. You may not combine this software with "viral" open-source
    // software in order to form a larger program.
    // 
    // THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
    // NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
    // NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    // A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
    // CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
    // DAMAGES, FOR ANY REASON WHATSOEVER.
    // 
    // This is part of revision 2.1.3.156 of the EK-TM4C129EXL Firmware Package.
    //
    //*****************************************************************************
    
    #include <stdbool.h>
    #include <stdint.h>
    #include <string.h>
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "inc/hw_gpio.h"
    #include "driverlib/gpio.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/pin_map.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/rom.h"
    #include "driverlib/rom_map.h"
    #include "usblib/usblib.h"
    #include "usblib/usbhid.h"
    #include "usblib/host/usbhost.h"
    #include "usblib/host/usbhhid.h"
    #include "usblib/host/usbhhidmouse.h"
    //#include "drivers/pinout.h"
    #include "utils/uartstdio.h"
    
    //*****************************************************************************
    //
    //! \addtogroup example_list
    //! <h1>USB Host mouse example(usb_host_mouse)</h1>
    //!
    //! This example application demonstrates how to support a USB mouse using
    //! the EK-TM4C129X evaluation kit.  This application supports only a
    //! standard mouse HID device.
    //!
    //! UART0, connected to the Virtual Serial Port and running at 115,200, 8-N-1,
    //! is used to display messages from this application.
    //!
    //!
    //
    //*****************************************************************************
    
    
    //*****************************************************************************
    //
    // The size of the host controller's memory pool in bytes.
    //
    //*****************************************************************************
    #define HCD_MEMORY_SIZE         128
    uint32_t readme;
    
    
    //*****************************************************************************
    //
    // Structure to hold the status of the attached mouse.
    //
    //*****************************************************************************
    typedef struct
    {
        //
        // Holds if there is a device connected to this port.
        //
        bool bConnected;
    
        //
        // Holds if the mouse state has been updated.
        //
        bool bUpdate;
    
        //
        // The instance data for the device if bConnected is true.
        //
        uint32_t ui32Instance;
    
        //
        // The mouse button state.
        //
        uint32_t ui32Buttons;
    
        //
        // The mouse X position.
        //
        int32_t i32XPos;
    
        //
        // The mouse Y position.
        //
        int32_t i32YPos;
    }
    tMouseStatus;
    
    //*****************************************************************************
    //
    // The global application status structure.
    //
    //*****************************************************************************
    tMouseStatus g_sStatus;
    
    //*****************************************************************************
    //
    // The memory pool to provide to the Host controller driver.
    //
    //*****************************************************************************
    uint8_t g_pui8HCDPool[HCD_MEMORY_SIZE * MAX_USB_DEVICES];
    
    //*****************************************************************************
    //
    // Declare the USB Events driver interface.
    //
    //*****************************************************************************
    DECLARE_EVENT_DRIVER(g_sUSBEventDriver, 0, 0, USBHCDEvents);
    
    //*****************************************************************************
    //
    // The global that holds all of the host drivers in use in the application.
    // In this case, only the HID class is loaded.
    //
    //*****************************************************************************
    static tUSBHostClassDriver const * const g_ppHostClassDrivers[] =
    {
        &g_sUSBHIDClassDriver,
        &g_sUSBEventDriver
    };
    
    //*****************************************************************************
    //
    // This global holds the number of class drivers in the g_ppHostClassDrivers
    // list.
    //
    //*****************************************************************************
    static const uint32_t g_ui32NumHostClassDrivers =
                      sizeof(g_ppHostClassDrivers) / sizeof(tUSBHostClassDriver *);
    
    //*****************************************************************************
    //
    // The global value used to store the mouse instance value.
    //
    //*****************************************************************************
    static tUSBHMouse *g_psMouse;
    
    //*****************************************************************************
    //
    // The error routine that is called if the driver library encounters an error.
    //
    //*****************************************************************************
    #ifdef DEBUG
    void
    __error__(char *pcFilename, uint32_t ui32Line)
    {
    }
    #endif
    
    //*****************************************************************************
    //
    // This enumerated type is used to hold the states of the mouse.
    //
    //*****************************************************************************
    enum
    {
        //
        // No device is present.
        //
        eStateNoDevice,
    
        //
        // Mouse has been detected and needs to be initialized in the main loop.
        //
        eStateMouseInit,
    
        //
        // Mouse is connected and waiting for events.
        //
        eStateMouseConnected,
    }
    g_iMouseState;
    
    //*****************************************************************************
    //
    // This is the callback from the USB HID mouse handler.
    //
    // pvCBData is ignored by this function.
    // ui32Event is one of the valid events for a mouse device.
    // ui32MsgParam is defined by the event that occurs.
    // pvMsgData is a pointer to data that is defined by the event that
    // occurs.
    //
    // This function will be called to inform the application when a mouse has
    // been plugged in or removed and any time a mouse movement or button pressed
    // has occurred.
    //
    // This function will return 0.
    //
    //*****************************************************************************
    void
    MouseCallback(tUSBHMouse *psMouse, uint32_t ui32Event, uint32_t ui32MsgParam,
                  void *pvMsgData)
    {
        //
        // Start with the assumption that the data on the serial port will need
        // updating.
        //
        g_sStatus.bUpdate = true;
    
        switch(ui32Event)
        {
            //
            // New mouse detected.
            //
            case USB_EVENT_CONNECTED:
            {
                //
                // Proceed to the eStateMouseInit state so that the main loop
                // can finish initializing the mouse since USBHMouseInit() cannot
                // be called from within a callback.
                //
                g_iMouseState = eStateMouseInit;
                readme=3;
    
                //
                // Indicate that the mouse has been detected.
                //
    //            UARTprintf("\nMouse Connected\n");
    
                break;
            }
    
            //
            // Mouse has been unplugged.
            //
            case USB_EVENT_DISCONNECTED:
            {
                //
                // Change the state so that the main loop knows that a device is no
                // longer present.
                //
                g_iMouseState = eStateNoDevice;
    
                //
                // Need to clear out any held buttons.
                //
                g_sStatus.ui32Buttons = 0;
    
                //
                // Indicate that the device was disconnected.
                //
    //            UARTprintf("\nMouse disconnected\n");
    
                //
                // There shouldn't be any updates from a disconnected mouse.
                //
                g_sStatus.bUpdate = false;
    
                break;
            }
    
            //
            // New button press detected.
            //
            case USBH_EVENT_HID_MS_PRESS:
            {
                //
                // Save the new button that was pressed.
                //
                g_sStatus.ui32Buttons |= ui32MsgParam;
    
                break;
            }
    
            //
            // A button was released on a HID mouse.
            //
            case USBH_EVENT_HID_MS_REL:
            {
                //
                // Remove the button from the pressed state.
                //
                g_sStatus.ui32Buttons &= ~ui32MsgParam;
    
                break;
            }
    
            //
            // The HID mouse detected movement in the X direction.
            //
            case USBH_EVENT_HID_MS_X:
            {
                //
                // Update the cursor X position.
                //
                g_sStatus.i32XPos += (int8_t) ui32MsgParam;
    
                break;
            }
    
            //
            // The HID mouse detected movement in the Y direction.
            //
            case USBH_EVENT_HID_MS_Y:
            {
                //
                // Update the cursor Y position.
                //
                g_sStatus.i32YPos += (int8_t) ui32MsgParam;
    
                break;
            }
            default:
            {
                //
                // This was an event that we don't recognize, so there is no reason
                // to update the UART output.
                //
                g_sStatus.bUpdate = false;
    
                break;
            }
        }
    
        //
        // If we have an update for the UART, send it now.
        //
        if(g_sStatus.bUpdate == true)
        {
            //
            // Print an update to the UART showing the current mouse position and
            // the state of all three buttons.
            //
    //        UARTprintf("\rPos: %d, %d  Buttons: %d%d%d    ",
    //                   g_sStatus.i32XPos, g_sStatus.i32YPos,
    //                   g_sStatus.ui32Buttons & 1,
    //                   (g_sStatus.ui32Buttons & 2) >> 1,
    //                   (g_sStatus.ui32Buttons & 4) >> 2);
        }
    }
    
    //*****************************************************************************
    //
    // The main routine for handling the USB mouse.
    //
    //*****************************************************************************
    void
    MouseMain(void)
    {
        switch(g_iMouseState)
        {
            //
            // This state is entered when they mouse is first detected.
            //
            case eStateMouseInit:
            {
                //
                // Initialized the newly connected mouse.
                //
                USBHMouseInit(g_psMouse);
    
                //
                // Proceed to the mouse connected state.
                //
                g_iMouseState = eStateMouseConnected;
    
                break;
            }
            case eStateMouseConnected:
            {
                //
                // Nothing is currently done on mouse connect.
                //
                break;
            }
            default:
            {
            	readme=666;
                break;
            }
        }
    }
    
    //*****************************************************************************
    //
    // This is the generic callback from host stack.
    //
    // pvData is actually a pointer to a tEventInfo structure.
    //
    // This function will be called to inform the application when a USB event has
    // occurred that is outside those related to the mouse device.  At this
    // point this is used to detect unsupported devices being inserted and removed.
    // It is also used to inform the application when a power fault has occurred.
    // This function is required when the g_USBGenericEventDriver is included in
    // the host controller driver array that is passed in to the
    // USBHCDRegisterDrivers() function.
    //
    //*****************************************************************************
    void
    USBHCDEvents(void *pvData)
    {
        tEventInfo *pEventInfo;
    
        //
        // Cast this pointer to its actual type.
        //
        pEventInfo = (tEventInfo *)pvData;
    
        switch(pEventInfo->ui32Event)
        {
            case USB_EVENT_UNKNOWN_CONNECTED:
            case USB_EVENT_CONNECTED:
            {
                //
                // Save the device instance data.
                //
                g_sStatus.ui32Instance = pEventInfo->ui32Instance;
                g_sStatus.bConnected = true;
                readme=1;
                break;
            }
            //
            // A device has been unplugged.
            //
            case USB_EVENT_DISCONNECTED:
            {
                //
                // Device is no longer connected.
                //
                g_sStatus.bConnected = false;
    
                break;
            }
            default:
            {
                break;
            }
        }
    }
    
    //*****************************************************************************
    //
    // The main application loop.
    //
    //*****************************************************************************
    int
    main(void)
    {
        uint32_t ui32SysClock, ui32PLLRate;
        readme=0;
        //
        // Set the application to run at 120 MHz with a PLL frequency of 480 MHz.
        //
        SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
        volatile uint32_t ui32Loop;
    
            //
            // Enable the GPIO port that is used for the on-board LED.
            //
            SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    
            //
            // Check if the peripheral access is enabled.
            //
            while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF))
            {
            }
    
            //
            // Enable the GPIO pin for the LED (PF3).  Set the direction as output, and
            // enable the GPIO pin for digital function.
            //
            GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_3);
        //
        // Set the part pin out appropriately for this device.
        //
        //PinoutSet(false, true);
    
        //
        // Configure UART0 for 115,200 baud serial data output.
        //
    // UARTStdioConfig(0, 115200, ui32SysClock);
    
        //
        // Print a welcome message
        //
    //    UARTprintf("\033[2J\033[H");
    //    UARTprintf("USB Host Mouse Example\n");
    //    UARTprintf("Waiting for device....\n");
    
        //
        // Initialize the connection status.
        //
        g_sStatus.bConnected = false;
        g_sStatus.ui32Buttons = 0;
    
        //
        // Enable Clocking to the USB controller.
        //
        ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_USB0);
    
        //
        // Enable Interrupts
        //
        ROM_IntMasterEnable();
    
        //
        // Initialize the USB stack mode and pass in a mode callback.
        //
        USBStackModeSet(0, eUSBModeHost, 0);
    
        //
        // Register the host class drivers.
        //
        USBHCDRegisterDrivers(0, g_ppHostClassDrivers, g_ui32NumHostClassDrivers);
    
        //
        // Open an instance of the mouse driver.  The mouse does not need
        // to be present at this time, this just save a place for it and allows
        // the applications to be notified when a mouse is present.
        //
        g_psMouse = USBHMouseOpen(MouseCallback, 0, 0);
    
        //
        // Initialize the power configuration. This sets the power enable signal
        // to be active high and does not enable the power fault.
        //
        USBHCDPowerConfigInit(0, USBHCD_VBUS_AUTO_HIGH | USBHCD_VBUS_FILTER);
    
        //
        // Tell the USB library the CPU clock and the PLL frequency.  This is a
        // new requirement for TM4C129 devices.
        //
        //SysCtlVCOGet(SYSCTL_XTAL_25MHZ, &ui32PLLRate);
        //USBHCDFeatureSet(0, USBLIB_FEATURE_CPUCLK, &ui32SysClock);
        //USBHCDFeatureSet(0, USBLIB_FEATURE_USBPLL, &ui32PLLRate);
    
        //
        // Initialize the USB controller for Host mode.
        //
        USBHCDInit(0, g_pui8HCDPool, sizeof(g_pui8HCDPool));
    
        //
        // The main loop for the application.
        //
        while(1)
        {
            //
            // Call the USB library to let non-interrupt code run.
            //
            USBHCDMain();
    
            //
            // Call the mouse and mass storage main routines.
            //
            MouseMain();
        }
    }
    

  • Hello Matthew

    Yes, of course.

    //
    // Set the part pin out appropriately for this device.
    //
    //PinoutSet(false, true);

    The pinout not being configured would mean that the USB pins for host mode are not being configured! Unless there is someplace else that you have configured them!
  • hmmm now i remember why i commented that bugger out, it is intended to work with the DK-tm4c123g is trying to setup pins that don't even exist on the EK-tm4c123gxl. I'll wager I have to either A) use a different file. B) Rewrite this one C) Reconfigure the compiler???
  • Hello Matthew

    Not A nor C. The correct approach is B since the USB Host mode requires additional pins to be configured

    You may want to use the TI Pin Mux tool to autogenerate the files based on the selection of the device and IO configuration that you would require

    processors.wiki.ti.com/.../TI_PinMux_Tool
  • that's really cool. How do I configure to be like my Evalutation kit though with usb as well?
  • Hello Matthew

    You could use the the pinout file in the drivers directory of EK-TM4C123GXL as a reference to re-enter the data into the tool. Then add the additional USB pins for Host mode operation.
  • welp It gets stuck in the new pinout stating that error #20 identifier "GPIO_PD3_USB0PFLT" is undefined pinout.c ideas
  • Hello Matthew

    Did you add the define in the project build settings for PART_TM4C123GH6PM or are you using the define PART_TM4C123GH6PGE?
  • i think i bricked a tiva A+ atleast i have a few of these things, fixed the part definition too.

    this line in particular of the pinout.c bricks it:

    MAP_GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_3);

    or maybe i just suck at amking a decent pinout file

  • Hello Matthew

    I would suggest running the unlock sequence using LMFlashProgrammer. The steps to follow are specified in the following document.

    www.ti.com/.../spma075.pdf
  • Got it unlocked, ideas how to fix the pin out file?
  • Hello Matthew,

    You would need to update the pin mux config file with the TI Pin Mux tool to remove Port C pins 0-3 from any configuration.
  • Alright so currently the code runs now, however right now im just trying to get the mouse to connect then ill re-write the mouse code. Currently I can't get the mouse to connect, i assume its due to my laziness of just connecting the mouse power to Vbus, i assumed it would work for a short term test, that setup is not my long term solution.

    I noticed a USB 2.0 connection wouldn't support this but a USB 3.0 port seemed to handle it well enough.
  • swapped the USB mouse to be self powered from another PC port instead of being powered off of the TIVA. Yet i don't get any input.