Re-visiting my old favorite cell phone, the Lumia 1520 in late 2024

While I have a mountain of old discarded Windows Phones from work, I’d flashed them all to Windows 10, well except for one that was stuck in a ‘happy face boot loop’. In this business we call this foreshadowing.

That’s when I saw this gem, a Nokia Lumia 1520, 32Gb, and in Red. I offered 17.77, and the seller took me up on it!

17.77!
Windows phone 8.10.14266.359

The phone arrived, running Windows 8.1. Needless to say, the store is all shutdown, so loading apps or doing anything fun is basically out of the question. So, the first thing to do is update it. I can’t download the ‘upgrade advisor’ as the 8.1 store has been shut down. Luckily the hand/dandy OTC Updater (otcupdater.zip) to the rescue!

Updating from 8.1

Just connect the phone with USB, run the CLI tool, and it’ll kick off the update.

Updating

A few minutes later, and the gears of progress grind away through the update

Updated to 10.0.10586.170 version 1511

And in no time, I’m up and running Windows 10, build 1511. I go ahead, connect up to WiFi, and run Windows update, and after downloading, updating and then rebooting…

🙁

Oh no, now my 1520 is now doing the unhappy face boot loop. 🙁 indeed.

Searching around, I see the tool to fix this all is the Windows Device Recovery Tool. Although it didn’t work for me. So, I sat there for 3 days watching my ‘new’ 1520 boot looping over and over and over.

I also need the .FFU recovery file, which is thankfully all backed up on lumiafirmware.com

I’m not sure what was going on, but I got a new USB-A cable, and suddenly, running thor manually ….

thor2.exe -mode uefiflash -ffufile \temp\RM937_02540.00019.15235.40003_RETAIL_prod_signed_942_026BB5_O2O-GB.ffu -do_full_nvi_update -do_factory_reset

As it begins, the phone switched to a nice RED

THOR2 loading
THOR2 1.8.2.18
Built for Windows @ 13:36:46 Jun 16 2015
Thor2 is running on Windows of version 6.2
thor2.exe -mode uefiflash -ffufile \temp\RM937_02540.00019.15235.40003_RETAIL_prod_signed_942_026BB5_O2O-GB.ffu -do_full_nvi_update -do_factory_reset
Process started Thu Nov 28 17:12:29 2024
Logging to file C:\temp\thor2_win_20241128171229_ThreadId-42432.log
Debugging enabled for uefiflash

Initiating FFU flash operation
WinUSB in use.
isDeviceInNcsdMode
isDeviceInNcsdMode is false
Device mode 6 Uefi mode
[THOR2_flash_state] Pre-programming operations
Disable timeouts
Get flashing parameters
Lumia Boot Manager detected
Check status of battery
State of charge 61, charging current -338
Protocol version 2.6 Implementation version 2.35
Detecting UEFI responder
HELLO success
Lumia Boot Manager detected
Check status of battery
State of charge 61, charging current -381
Protocol version 2.6 Implementation version 2.35
Booting to FlashApp
Reboot to FlashApp command sent successfully.
Verifying that device is online
Device is online
Detecting UEFI responder
HELLO success
Lumia Flash detected
Protocol version 2.34 Implementation version 2.59
Disable timeouts
Get flashing parameters
Lumia Flash detected
Protocol version 2.34 Implementation version 2.59
Size of one transfer is 2363392
MMOS RAM support: 1
Size of buffer is 2359296
Number of eMMC sectors: 61071360
Platform ID of device: Nokia.MSM8974.P6081.2.2
Async protocol version: 01
Security info:
Platform secure boot enabled
Secure FFU enabled
JTAG eFuse blown
RDC not found
Authentication not done
UEFI secure boot enabled
SHK enabled
Device supports FFU protocols: 0015
Subblock ID 32
[THOR2_flash_state] Device programming started
Using secure flash method
CoreProgrammer version 2015.06.10.001.
Start programming signed ffu file \temp\RM937_02540.00019.15235.40003_RETAIL_prod_signed_942_026BB5_O2O-GB.ffu
FfuReader version is 2015061501
Send FlashApp write parameter: 0x4d544f00
Perform handshake with UEFI...
Flash app: Protocol Version 2.34 Implementation Version 2.59
Unknown sub block detected. Skip...
DevicePlatformInfo: Nokia.MSM8974.P6081.2.2
Unknown sub block detected. Skip...
Unknown sub block detected. Skip...
Supported protocol versions bitmap is 15
Secure FFU sync version 1 supported.
Secure FFU async version 1 supported.
Secure FFU sync version 2 supported.
Secure FFU async version 2 supported.
CRC header v. 1
CRC align bytes. 4
Get CID of the device...
Get EMMC size of the device...
Emmc size in sectors: 61071360
CID: Samsung, Size 29820 MB
ConnSpeedEcho: Elapsed= 0.234000, EchoSpeed= 28.85, Transferred= 7077918 bytes
Get security Status...
Security Status:
Platform secure boot is enabled.
Secure eFUSE is enabled.
JTAG is disabled.
RDC is missing from the device.
Authentication is not done.
UEFI secure boot is enabled.
Secondary HW key exists.
Get RKH of the device...
RKH of the device is 3774964A7E6AC7EF7D428DDC0C0EAD71640B0D8DD3BFC3829110AF2D8ED68D7C
Get ISSW Version...
ISSW Version: 216
Mon Aug 11 15:15:33 EEST 2014;ISSW v0216; main; OS; DNE; KCI 1244; ASIC 8974;
Get system memory size...
Size of system mem: 2097152 KB
Read antitheft status...
Requested read param 0x41545250 is not supported by this flash app version.
Send backup to RAM req...
Clearing the backup GPT...SKIPPED!
Successfully parsed FFU file. Header size: 0x000e0000, Payload size: 0x0000000066a00000, Chunk size: 0x00020000, Header offset: 0x00000000, Payload offset: 0x00000000000e0000
RKH match between device and FFU file!
Option: Skip CRC32 check in use
Start sending header data...
Start sending payload data V2Sbl in async mode...
Percents: 0
........
Percents: 100
lastDescriptorIndex: 13135 lastLocationIndex: 0
Flashing completed successfully! Status: 0x0001
Safe write descriptor index reached: true
Payload data transfer speed (31.94 MB/s) Elapsed time 51.41 sec
Payload data size 1642.022339 MB
Read flashing status..
[IN] programSecureFfuFile. Closing \temp\RM937_02540.00019.15235.40003_RETAIL_prod_signed_942_026BB5_O2O-GB.ffu
Get EMMC write speed...
EMMC write speed: 44244 KB/s
Get data verify speed...
Data verify speed: 42032 KB/s
Send restore backup from RAM req...
programming operation completed!
[THOR2_flash_state] Post programming operations
[THOR2_flash_state] Executing factory reset
[Factory reset result] 0
Factory reset done
[THOR2_flash_state] Executing Full NVI Update
Write flash options ( WriteNvi: Full )

Write parameter to device via UEFI Flash App
Write parameter Ok
Flash options set successfully.

[Full NVI update result] 0
Operation took about 58.00 seconds. Average transfer speed was 29.69 MB/s.

Exited with success

And then with the phone prepped, it then went green:

Green boot state

Now it’s just a matter of having the phone reboot, reset from using Thor yet again

thor2 -mode rnd –bootnormalmode
THOR2 1.8.2.18
Built for Windows @ 13:36:46 Jun 16 2015
Thor2 is running on Windows of version 6.2
thor2 -mode rnd -bootnormalmode
Process started Thu Nov 28 17:15:54 2024
Logging to file C:\Temp\thor2_win_20241128171554_ThreadId-3412.log
Initiating do RnD operations
WinUSB in use.
Debugging enabled for rnd

Detecting UEFI responder
Send HELLO
HELLO success
Lumia Flash App detected
Disable time-outs
Read FlashApp Build Info
Read parameter from UEFI Flash App
Read parameter Ok
FlashApp Build Info: Date:Dec 23 2014 Time:10:56:58 Info:-
Transfer size: 2363392
Sublock ID 31
Buffer size: 2359296
Number of sectors: 61071360
PlatformInfo is Nokia.MSM8974.P6081.2.2
Async protocol version: 01
Security info sublock detected
Platform secure boot enabled
Secure FFU enabled
JTAG eFuse blown
RnD Certificate not found
Authentication not done
UEFI secure boot enabled
SHK enabled
Device supports FFU protocols: 0015
Sublock ID 32
Read Root Key Hash
Read parameter from UEFI Flash App
Read parameter Ok
Root Key Hash is 3774964A7E6AC7EF7D428DDC0C0EAD71640B0D8DD3BFC3829110AF2D8ED68D7C
Read public ID
Read parameter from UEFI Flash App
Read parameter Ok
Public ID is 2D54A10E278A16A38EE918F17BBB88431406FBF5
Protocol version 2.34 Implementation version 2.59
Resetting the device

THOR2_ERROR_CONNECTION_OPEN_FAILED

THOR2 1.8.2.18 exited with error code 84001 (0x14821)

And now I was back in business!

Back from the dead

And we’re so back!

This time I re-ran the OTC Updater to bring me back to Windows 10 10.0.10586.170 version 1511. This time I just decided to keep re-running the OTC Updater.

Windows 10 10.0.14393.1066 Version 1607

I was then able to update to 10.0.14393.1066 Build 1607. Nice!

Windows 10 10.0.14393.2551 Version 1607

And one more update, and now I’m running Windows 10 10.0.14393.2551 Version 1607, aka the last version that OTC can pull.

Well that was fun!

Next up, I signed in, and I was able to retrieve my One Drive. I forgot how nice it was to be able to play music directly from OneDrive, without having to download it to flash. And wow is the UI so snappy. Kind of crazy how old and 32bit bound the old Windows Phones are. Shame Microsoft didn’t believe.

I thought Outlook would surely work, but alas, no dice. It’ll load but not sync. MSN weather, stocks, travel are all dead. Just is the map software (Even on 8.1).

MUST GO FASTER!

Of the purchased apps, Minecraft just sits at the loading screen. Sonic CD, and Final Fantasy load up and run. As does the most coveted game of 2017, Candy Crush Saga still runs as well.

So yeah, it’s nice the paid stuff still works, but with no email it’s now just barely above feature phone level of usefulness.

I guess it’s time to finally just let go.

End of the line

Time to say Goodbye.

FrogFind in trouble!

I saw this post from Action Retro over on twitter, and it just reminds me why we can’t have nice things on the internet. Some jerk is always going to destroy stuff, simply because it takes effort to create, while tearing down things only shows impotent rate.

FrogFind in trouble!

FROGFIND UPDATE: Someone has been hammering the site with a scraper using rotating proxies that I can’t block. It’s pegging my server CPU at 100%. This has caused a service interruption. Working on solutions :'(

So annoying!

However, the source to Frog Find is available on github, so why not self-host a copy?

Since I’m using WordPress (not even touching that crazy WP drama!) I’ve already got a Linux machine running PHP/Apache (good olde LAMP!) so I thought this would be simple as, make a new virtual server, git clone the repo, and add a new entry to the olde DNS & Haproxy servers, and I’d be ready to go live!

[Tue Nov 19 11:35:50.601570 2024] [php:warn] [pid 25997:tid 25997] [client 127.0.0.1:49854] PHP Warning:  require_once(vendor/autoload.php): Failed to open stream: No such file or directory in /srv/www/FrogFind/index.php on line 2

Well, that was disappointing.

Looking at the repo there is this composer.json, so obviously it’s got something to do with that.

Looking around there is an incredible amount of information for installing & using it in your projects, but I don’t know why I struggled to find out how to actually use/deploy it. But it’s super simple, and of course it just needs you to curl & run stuff, which of course will never be used as a vector to spread malware. Never.

Installing composer into the local directory is simple as:

sudo curl -sS https://getcomposer.org/installer | php

And next, just run it with the following flags:

./composer.phar update --no-dev

And that’s it! It’ll get everything needed, and now hitting the site:

Just like that!

Since mine sits behind Cloudflare it locks out old browsers. I wonder about modifying some proxy to use 2 SSL’s to support ancient SSL, and ‘modern’ to proxy stuff, although it sure wouldn’t load new pages, but it could gate to services like a Frog Find on a service like Cloud Flare and modern crypto.

I’d encourage people to run locally hosted on their own LANs a copy of FrogFind. At least that way you won’t be interrupted by jerks.