My father-in-law had a PogoPlug laying around that he never used. I figured may as well take it out of the box or throw it away now. At first glance the link in the product docs was dead so I figured flashing it to run linux was now, in 2024, the only option.
I initially believed that the device was secured to the extent that I needed to hook serial wires into it to do anything but as it turns out, the root password leaked (root:ceadmin) so no hardware modifications were required and I could get into it over ssh with a slightly custom ssh config.
(~/.ssh/config)
```
Host pogo
HostName 192.168.1.50
User root
PasswordAuthentication yes
KexAlgorithms +diffie-hellman-group1-sha1
HostKeyAlgorithms=+ssh-rsa
```
After that I think I downloaded the tools following this guide
https://forum.doozan.com/read.php?3,27280
Then I ran into this guide which included a step by step procedure that could be followed in a coherent manor:
https://web.archive.org/web/20140208000546/https://archlinuxarm.org/platforms/armv5/pogoplug-v2-pinkgray
A few modifications to the procedure were made however. I used a slightly custom command to create the ext3 file system with a label of rootfs because of a line of code I ran into that made me think the bootloader would be searching for partitions with that exact label.
```
mke2fs -L rootfs -j /dev/sda1
```
Further, there was an issue that my POGO-E02 didn't have a wget that was compiled with TLS support and the files were being served in such a manor that the requests to http were automatically being redirected to https. That meant just getting the script to the machine required me to re-serve the script over http instead of https. Rather than configure an nginx reverse proxy, I decided to just use a one-liner to server a local folder over http and just cache assets there with wget since my local machine's wget supported https. This was the one-liner for reference:
```
ruby -run -e httpd .
```
And here's the errors I saw when trying to use wget on https urls:
```
-bash-3.2# wget
https://google.com
wget: not an http or ftp url:
https://google.com
-bash-3.2# busybox wget
BusyBox v1.21.1 (2013-07-08 10:13:48 CDT) multi-call binary.
```
After wgetting install_uboot_mtd0.sh over http, I was able to update the URLs in it to point to my machine's true http server and after a few manual wgets to load up my cache, the script claimed it ran successfully.
I was pretty happy but that's where the guide ran out of luck because as it turns out, Arch Linux couldn't afford to maintain support for Kirkwood chipset and the link to the prior arch linux distro was long dead.
I was at least able to partition and format the USB drive I wound up downloading a more recent version of busybox by following the guide here
https://tcpmeta.wordpress.com/2018/04/01/pogoplug-unlocking/
Once I hit the missing Arch Linux distro problem, I returned to a forum post which included what seemed to be a Debian linux distro that was compiled for the Kirkwood chipset...
https://forum.doozan.com/read.php?2,12096
It was kind of hard to follow, and required references to what I assume was the original guide written on the internet archive's arch linux guide I referenced above, but following the text after "Updated 01 Nov 2023:" and through to the following occurrence of "===============" (as though it was its own web page) revealed a guide specific to installing Debian on POGO-E02.
Mostly what I did was replace the file containing the arch linux distro (which is lost to the internet it seems) with the file containing the Debian distro, Debian-6.5.7-kirkwood-tld-1-rootfs-bodhi.tar.bz2.
I also followed some other instructions somewhere, which I believe were duplicates of what the install_uboot_mtd0.sh had already done, but I wasn't convinced of anything at this point. That involved using fw_setenv to configure mtdparts and ethaddr.
It felt like a pretty sloppy go of it, but I decided it was time to check my work with a reboot. I assumed I bricked it when I lost connection to it. I was out of the house when I ran the reboot command, so couldn't be sure until I got back. When I arrived home, I did a few extra power cycles with and without the Debian USB stick. Still I was getting nothing on my network. "Finally it's a brick and I can justify throwing it out and moving on," I thought to myself, but after connecting to the serial port again, it was still printing out text. Here's what it said:
...
loading uImage ...
** Bad device usb 0 **
loading uInitrd ...
** Bad device usb 0 **
loading DTB /boot/dts/kirkwood-pogo_e02.dtb ...
** Bad device usb 0 **
Wrong Image Format for bootm command
ERROR: can't get kernel image!
```
Does that mean U-Boot is actually installed correctly, but my USB device hasn't been prepared correctly? It was kind of nice before I did the flash because I didn't need to have a usb drive in there to ssh into the machine. Was that feature traded away with the U-Boot upgrade or does that mean the U-Boot flash was botched?