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.

TUSB4041I - I2C EEPROM programming

Other Parts Discussed in Thread: TUSB4041I, TUSB8040, TUSB4041PAPEVMPart Number: TUSB4041I

Application: USB Hub

Support topic: /Product/Development and troubleshooting/

Description of the problem: After programming this device EEPROM and writing 0x55 to address 0x00 the EEPROM programming mode is disabled (after next device reset).
The programming utility notes this:
On Page 7:
IMPORTANT NOTE! Writing 0x55 to EEPROM address 0x00 will disable EEPROM programming mode after the next device reset. Ensure that all data in the EEPROM is correct before resetting the device.
On Page 13:
I programmed 0x55 into EEPROM address 0x00 and now the TUSB8040 will no longer enter programming mode.
• There are two options to recover an incorrectly programmed EEPROM:
1) Replace the EEPROM with a new (blank) one.
2) Refer to the TUSB8040 datasheet for instructions on externally entering programming mode.
BUT; The device datasheet says nothing about how to do this (item 2).
HAS ANYONE DONE THIS?
HOW CAN THE EEPROM BE REPROGRAMMED ON-BOARD?


  • Hello,

    If you have the EEPROM Programming utility you can access the onboard EEPROM anytime by using the "EEPROM Programmer Endpoint Driver" installed on your PC within the utility's folder.

    Regards

  • This doesn't appear to be true. We've already tried it.

    Once the device is programmed, it shows up as USB 2.00 MTT Hub.

    Running the programming utility returns the message "No attached TUSB8040 was found. The program will now exit."

    This is consistent with the documentation :
    "If the value of the EEPROM contents at byte 00h equals 55h, the TUSB4041I device loads the configuration
    registers according to the EEPROM map. If the first byte is not 55h, the TUSB4041I device exits the I2C mode
    and continues execution with the default values in the configuration registers. ... If the hub detected an
    unprogrammed EEPROM (value other than 55h), the hub enters programming mode and a programming
    endpoint within the hub is enabled."

    ergo, when the value is 0x55, the programming endpoint is not enabled.

    Are we missing something?

  • Hello,
    That is because you have not installed the Endpoint Programming Driver, you have to update the driver of the "USB2.00 MTT Hub" with the endpoint programmer driver, the driver was installed on the same folder of the utility.
    Regards
  • - I installed the TUSB8040 EEPROM Programmer software
    - I installed the TUSB8040.inf from the TUSB8040 EEPROM Endpoint Driver folder
    - BEFORE programming I contacted TI support staff who assured me the EEPROM programming mode could be re-entered. The documentation states as much: 2) Refer to the TUSB8040 datasheet for instructions on externally entering programming mode.
    - When I stated there was nothing in the datasheet, I was again assured it is possible and TI engineers could tell me how.
    - I successfully wrote my configuration to the EEPROM on the TUSB4041EVM board.
    - The device connects and displays as USB 2.0 MTT Hub, functioning as programmed.
    - When I try to update the USB 2.0 MTT Hub driver from Device Manager with the endpoint driver, "Windows has determined the driver software for your device is up to date"
    - This coincides with the datasheet which states that the programming mode is ONLY entered when an unprogrammed EEPROM is encountered : value other than 0x55 in address 0x00.

    Soooo, how do I enter programming mode other than by removing the EEPROM [listed as socketed in the TUSB4041PAPEVM sales literature] and starting over?

    While removing the EEPROM is an option for the TUSB4041PAPEVM, it is a tad inconvenient with itty bitty SOT parts in production.
  • Hello,

    Just to clarify, are you selecting "Let me pick from a list of device drivers on my computer" on Device Manager?

    Please, provide a register dump from the EEPROM.

    Regards
  • Right Click on USB 2.0 MTT Hub -> Update Driver Software... -> Browse my computer for driver software ->

    C:\_Utils\TUSB8040\TUSB8040 EEPROM Programmer\TUSB8040 EEPROM Endpoint Driver -> Let me pick from a list of device drivers on my computer

    Then I have two devices : USB 2.0 MTT Hub & USB Hub. Select either -> Have Disk -> Browse ->

    Choose "C:\_Utils\TUSB8040\TUSB8040 EEPROM Programmer\TUSB8040 EEPROM Endpoint Driver\TUSB8040.inf"

    Click OK -> { Ignore unsigned warning } ... installs ...

    Device shows as "TI TUSB8040 EEPROM Programming Endpoint" regardless of which I chose.

    Restart - start programming utility -> "No attached TUSB device was found. This program will now exit."

    Now the eval board is a paperweight as it does not register devices... until I update driver and reinstall from C:\Windows\inf

    eeprom config

    'PRI TUSB4041 EEPROM Data File
    'Created 10/27/16 07:40:51
    ' 1803-0210 RevB
    ' Ian Eales
    00 55 ROM Signature
    01 51 TI VID 0451 LSB
    02 04 TI VID 0451 MSB
    03 42 TI PID 8142 LSB for eval board read from device
    04 81 TI PID 8142 MSB for eval board
    05 9C Custom Strings enabled, power ganged, port power switching status reporting disabled
    06 00 No battery charging
    07 80 Downstream ports not removable
    08 0F 4 ports enabled
    09 00 Reserved, program to 00
    0A 22 PWRCTL is Active HIGH, Auto Chg Mode disabled
    0B 9E Enable downstream polarity, swap downstream polarity
    10 00 Container ID[0x0] - EEPROM utility read 5CD1C002-CD40-BCE7-6715-881D272D0300
    11 03
    12 2D
    13 27
    14 1D
    15 88
    16 15
    17 67
    18 E7
    19 BC
    1A 40
    1B CD
    1C 02
    1D C0
    1E D1
    1F 5C Container ID[0xF]
    20 09 Lang ID LSB 0409 = US English
    21 04 Lang ID MSB
    22 00 Serial Number length - should not be read as customSernum is 0 in reg 5
    23 12 Mfg Name Length
    24 0D Prod Name Length
    50 50 P Mfg Name[0]
    51 68 h
    52 6F o
    53 74 t
    54 6F o
    55 20
    56 52 R
    57 65 e
    58 73 s
    59 65 e
    5A 61 a
    5B 72 r
    5C 63 c
    5D 68 h
    5E 20
    5F 49 I
    60 6E n
    61 63 c
    90 50 P Prod Name[0]
    91 52 R
    92 49 I
    93 20
    94 54 T
    95 72 r
    96 75 u
    97 2D -
    98 38 8
    99 20
    9A 55 U
    9B 53 S
    9C 42 B
    F0 00 additional features - power on time

    'DATA FILE FORMAT: <HEX ADDRESS><TAB><HEX DATA>. EVERYTHING AFTER <DATA> IS IGNORED.
    'USE <'> FOR IN-LINE COMMENTING.
    'DATA FILE PARSING STOPS AT FIRST BLANK LINE.

  • When you attempt to start the utility, how is the hub being enumerated in device manager?

    Could you try this? After installing/forcing the driver do not restart the PC and open the tool.

    Regards
  • after changing the driver, device enumerates as TI TUSB8040 EEPROM Programming Endpoint.

    tried starting programming util without restarting PC first time. No difference - no TUSB80840 found

  • Hello Ian,

    Keep in mind that the programmed data in the Manufacturer String should be in UTF-16LE encoding.  See the attached file that I generated based on your EEPROM configuration.

    4041_from_TI.TXT

    Can you try re-installing the Endpoint driver over the TI TUSB8040 EEPROM Programming Endpoint instance when the tool fails to detect the device?

    Is there any downstream device attached when you install the Endpoint driver? Please, disconnect all the downstream devices when you install the endpoint driver?

    Regards

  • Of course I did not have anything plugged into a downstream port.

    I'm assuming

    start with USB 2.0 MTT Hub enumeration

    start programming utility

    install TUSB driver on programmer util fail message

    close install message

    start programmer util

    NO CHANGE

    =========================

    Do you have a programmed TUSB4041PAPEVM and are you able to re-program it on Windows 7 x64?

    If yes, please list dip switch settings and exact steps by which you are able to program it.

    If not, please elicit the assistance of someone who has a EVM and is able to reprogram the device.

    If no one has done that, then please just say it can't be done and I'll remove the EEPROM and start over.

  • Hello Ian, 

    I have a TUSB4041PAPEVM  running with your register configuration and I'm able to re-program the registers.You have to install the Endpoint driver in the Generic USB Hub instance if your system has another USB Hub driver it may be causing conflicts. Please try in a fresh Windows 7 system. 

    Regards

    • the device NEVER showed as Generic USB Hub on Windows 7. On 3 machines it shows as USB 2.0 MTT Hub.
      • It shows as Generic on wX & XP
    • Uninstalling the MTT driver and removing software, then restarting the device shows as TUSB8040 EEPROM
    • The programmer utility still does not find the device
    • Uninstalling the EEPROM driver renders the device uninstallable, probably due to my error in setting the EEPROM strings.
      • Attempting to install the driver on Generic on wX & XP returns "The specified location does not contain information about your hardware."

    I'm assuming no BOM is required at the start of the character strings.

    An example in the datasheet would wonders to reduce confusion.

    I ask again for the dip switch settings if other than sw1 3&4 are engaged.

  • We only have  SW1_3 and SW1_4 enabled.

    Any Windows 7 system should be able to enumerate the hub as Generic USB Hub since this is the inbox driver. 

    Could you send a capture showing the Hardware Ids properties? 

    Please, try the following in a "clean" Windows 7 system (no USB 2.0 MTT Hub installed).

    1.Turn SW1_3 and SW1_4 to off position. 

    2.Connect the Hub to the system. 

    3. Install the Endpoint driver.

    4. Run the EEPROM tool. 

    5. Turn SW1_3 and SW1_4 on.

    Regards

  • Old Windows 7 64, SW1 3&4 off, connect hub, NO MTT driver, VID&PID as above, install driver, run EEPROM tool - device not found, turn SW1 3&4 on - no change in EEPROM message, exit, disconnect, SW1 3&4 ON, connect, run EEPROM tool, device not found.
  • After repeated TI e2e suggestions failed to provide a solution, I decided to cut my losses and replace the EEPROM.
    According to the TUSB4041 literature this EEPROM is supposed to be socketed.
    A socketed EEPROM is mandatory as it appears a programming error may likely to brick the device.
    Development tools should be IDtenT proof.
    My error was using UTF-8 instead of UTF-16LE. ~<:-(

    More concise and exact instructions on installing and setting up the EEPROM tool would have gone a long way to alleviating our frustration with this product.

    It’s taken me nearly 3 hours to remove the soldered EEPROM.
    My guess is there inadequate thermal reliefs to the power planes.
    A 60w iron with heavy tip could not budge the power pins. The solder refused to flow.
    In the end I used another 60w iron with a chisel tip to flow the solder to extract the power pins.
    Once the pin was out there was not enough heat conduction from the pad to flow the entire hole.
    I tried with both irons and assistant on the opposite side with a solder vac to no avail.
    The middle third of the hole was blocked.

    In the end, my trusty Dremel and an 0.025 bit did the trick.

    I can again successfully connect to the board.

    Not really good enough for a $200 product which has cost 20x that in faffing about!