Topic outline

  • General

  • Topic 1

    nnn

    Post
    Alright, I fixed my own problem. Here are the details:
    When the brick was clicking, it was in boot mode waiting for firmware update. However, RobotC didn't see the brick. Upon examining device manager, I noticed the brick had a device description "Bossa Program Port". That's strange because I remember it should be "LEGO MINDSTORMS NXT". Uninstalling the driver and reinstalling it yielded the same "Bossa Program Port". So I noted the hardware ID of the "Bossa Program Port" from device manager (USB\VID_03EB&PID_6124). Then I went to the c:\Windows\inf directory and searched for that ID. That ID appeared in two INF files oem11.inf and oem42.inf. oem11.inf has the device description "LEGO MINDSTORMS NXT Firmware Update Mode" and oem42.inf has the description "Bossa Program Port". So that's why it installed the wrong driver. Knowing that, I renamed oem42.inf to oem42.inf.bak and then uninstalled "Bossa Program Port" from device manager. Unplugging the USB cable of the brick and re-plugging it in enumerated and installed the correct driver. I can now download the firmware correctly. Problem fixed.
    Now, the question is: who installed oem42.inf? I think I know the answer. I recently acquired a Freeduino board and downloaded the Arduino development environment. I'd bet the Freeduino board has the same device ID as the "LEGO MINDSTORMS NXT Firmware Update Mode" device. After all, I think Freeduino uses the same controller as the Mindstorms (ATMEGA328P). That's surely confusing. I wonder if there is anything RobotC can do to prevent this from happening (e.g. when updating firmware failed, call SetupDi API to check the device description to make sure the driver is "Mindstorms firmware update mode". If not, either automatically reload the "firmware update mode" driver or at least warn the user about it. Or at least publish a trouble shooting FAQ. Alternatively, I don't have time to check this possibility out but it may be possible to differentiate the Freeduino and Mindstorms devices using Subsystem ID. If they do use different subsystem IDs, you could author the Mindstorm INF with the Subsystem ID info as part of the device ID. This way, Windows will pick the correct INF to install.
     Re: Failed to download firmware and the brick is bricked
    i replaced bossa with lego driver manually
    • Topic 2

      • Topic 3

        • Topic 4

          • Topic 5

            • Topic 6

              • Topic 7

                • Topic 8

                  • Topic 9

                    • Topic 10

                      • Topic 11

                        • Topic 12

                          • Topic 13

                            • Topic 14

                              • Topic 15

                                • Topic 16

                                  • Topic 17

                                    • Topic 18

                                      • Topic 19

                                        • Topic 20