Hardware Hacking ARM

Years ago, I got onto the "Linux on ARM" bandwagon with the purchase of a PandaBoard development platform. I wanted to see if I could get a complete Arch Linux based XFCE desktop to run on the then current smart phone hardware. I had an idea of dual booting a smartphone with Android for phone use and Arch Linux with a keyboard and monitor attached to use as a desktop. Mission accomplished with getting Arch up and running on it. However, graphics drivers for "xorg on Linux" to utilize the on board, closed source GPU hardware, never materialized. I could run a graphical environment using the Linux fbdev driver within the CPU, but it was nowhere near an x68 system with regard to graphical capabilities. The Panda eventually got delegated to a new home in my computer parts storage bin.

Moving forward to more recent times...  During my cancer recovery period, I eventually tapered down the pain meds enough to became coherent and then get bored. I started to play around with computer related stuff to pass the time, which lead to finding an old Pogoplug Mobile I had forgotten about. I had bought this at Wallmart years ago, because after reading the box it sounded interesting. After spending some time setting it up, I was unimpressed, and at that time, not comfortable storing my data online. After a brief trial, it was disconnected and assigned a space next to the Pandaboard in computer parts storage.

Pogoplugs are small network attached devices designed to have USB or SATA storage added. After signing up for an account at the Pogoplug website, you could register your Pogoplug, then the data stored on it would be automatically downloaded and available for access online. Eventually, the free storage service was discontinued and Pogoplug filed for bankruptcy. Over the years after purchasing my Pogoplug, I recalled seeing info on re-purposing [hacking] them by installing a modern version of Linux and using the hardware in various ways, the most common being setup as a NAS system. I was never interested enough in hacking the Pogo to investigate it further until my cancer recovery.

So... I pulled the Pogo out of storage, connected it to the LAN, powered it up and started exploring it's existing Linux system via an ssh connection from my desktop. This was my first experience with an embedded Linux system. After spending some time figuring things out and researching, I began adding capabilities and features to the Pogo via installing the optware package manager. I set up a USB thumb drive linked to the existing Linux file system to allow storage capacity for the added packages. I eventually began editing configuration files to automate some of the settings and mount points for the added capabilities. This eventually became an interesting way to pass the time. I continued to play around with the Pogo's obsolete version of Linux until I eventually broke it. This occurred as a result of edits that didn't work out, to a config file. The breakage lead to more research to figure out how to fix the Pogo that I no longer had ssh access to. I soon learned I needed to setup a serial connection, which involved soldering leads to the Pogo board to connect a USB to TTY serial adapter. I ordered an electronics soldering kit, a serial adapter and with a little work, managed to get the broken Pogo back up and running.

Over the next month or so, I ended up adding several different model Pogo's to my collection, along with some new and used storage hardware for them. This turned out to be a very inexpensive way to get hands on learning to re-purpose [hacking] ARM based hardware via installing and configuring Linux. The Pogoplug's are currently available in several different versions for a fraction of the original prices. They're available from less than $10.00 to around $25.00 per Pogoplug, depending on the source and model.They are usually referred to by their version numbers. They were available in three version numbers, with different options available within those three versions.

Pogoplug Versions

Pogoplug V2   [ ARMv5 Compatible ]

ARM Marvell Kirkwood Single Core 1.2GHz - 256MB Ram

Features: 4 USB Ports, Fastest Processor, Double Ram

 Pogoplug Pink, Gray  [ Note: Reportedly some Pinks are V3 ]


        Processor: ARM926EJ-S rev 1 (v5l)
        CPU Hardware: Feroceon-KW
        Processor: ARM926EJ-S rev 1 (v5l)
        BogoMIPS: 1192.75
        Total Memory: 256MB


Pogoplug V3   [ ARMv6 Compatible ]

ARM Oxnas - Dual Core 700Mhz, 128MB Ram

Features: Internal SATA, Gbit Eth, 4 USB Ports, Wireless Pro Only
 Pogoplug Pro and Classic

    POGO-B01 - Classic
    POGO-B02 - Classic
    POGO-B03 - Classic
    POGO-B04 - Classic

    POGO-P01 - Pro (Wi-Fi)*
    POGO-P02 - Pro (Wi-Fi)*

    POGO-P21 - V3
    POGO-P22 - V3
    POGO-P24 - V3
    POGO-P25 - V3

        Processor: ARMv6-compatible processor rev 5 (v6l)
        CPU Hardware: Oxsemi NAS
        BogoMIPS: 2 x279.34
        Total Memory: 128MB

*Wireless specs = AzureWave AW-NE762H 802.11 b/g/n [mPCI x1 Express] RT3090


Pogoplug V4   [ ARMv5 Compatible ]

ARM Kirkwood - Single Core 800Mhz, 128MB Ram

Features: External SATA [Except Mobile]

 Pogoplug Series 4 and Mobile

    POGO-V4-A1-01   Mobile

        Processor: Feroceon 88FR131 rev 1 (v5l)
        CPU Hardware: Feroceon-KW
        BogoMIPS: 799.5
        Total Memory: 128MB

                                                           Pogoplug v2

                                               Pogoplug v3 Pro

Pogoplug v4 [note logo color difference]

Pogoplug v4 Mobile Hacking:

The first Pogoplug I purchased was back when their website was fully functional. After registering the device, there was an option to enable ssh. The Pogo's out of the box had ssh disabled. With ssh access enabled in the Pogo, I found that the normal ssh <user>@<ip address> command resulted in an error, something about the ssh encryption algorithm. The version of Linux and dropbear ssh server as delivered on the Pogo's is so old, the algorithm it expected for an ssh connection is no longer in use. This required explicitly calling the algorithm with:
# ssh root@192.168.xxx.xxx -oKexAlgorithms=+diffie-hellman-group1-sha1

Login =
root, the password = ceadmin. The first thing needed after logging in is to disable the on-board software the pogo runs that enables interaction with the Pogo
website, auto mounting of USB storage devices, etc.

# killall hbwd

After a bit of exploring the embedded Linux system that comes on the Pogo, I noticed some differences from the typical Linux x86 installs. First was the default shell was
sh rather than bash, which was installed and available. To start bash, just call it from the command line.

# bash

However, the paths were also not properly defined in the environmental variables. Running most of the on board programs from the shell required defining the full path. This
was easily fixed with issuing:

# export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin

The /opt/bin and /opt/sbin were for additional programs that I added added later on. The on-board storage does not have the capacity for this, so linking /opt to a USB thumb
drive and adding a partial file system under it solved that issue. The next difference I noticed was busybox rather than the typical gnu coreutils package installed. It turns
out that
busybox has a much smaller installed footprint and resource requirements compared to coreutils, and it's the standard in embedded Linux devices.

The following is a list of the programs with location, that came on the Pogo v4 mobile:

# ls -a /bin

. chmod dnsdomainname gunzip iplink ls mv pwd stty uname
.. chown echo gzip iproute lsattr netstat rm su usleep
ash cp egrep hostname iprule lzop nice rmdir sync vi
busybox date false hush iptunnel mkdir pidof sed tar zcat
cat dd fdflush ionice kill mknod ping sh touch
chattr df fgrep ip ln more ping6 sleep true
chgrp dmesg grep ipaddr login mount ps stat umount

# ls -a /sbin
. fdisk hotplug ifup iwevent iwspy lsusb mkfs.vfat reboot swapoff udhcpc
.. fsck ifconfig init iwgetid losetup mkdosfs modprobe rmmod swapon zcip
arp getty ifdown insmod iwlist lsmod mke2fs pivot_root route sysctl
depmod halt ifrename iwconfig iwpriv lspci mkfs.ext2 poweroff sulogin tune2fs

# ls -a /usr/bin
. bzcat dirname gdbserver lzopcat od scp tail tr wc yes
.. bzip2 dropbearkey head md5sum passwd seq taskset traceroute wget
[ clear du hexdump mkfifo printf sha1sum tee traceroute6 wget.old
[[ cmp eject ifplugd nc readlink sort telnet tty which
awk cut env iperf nmeter realpath split test uniq who
basename dbclient expr killall nohup renice strings time unlzop whoami
bunzip2 diff fuser less nslookup reset sum top uptime xargs

# ls -a /usr/sbin
. brctl crond flash_erase nandwrite telnetd ubidetach ubimkvol
.. chroot dropbear flash_eraseall rdev ubiattach ubiformat ubinfo

I discovered a simple add on package manager called optware that can be added to the as delivered version of Linux on Pogoplugs. Take a look at the repo to see the list 
of packages. Optware worked well to install nano, a sane command line editor. I found the default editor vi, a real PITA to use. Since the nano install went well, I installed a
bunch of other programs to test things and play around. If there were security updates available for the original Linux install, I may have stayed with it because of optware....
After exploring the limits of the stock Pogo Linux install, it soon became apparent that due to the age, etc, I'd be better off installing a modern up to date version of Linux. 
Both Arch and Debian have ARM versions of Linux available that will run on the Pogo v4. Because most of my Linux experience is with Arch, choosing between the two
was easy. I initially installed Arch ARM on a thumb drive per their instructions. I ran into a show stopper during the Arch install with the instructions being incorrect. The
instruction had you downloaded content onto the Pogo's internal storage. There is not enough extra capacity for this. Download the required data to the attached
storage. Then just modify the instructions as necessary for the different file paths.
I ended up getting a 1TB USB3 hdd for the Pogo v4. Once I partitioned it in ext3 for root and ext4 for /home and /backup, I used rsync to copy the install from the
USB thumb drive to the USB hdd. I don't recall if I had to modify the uboot parameters to boot from the hdd. I set up several Pogo's of different models. Some needed mods
to the uboot parameters and some worked with uboot as installed. If after you research
uboot, and / or if you have issues, Bodhi at the doozan forums is an invaluable
source of ARM Linux and uboot info.
He's also a great guy and always willing to help. Bodhi's a uboot programmer and I believe he's a programmer, developer for Debian
So far, Arch and Debian have ran flawlessly from both hdd's and USB thumb drives on several different versions of Pogos. I bought another Pogo mobile for a backup, and
use my original Pogo mobile as a headless NAS system to send rsync backups from my main x86 desktop. It is somewhat speed limited because of the meager hardware
specs of a Single Core 800Mhz processor and only 128MB Ram. In my use case though, speed isn't an issue. With that said, you can't beat a Pogo for the price, and
the learning experience of hacking them is absolutely priceless.

Serial connection set up:

To modify your Pogo, you'll need to use an ssh connection. In the past, the Pogoplug website allowed you to register your Pogo's. After registering, you had access to a limited amount of free storage along with a web interface for your network connected Pogo's. On the settings page, you could enable ssh. These services have recently been discontinued, so this complicates things.

Now, to enable ssh on your new Pogo's, you'll need to use a TTL serial to USB adapter. Do not confuse this with a rs232 or rs485 to USB adapter, they're not the same. If you'd like details, may I suggest the use of a search engine. The TTL serial to USB adapter you'll need is commonly available for less than $10.00 US. I bought two like the second image, one set up for my Pogo v4's, the other setup for my Pogo v2 and v3's. If you select a TTL serial adapter that uses the PL-2303HX chipset, the drivers are built into the Linux Kernel.

Getting a serial connection on a Pogo v4 requires soldering. The Pogo v2 and v3 have a header on board that accepts a CD / DVD drive audio cable. See gray cable picture below. I had a few used audio cables in my spare computer parts, but you can also buy them. The white end plugs into the header on the Pogo board, the black end can either plug directly into a TTL serial to USB adapter, or as I did, you can desolder a
compatible sized pin header from an old computer component to reuse use as a connector.


             CD / DVD audio cable

                    v4 mobile TTL solder locations              
                                        TTL Connector
Soldered TTL connector

After soldering the leads to my Pogo's, I hot glued them to the bottom of the board to prevent movement at the solder joints. In the center photo above, I had the leads secured with clear packing tape while testing. I notched the case below the network cable connector to route the wires through, for a permanent external connector. The leads with the tiny end connectors were some used computer parts I had on hand.

Establishing A Serial Connection:

This will assume you are running Linux on the computer you will use to establish a serial connection. I use Arch Linux, so some details may be slightly different for different versions of Linux. You will need to use something as an interface for the connection. I used picocom in this example because of it's simplicity and ease to setup. I've used minicom for past projects and you could use for this as well. To use picocom /dev/ttyUSB0 as non root user, I had to configure some things on my Arch install. I needed to figure out what group to add my user to, to have permission to run picocom on /dev/ttyUSB0. To get the group, I ran:

# ls -l /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 0 Nov 27 19:53 /dev/ttyUSB0

The group was uucp, so I added my user to it:

# gpasswd -a jeff uucp
Adding user jeff to group uucp

This allowed me to use picocom for the connection as user rather than root.  Next, connect the USB to serial cable between your Linux box and the powered down Pogo.
I issued the following command to get picocom ready to receive data as shown below.


$ picocom -b 115200 /dev/ttyUSB0
picocom v2.2

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        :
omap is        :
emap is        : crcrlf,delbs,

Type [C-a] [C-h] to see available commands

Terminal ready


Now power up the Pogo. You'll see the uboot output, system starting output, and if everything works right, you'll end up at a root user prompt, ready for input. I noticed some subtle differences between the root user configuration between the serial connection and an ssh login. The env variables were different and the prompt appeared different. However, it's been awhile since running the Pogo version of Linux, I'm going off memory, and I simply don't recall all the little details.

You can do nearly anything from the serial connection command line. Anything as in making repairs, starting the dropbear ssh server, performing uboot boot loader modifications or install, to installing Linux. Shown below is the output of a Pogo v4 mobile booting prior to modifications, sent via TTL serial to picocom.

U-Boot 1.1.4 (Oct  1 2011 - 12:21:35) Cloud Engines 1.1.2 (3.4.27) PHYADDR=0

U-Boot code: 00600000 -> 0067FFF0  BSS: -> 006918B4

Soc: 88F6192 A1 (DDR2)
CPU running @ 800Mhz L2 running @ 400Mhz
SysClock = 200Mhz , TClock = 166Mhz

DRAM CAS Latency = 3 tRP = 3 tRAS = 8 tRCD=3
DRAM CS[0] base 0x00000000   size 128MB
DRAM Total size 128MB  16bit width
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 7M): Done
Flash:  0 kB

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

USB 0: host mode
PEX 0: interface detected no Link.
Net:   egiga0 [PRIME]
Hit any key to stop autoboot:  0

Loading from NAND 128MB 3,3V 8-bit, offset 0x200000
   Image Name:   Linux-
   Created:      2011-08-23  20:00:55 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2080956 Bytes =  2 MB
   Load Address: 00008000
   Entry Point:  00008000
## Booting image at 00800000 ...
   Image Name:   Linux-
   Created:      2011-08-23  20:00:55 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2080956 Bytes =  2 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK

Starting kernel ...

Uncompressing Linux........................................................................................................ done, booting the kernel.
[    0.000000] Linux version (afenn@kt) (gcc version 4.3.2 (sdk3.3-ct-ng-1.4.1) ) #4 Tue Aug 23 13:00:50 PDT 2011
[    0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=00053977
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine: Feroceon-KW
[    0.000000] Using UBoot passing parameters structure
[    0.000000] Ignoring unrecognised tag 0x41004345
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 32512
[    0.000000] Kernel command line: console=ttyS0,115200 root=ubi0:rootfs ubi.mtd=4,2048 rootfstype=ubifs
[    0.000000] PID hash table entries: 512 (order: 9, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 128MB = 128MB total
[    0.000000] Memory: 118356KB available (3852K code, 261K data, 124K init, 0K highmem)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:128
[    0.000000] Console: colour dummy device 80x30
[    0.000000] Calibrating delay loop... 799.53 BogoMIPS (lpj=3997696)
[    0.230000] Mount-cache hash table entries: 512
[    0.230000] CPU: Testing write buffer coherency: ok
[    0.230000] NET: Registered protocol family 16
[    0.230000] Feroceon L2: Enabling L2
[    0.230000] Feroceon L2: Cache support initialised.
[    0.230000]
[    0.230000] CPU Interface
[    0.230000] -------------
[    0.230000] SDRAM_CS0 ....base 00000000, size 128MB
[    0.230000] SDRAM_CS1 ....disable
[    0.230000] SDRAM_CS2 ....disable
[    0.230000] SDRAM_CS3 ....disable
[    0.230000] PEX0_MEM ....base e0000000, size 128MB
[    0.230000] PEX0_IO ....base f2000000, size   1MB
[    0.230000] PEX1_MEM ....no such
[    0.230000] PEX1_IO ....no such
[    0.230000] INTER_REGS ....base f1000000, size   1MB
[    0.230000] NFLASH_CS ....base fa000000, size   2MB
[    0.230000] SPI_CS ....base f4000000, size  16MB
[    0.230000] BOOT_ROM_CS ....no such
[    0.230000] DEV_BOOTCS ....no such
[    0.230000] CRYPT_ENG ....base f0000000, size   2MB
[    0.230000]
[    0.230000]   Marvell Development Board (LSP Version KW_LSP_5.1.3_patch18)-- RD-88F6192A-NAS  Soc: 88F6192 A1 LE
[    0.230000]
[    0.230000]  Detected Tclk 166666667 and SysClk 200000000
[    0.230000] Marvell USB EHCI Host controller #0: c403e740
[    0.730000] PEX0 interface detected no Link.
[    0.730000] PCI: bus0: Fast back to back transfers enabled
[    0.730000] mvPexLocalBusNumSet: ERR. Invalid PEX interface 1
[    0.750000] bio: create slab <bio-0> at 0
[    0.750000] SCSI subsystem initialized
[    0.750000] usbcore: registered new interface driver usbfs
[    0.750000] usbcore: registered new interface driver hub
[    0.750000] usbcore: registered new device driver usb
[    0.750000] NET: Registered protocol family 2
[    0.750000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.750000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    0.750000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    0.750000] TCP: Hash tables configured (established 4096 bind 4096)
[    0.750000] TCP reno registered
[    0.750000] NET: Registered protocol family 1
[    0.750000] cpufreq: Init kirkwood cpufreq driver
[    0.760000] XOR registered 4 channels
[    0.760000] XOR 2nd invalidate WA enabled
[    0.760000] cesadev_init(c000d7fc)
[    0.760000] mvCesaInit: sessions=640, queue=64, pSram=f0000000
[    0.760000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.770000] msgmni has been set to 231
[    0.770000] alg: No test for cipher_null (cipher_null-generic)
[    0.770000] alg: No test for ecb(cipher_null) (ecb-cipher_null)
[    0.770000] alg: No test for digest_null (digest_null-generic)
[    0.770000] alg: No test for compress_null (compress_null-generic)
[    0.780000] alg: No test for stdrng (krng)
[    0.780000] alg: No test for hmac(digest_null) (hmac(digest_null-generic))
[    0.790000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    0.790000] io scheduler noop registered
[    0.790000] io scheduler anticipatory registered (default)
[    0.790000] Initializing ths8200_init
[    0.790000] Initializing dove_adi9889_init
[    0.810000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.810000] serial8250.0: ttyS0 at MMIO 0xf1012000 (irq = 33) is a 16550A
[    0.810000] console [ttyS0] enabled
[    0.820000] Integrated Sata device found
[    0.830000] IRQ 21/mvSata: IRQF_DISABLED is not guaranteed on shared IRQs
[    0.850000] scsi0 : Marvell SCSI to SATA adapter
[    0.860000] scsi1 : Marvell SCSI to SATA adapter
[    0.870000] Loading Marvell Ethernet Driver:
[    0.870000]   o Cached descriptors in DRAM
[    0.880000]   o DRAM SW cache-coherency
[    0.880000]   o 1 Giga ports supported
[    0.880000]   o Single RX Queue support - ETH_DEF_RXQ=0
[    0.890000]   o Single TX Queue support - ETH_DEF_TXQ=0
[    0.890000]   o TCP segmentation offload (TSO) supported
[    0.900000]   o Large Receive offload (LRO) supported
[    0.900000]   o Receive checksum offload supported
[    0.910000]   o Transmit checksum offload supported
[    0.910000]   o Network Fast Processing (Routing) supported - (Disabled)
[    0.920000]   o Driver ERROR statistics enabled
[    0.930000]   o Proc tool API enabled
[    0.930000]   o SKB Reuse supported - (Disabled)
[    0.930000]   o SKB Recycle supported - (Disabled)
[    0.940000]   o Rx descripors: q0=128
[    0.940000]   o Tx descripors: q0=532
[    0.950000]   o Loading network interface(s):
[    0.950000]      o register under mv88fx_eth platform
[    0.960000]      o eth0, ifindex = 2, GbE port = 0
[    0.960000]
[    0.960000] mvFpRuleDb (c45b2000): 1024 entries, 4096 bytes
[    0.970000] Counter=0, opIdx=6, overhead=16
[    0.970000] Counter=1, opIdx=2, overhead=0
[    0.980000] Counter=2, opIdx=1, overhead=18
[    0.980000] Counter=3, opIdx=2, overhead=0
[    0.990000] tun: Universal TUN/TAP device driver, 1.6
[    0.990000] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[    1.000000] NAND device: Manufacturer ID: 0xad, Chip ID: 0xf1 (Hynix NAND 128MiB 3,3V 8-bit)
[    1.010000] Scanning device for bad blocks
[    1.060000] Using static partition definition
[    1.060000] Creating 5 MTD partitions on "nand_mtd":
[    1.070000] 0x000000000000-0x000000200000 : "u-boot"
[    1.070000] 0x000000200000-0x000000500000 : "uImage"
[    1.080000] 0x000000500000-0x000000800000 : "uImage2"
[    1.080000] 0x000000800000-0x000001000000 : "failsafe"
[    1.090000] 0x000001000000-0x000008000000 : "root"
[    1.100000] UBI: attaching mtd4 to ubi0
[    1.100000] UBI: physical eraseblock size:   131072 bytes (128 KiB)
[    1.110000] UBI: logical eraseblock size:    126976 bytes
[    1.110000] UBI: smallest flash I/O unit:    2048
[    1.120000] UBI: sub-page size:              512
[    1.120000] UBI: VID header offset:          2048 (aligned 2048)
[    1.130000] UBI: data offset:                4096
[    1.350000] UBI: attached mtd4 to ubi0
[    1.360000] UBI: MTD device name:            "root"
[    1.360000] UBI: MTD device size:            112 MiB
[    1.360000] UBI: number of good PEBs:        896
[    1.370000] UBI: number of bad PEBs:         0
[    1.370000] UBI: max. allowed volumes:       128
[    1.380000] UBI: wear-leveling threshold:    4096
[    1.380000] UBI: number of internal volumes: 1
[    1.390000] UBI: number of user volumes:     1
[    1.390000] UBI: available PEBs:             0
[    1.400000] UBI: total number of reserved PEBs: 896
[    1.400000] UBI: number of PEBs reserved for bad PEB handling: 8
[    1.410000] UBI: max/mean erase counter: 1/0
[    1.410000] UBI: image sequence number: 0
[    1.420000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.420000] ehci_marvell ehci_marvell.70059: Marvell Orion EHCI
[    1.430000] ehci_marvell ehci_marvell.70059: new USB bus registered, assigned bus number 1
[    1.440000] UBI: background thread "ubi_bgt0d" started, PID 451
[    1.470000] ehci_marvell ehci_marvell.70059: irq 19, io base 0xf1050100
[    1.490000] ehci_marvell ehci_marvell.70059: USB 2.0 started, EHCI 1.00
[    1.490000] usb usb1: configuration #1 chosen from 1 choice
[    1.500000] hub 1-0:1.0: USB hub found
[    1.500000] hub 1-0:1.0: 1 port detected
[    1.510000] Initializing USB Mass Storage driver...
[    1.510000] usbcore: registered new interface driver usb-storage
[    1.520000] USB Mass Storage support registered.
[    1.520000] usbcore: registered new interface driver ums-datafab
[    1.530000] usbcore: registered new interface driver ums-freecom
[    1.530000] usbcore: registered new interface driver ums-jumpshot
[    1.540000] usbcore: registered new interface driver ums-sddr09
[    1.550000] usbcore: registered new interface driver ums-sddr55
[    1.550000] usbcore: registered new interface driver ums-usbat
[    1.560000] mice: PS/2 mouse device common for all mice
[    1.560000] i2c /dev entries driver
[    1.580000] sdhci: Secure Digital Host Controller Interface driver
[    1.580000] sdhci: Copyright(c) Pierre Ossman
[    1.590000] mmc0: mvsdio driver initialized, using GPIO 27 for card detection
[    1.600000] usbcore: registered new interface driver usbhid
[    1.600000] usbhid: v2.6:USB HID core driver
[    1.610000] TCP cubic registered
[    1.610000] NET: Registered protocol family 17
[    1.620000] RPC: Registered udp transport module.
[    1.620000] RPC: Registered tcp transport module.
[    1.630000] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    1.700000] UBIFS: recovery needed
[    1.770000] UBIFS: recovery completed
[    1.770000] UBIFS: mounted UBI device 0, volume 0, name "rootfs"
[    1.780000] UBIFS: file system size:   110850048 bytes (108252 KiB, 105 MiB, 873 LEBs)
[    1.790000] UBIFS: journal size:       9023488 bytes (8812 KiB, 8 MiB, 72 LEBs)
[    1.790000] UBIFS: media format:       w4/r0 (latest is w4/r0)
[    1.800000] UBIFS: default compressor: lzo
[    1.800000] UBIFS: reserved for root:  0 bytes (0 KiB)
[    1.810000] VFS: Mounted root (ubifs filesystem) on device 0:11.
[    1.820000] Freeing init memory: 124K
[    1.880000] usb 1-1: new high speed USB device using ehci_marvell and address 2
[    2.060000] usb 1-1: configuration #1 chosen from 1 choice
[    2.070000] scsi2 : SCSI emulation for USB Mass Storage devices
[    4.230000] eth0: started
udhcpc (v1.16.1) started
HWADDR 00 0x25 0x31 0x05 0x8d 0x63
PIP0 141
PIP1 99
cat: can't open '/etc/resolv.conf': No such file or directory
route: SIOCDELRT: No such process
grep: /etc/resolv.conf: No such file or directory
Sending discover...
[    7.080000] scsi 2:0:0:0: Direct-Access     Kingston DataTraveler 2.0 PMAP PQ: 0 ANSI: 6
[    7.100000] sd 2:0:0:0: [sda] 30240768 512-byte logical blocks: (15.4 GB/14.4 GiB)
[    7.110000] sd 2:0:0:0: [sda] Write Protect is off
[    7.110000] sd 2:0:0:0: [sda] Assuming drive cache: write through
[    7.120000] sd 2:0:0:0: [sda] Assuming drive cache: write through
[    7.130000]  sda:
[    7.140000] sd 2:0:0:0: Attached scsi generic sg0 type 0
[    7.220000]  sda1
[    7.240000] sd 2:0:0:0: [sda] Assuming drive cache: write through
[    7.240000] sd 2:0:0:0: [sda] Attached SCSI removable disk
Sending discover...
Sending discover...
HWADDR 00 0x25 0x31 0x05 0x8d 0x63
PIP0 141
PIP1 99
No lease, forking to background
modprobe: module 'vfat' not found
[   13.850000] ufsd: module license 'Commercial product' taints kernel.
[   13.860000] Disabling lock debugging due to kernel taint
[   13.890000] ufsd: driver 8.5 (NTFS4LINUX_U85_017_S[2011-08-17-16:51:48]) LBD=ON with delayalloc with ioctl loaded at bf000000
[   13.890000] NTFS support included
[   13.890000] Hfs+/HfsX support included
[   13.890000] For 'CloudEngines_PogoPlug_2011-08-03'
Loading rt3070sta.ko:        [   14.230000] rtusb init rt2870 --->
[   14.240000] usbcore: registered new interface driver rt2870
Loading xce.ko:              [   14.260000] Cloud Engines XCE Init [Version:]
[   14.270000] XCE: CPU MEMORY MAP:
[   14.270000] XCE:   -- 0x00001000 - 0xbeffffff (3055 MB)  User Space Mappings
[   14.280000] XCE:   -- 0xbf000000 - 0xbfffffff (  16 MB)  Kernel module space
[   14.290000] XCE:   -- 0xc0000000 - 0xc7ffffff ( 128 MB)  Kernel direct-mapped ram
[   14.290000] XCE:   -- 0xc8800000 - 0xe7ffffff ( 504 MB)  Kernel vmalloc space
[   14.300000] XCE:   -- 0xe8000000 - 0xfeffffff ( 367 MB)  Kernel platform space
[   14.310000] XCE: CPU FEATURES:
[   14.310000] XCE:   -- I Cache:         enabled
[   14.310000] XCE:   -- D Cache:         enabled
[   14.320000] XCE:   -- Branch Predict:  disabled
[   14.320000] XCE:   -- MMU:             enabled
[   14.330000] XCE:   -- Alignment Abort: enabled
[   14.340000] XCE: BLPARAMS:   -- Loading properties [c4bf1efc].
[   14.340000] XCE: BLPARAMS:   -- MTD @ [c45c0c00].
[   14.350000] XCE: BLPARAMS: Locating parameter block...
[   14.350000] XCE: BLPARAMS: reading 2048 bytes @ a0000
[   14.360000] XCE: Loaded Property Size: 2048
[   14.360000] XCE:    - 'cesvcid' -> 'FNVXHNXQT9SD3Z6VYK66CEXL8J'
[   14.370000] XCE:    - 'ceboardver' -> 'PPV4A1'
[   14.370000] XCE:   -- ICache Prefetch: enabled
[   14.380000] XCE:   -- DCache Prefetch: enabled
[   14.380000] XCE:   -- L2 Cache:        enabled
[   14.390000] XCE:   -- L2 Prefetch:     disabled
[   14.390000] XCE:   -- L2 Writethrough: disabled
[   14.400000] XCE:   -- Write Allocate:  disabled
[   14.400000] XCE:   -- Streaming:       disabled
[   14.410000] XCE: Current GPIO State:
[   14.410000] XCE:  GPIO L OUT:    0x01e18400
[   14.410000] XCE:  GPIO L OE:     0xfe004800
[   14.420000] XCE:  GPIO L BLINK:  0x00000000
[   14.420000] XCE:  GPIO L POL:    0x08000000
[   14.430000] XCE:  GPIO L IN:     0x31e00000
[   14.430000] XCE:  GPIO H OUT:    0x00000008
[   14.430000] XCE:  GPIO H OE:     0x00000005
[   14.440000] XCE:  GPIO H BLINK:  0x00000000
[   14.440000] XCE:  GPIO H POL:    0x00000000
[   14.450000] XCE:  GPIO H IN:     0x00000008
Starting hbplug:             Success
[   14.510000] kjournald starting.  Commit interval 5 seconds
[   14.550000] EXT3 FS on sda1, internal journal
[   14.560000] EXT3-fs: recovery complete.
[   14.560000] EXT3-fs: mounted filesystem with writeback data mode.
/ #

More Details Coming:

Installing Arch ARM on Pogo v2
  -  Installed uboot for Pogo v2, then ran off USB thumb drive made earlier for Pogo v4.

Installing Debian ARM on Pogo v3 Pro - Installed to USB following bodhi's guide - Dozan Forums, then modified uboot to boot from SATA hdd after  rsync copy from USB to hdd.

Additional Info:

The Doozan Forums   Excellent Forum for Debian ARM, uboot, all ARM Based Hardware Hacking

Arch Linux ARM    Arch Linux ARM for v2, v4 Pogos, and other ARM Based Hardware

picocom -b 115200 /dev/ttyUSB0