Flashed the BootProgrammer on this mixed reality headset, now I can't flash

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
IgBe_4789151
Level 1
Level 1

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

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
Level 1
Level 1

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
Moderator
100 solutions authored 50 solutions authored 50 likes received

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
Level 1
Level 1

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

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

Thanks it worked, unbelievable lol

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

0 Likes