XRP no longer works

I have 7 XRPs and got them all working last week. Now one of them refuses to function. I’ve read every single post here and I’m stuck. When I plug the XRP (the current version, not the beta version) in, I don’t get the Windows USB sound indicating a device is plugged in and when I click Connect XRP via USB in the XRP code window, I get “no compatible devices found”. So I tried the following steps multiple times:

  1. XRP power switch off
  2. Hold bootsel and then Plug in USB
  3. RP2350 window appears
  4. drag in this flash nuke file
  5. It loads quickly and the window vanishes.
  6. Unplug USB
  7. Hold bootsel and plug in USB
  8. RP2350 window appears
  9. drag in the latest firmware update from here (making sure to get the non-beta version)
  10. It loads successfully and the window vanishes
  11. Unplug USB
  12. Plug in USB (windows plays the USB connection sound - this is important!)
  13. open XRP code window
  14. Message appears that micropython needs to be updated and the new version is 1.25.0 beta06 (which is a little weird since I just loaded 1.28.0 but…that’s what it wants)
  15. Click OK
  16. Select RP2350 folder and allow edit. Update in progress message appears and it appears to successfully load.
  17. This is where everything fails…
  18. Windows USB disconnect sound is played
  19. Click Connect XRP via USB in code window.
  20. No compatible devices found
  21. Unplug USB and plug back in again. No USB connection sound is heard.
  22. Click Connect XRP via USB in code window. No compatible devices found.
  23. The little red power light is still lit on the XRP control board but unplugging/plugging the USB does nothing. Windows no longer recognizes that something is plugged it.

Rinse and repeat. I’ve done this entire process multiple times. I have no idea why this XRP worked fine several days ago and why it won’t work now. Before it failed, I was trying to do a basic XBOX controller gamepad test as described in the User guide. I had no problem with the other XRPs (a mix of beta and non) but this one quit functioning after I loaded the code to test the game pad and now I’m stuck. I doubt it matters but the game pad code I loaded before the XRP died was the following:

from XRPLib.defaults import *

# available variables from defaults: left_motor, right_motor, drivetrain,
#      imu, rangefinder, reflectance, servo_one, board, webserver

#
# XRP must be connected via BLUETOOTH to use the gamepad.
# This uses tank drive (left stick for left wheel, right stick for right wheel)
#

from XRPLib.board import Board
from XRPLib.differential_drive import DifferentialDrive
from XRPLib.gamepad import *
from XRPLib.servo import Servo

board = Board.get_default_board()

differentialDrive = DifferentialDrive.get_default_differential_drive()

gp = Gamepad.get_default_gamepad()

servo1 = Servo.get_default_servo(1)

while not (board.is_button_pressed()):
    differentialDrive.set_effort((gp.get_value(gp.Y1)), (gp.get_value(gp.Y2)))
    if gp.is_button_pressed(gp.BUTTON_A):
        servo1.set_angle(90)
    if gp.is_button_pressed(gp.BUTTON_B):
        servo1.set_angle(135)

Hi there,

A couple things:

You may be unplugging the USB cable too early. Nuking the flash takes time, I believe roughly 1 minute or so. When it finishes, it will automatically re-appear as an RP2350 drive again.

Same here, you may be unplugging too early. I believe it takes ~20 seconds to upload. When it finishes, it should automatically connect as a serial device (not RP2350 drive), and XRPCode should be able to see it then.

The current XRPCode version has hard coded 1.25.0 beta06 as the “latest” version, and it considers any other version to be “outdated”. An updated XRPCode is in the works that should fix this.

You can also skip this and stick with v1.28.0.

So I would recommend repeating your steps, but do not unplug the USB cable after step 2, and skip XRPCode’s “update” to 1.25.

Hope this helps!

1 Like

I think you’ve solved it! I waited a full minute and sure enough, the RP2350 window reappeared. And now it’s working properly.

It would be awesome if this entire series of steps were documented in the User’s guide. Perhaps here would be a good place? Including the links to find the flash nuke file and the latest micropython and the places where a delay is necessary. It took me quite some time to find all of the pieces.

Do we have the ability to make suggestions for updating the documentation besides posting it here?

Thank you so much for responding!

Great to hear!

We can ping @bamiller and @Fgrossman, they manage these things.

1 Like