scratchminer / Index-OS

A custom launcher for the Panic Playdate
https://scratchminer.github.io/Index-OS-Website/
34 stars 0 forks source link

Index OS bricked my playdate :( #3

Closed Nanobot567 closed 1 year ago

Nanobot567 commented 1 year ago

I opened an app called "Pocket Planner". After exiting, my playdate threw an error that said something about a missing displayImages function. I then tried to boot into recovery firmware. I did this and tried to upgrade to 1.13.7. Now it's stuck flashing between applying system update and the playdate screen. I was on 1.13.7. Guess this is what I get haha

scratchminer commented 1 year ago

I have the same issue with recovery firmware sometimes. Can you check the serial console in the Simulator? (Another thing to try is hitting the reset button in the crank dock, which solved it for me a couple times.)

Nanobot567 commented 1 year ago

Nothing in the serial console. It doesn't detect the playdate at all. I also already tried the reset button a couple times.

scratchminer commented 1 year ago

something about a missing displayImages function

Do you have the exact error message or stack trace? It would be helpful so I can track down the error.

Nanobot567 commented 1 year ago

No, I didn't think to take a picture. In hindsight I probably should have though.

scratchminer commented 1 year ago

You have the unlock key for your Playdate right? If so you can boot into its system disk and run Disk Utility (Mac) or chkdsk /f /r (Windows). I have a hunch that you've got isolated data on the system disk causing it not to update properly.

Nanobot567 commented 1 year ago

That's the thing, on my computer it's not detected at all, the serial port doesn't exist.

scratchminer commented 1 year ago

Interesting. On my computer when that happens, the Playdate ends up connecting and disconnecting repatedly from the serial interface as it reboots. If you have a Unix-compatible computer try installing picocom and trying the serial interface until it connects, I don't know about Windows though

scratchminer commented 1 year ago

Also, a bootloader test to perform: Triple-clicking the reset button should boot your Playdate into the recovery disk. If it doesn't then your bootloader isn't working.

scratchminer commented 1 year ago

I'll try to reproduce the update conditions on my Playdate, we'll see if it works

Nanobot567 commented 1 year ago

Alright, that worked! I now see a drive called BOOTSY on my computer with nothing in it, except for version.txt.

scratchminer commented 1 year ago

All right, then you've got a working bootloader. (Incidentally, are you on Mac or Windows?)

Nanobot567 commented 1 year ago

I am on Windows.

scratchminer commented 1 year ago

Oh -- that might be the reason the serial port doesn't connect. I guess Windows handles serial comms differently than Unix. I use a Mac normally, and my guess is that you have a filesystem error on your Playdate, causing it to reboot constantly. It was fixed for me by booting to the system disk and running Disk Utility.

scratchminer commented 1 year ago

Can you try booting to recovery firmware from the crash loop? I'm not sure if that'll help anything, but it's worth a shot.

Nanobot567 commented 1 year ago

I tried doing that earlier, it didn't work.

Nanobot567 commented 1 year ago

Ok somehow pressing the reset button a million times got me into the DATA segment, the filesystem is readable by windows though. I guess that makes it a problem with the SYSTEM partition?

scratchminer commented 1 year ago

Yep! That's why I had you try to boot into BERNARD.

Nanobot567 commented 1 year ago

Oh, right, duh, sorry haha.

Also I have the traceback you were asking for earlier now:

2023/05/06 13:27:05
/System/Launcher.pdx
views/cardView.lua:240: method 'loadCardImages' is not callable (a nil value)
stack traceback:
    views/cardView.lua:240: in upvalue 'loadAll'
    views/cardView.lua:1719: in method 'draw'
    main.lua:443: in function <main.lua:440>
scratchminer commented 1 year ago

That bug will be fixed in the next release.

How are you connecting to the Playdate via serial? Are you using your psi tool?

Nanobot567 commented 1 year ago

Yeah I tried using that first, then I tried using picocom through WSL. I'm not entirely sure what my playdate's serial number is, but I just used the digits after the dash on the playdate website.

scratchminer commented 1 year ago

Your serial is printed inside the crank dock, and it should start with PDU1-Y.

Nanobot567 commented 1 year ago

Just tried it, didn't work.

scratchminer commented 1 year ago

The serial command should reach the Playdate while it is trying to copy, so there's around half a second of time before it reboots again. Make sure you don't try to connect too early, while the bootloader is still going, and paste the unlock and sysdisk commands in quickly enough so the Playdate receives them before it reboots.

Nanobot567 commented 1 year ago

I tried sending the command when you said, it still didn't work. The port is supposed to be /dev/cu.usbmodemPD(serial), correct?

scratchminer commented 1 year ago

dev/cu.usbmodemPDU1-YXXXXX is the port.

Nanobot567 commented 1 year ago

Dang, that didn't work either. I can factory reset if that's possible, I backed everything up from the data partition

scratchminer commented 1 year ago

I suppose you could try that, I don't know what else to do at this point. I'm sorry I couldn't help more.

Nanobot567 commented 1 year ago

How would I go about factory resetting from the state that it's in? And if that doesn't work, should I email Panic?

Also, don't be sorry! You've helped a ton. Thanks :)

scratchminer commented 1 year ago

I'd say reach out to Dave on the forums, because since the bootloader works he can DM you the firmware build. I've done all I can do here, so I'm going to close the issue.

Nanobot567 commented 1 year ago

Alright, thanks again! If I can't resolve the issue I guess I took one for the team 😅