cancel
Showing results for 
Search instead for 
Did you mean: 

USB Superspeed Peripherals

IgBe_4789151
New Contributor

Hello,

My USB controller's VR firmware corrupted itself all of a sudden, so I decided to reflash it. I tried reflashing oasisfirmware (gotten from HololensSensors.dll), which is usually what these HMD's come bundled with, on and on, but the firmware wasn't being written permanently, I would unplug the device and plug it back in, and it would be the bootloader all over again, so that's when I flashed the BootProgrammer, to see if it would be any useful (which was a very silly thing to do, it flashed permanently!) and now I basically can't even flash anymore with the CyControl.exe tool, it simply keeps displaying 'Bootloader is not running', which is obvious since well, I flashed the BootProgrammer. How do I go back to the bootloader, I have seen the docs and they mainly just say that I should set the PMODE using pins, but there's no pins on this board, and the BootProgrammer, I couldn't find any documentation on. Thanks, all I want is the bootloader back or a way to write firmware, somehow.

USB Controller chip is at the right, above 'REV:E'

IMG_20201002_051235[1].jpg

Back of the board, chip at the left above 'CN601'

IMG_20201002_051450[1].jpg

Please note that this board is from the VR1000 HP headset.

0 Likes
1 Solution
YashwantK_46
Moderator
Moderator

Hello IgBe_4789151​,


Please try the following steps:
1.) Perform a control IN transfer as shown in image to verify the first two bytes are "43 59" in the EEPROM by sending vendor command "0xBB" (or "0xC3" for reading the contents of SPI FLASH if it exists):

pastedImage_0.png
2.) You need to re-write this "43 59" ( or "CY") with some random bytes to force the device to enumerate as a bootloader device as shown below using vendor command as "0xBA" for EEPROM (or "0xC2" for FLASH) by a control OUT transfer:

pastedImage_3.png

3.) Validate that the EEPROM (or FLASH) settings again using the step mentioned in 1.)  as below:

pastedImage_4.png

4.) Power cycle (or reset) the device and you should see the "Cypress USB Bootloader Device" coming in the control center.

NOTE: As you said you want to reflash the oasisfirmware.img, after the device comes up as Bootloader device, you can directly program the oasisfirmware.img file to EEPROM or FLASH using the Control Center using Program > FX3 > I2C EEPROM or SPI FLASH and that will make the firmware get permanently flashed to the device.

Regards,
Yashwant

View solution in original post

5 Replies
IgBe_4789151
New Contributor

It's FX3 by the way. Posting here since I can't figure out how to edit the original post.

0 Likes
YashwantK_46
Moderator
Moderator

Hello IgBe_4789151​,

Can you please share the screenshot of the control center application after plugging in the device?

If possible, can you please share the schematics of the board?

Can you please let me know whether there is an SPI FLASH or I2C EEPROM onboard?

I would need to know this in order to figure out the PMODE set for the device.

Regards,

Yashwant

IgBe_4789151
New Contributor

Thanks for the prompt reply YashwantK_46

I don't have the schematics of the board, I could ask HP for them. I posted as much information as I could find.

Here's the screenshot:

CyControl_2020-10-02_09-53-19.png

Descriptor Info:

<DEVICE>

    FriendlyName="Cypress FX3 USB BootProgrammer Device"

    Manufacturer="Cypress"

    Product="FX3"

    SerialNumber=""

    Configurations="1"

    MaxPacketSize="512"

    VendorID="04 B4"

    ProductID="47 20"

    Class="00h"

    SubClass="00h"

    Protocol="00h"

    BcdDevice="00 00"

    BcdUSB="03 10"

    <BOS>

        NumberOfDeviceCapability="02h"

        DescriptorType="15"

        DescriptorLength="5"

        TotalLength="22"

        <USB20 Device Extension>

            DescriptorLength="7"

            DescriptorType="16"

            DeviceCapabilityType="2"

            bmAttribute="641Eh"

        </USB20 Device Extension>

        <SUPERSPEED USB>

            DescriptorLength="10"

            DescriptorType="16"

            DeviceCapabilityType="3"

            FunctionalitySupporte="3"

            bmAttribute="00h"

            U1Device Exit Latency="0"

            U2Device Exit Latency="00h"

        </SUPERSPEED USB>

    </BOS>

    <CONFIGURATION>

        Configuration="0"

        ConfigurationValue="1"

        Attributes="80h"

        Interfaces="1"

        DescriptorType="2"

        DescriptorLength="9"

        TotalLength="18"

        MaxPower="50"

        <INTERFACE>

            Interface="0"

            InterfaceNumber="0"

            AltSetting="0"

            Class="FFh"

            Subclass="00h"

            Protocol="0"

            Endpoints="0"

            DescriptorType="4"

            DescriptorLength="9"

        </INTERFACE>

    </CONFIGURATION>

</DEVICE>

0 Likes
YashwantK_46
Moderator
Moderator

Hello IgBe_4789151​,


Please try the following steps:
1.) Perform a control IN transfer as shown in image to verify the first two bytes are "43 59" in the EEPROM by sending vendor command "0xBB" (or "0xC3" for reading the contents of SPI FLASH if it exists):

pastedImage_0.png
2.) You need to re-write this "43 59" ( or "CY") with some random bytes to force the device to enumerate as a bootloader device as shown below using vendor command as "0xBA" for EEPROM (or "0xC2" for FLASH) by a control OUT transfer:

pastedImage_3.png

3.) Validate that the EEPROM (or FLASH) settings again using the step mentioned in 1.)  as below:

pastedImage_4.png

4.) Power cycle (or reset) the device and you should see the "Cypress USB Bootloader Device" coming in the control center.

NOTE: As you said you want to reflash the oasisfirmware.img, after the device comes up as Bootloader device, you can directly program the oasisfirmware.img file to EEPROM or FLASH using the Control Center using Program > FX3 > I2C EEPROM or SPI FLASH and that will make the firmware get permanently flashed to the device.

Regards,
Yashwant

View solution in original post

IgBe_4789151
New Contributor

Thanks it worked, unbelievable lol

CyControl_2020-10-05_07-07-11.png

0 Likes