Pogoplug
I'm sure I'm not the only one who is apprehensive about uploading family pictures and home movies to on-line services like Facebook or YouTube. As we all know, once something is on the Internet, it's out of our control, and who knows where it will turn up next. On the other hand, the Internet is a great way to share media with friends and family. The more technically savvy among us certainly can figure out how to host media on servers that we control, but most people need a box they can plug in that “just works”. And, that's what Cloud Engine's Pogoplug does.
The Pogoplug is a box the size of a Wi-Fi router that has a Gigabit Ethernet port and four USB ports (one on the front and three on the back). Inside is an ARM processor running Linux kernel version 2.6.22—all this, and it's pink! Yes, I said pink. The case is white with a clear acrylic shell, trimmed in pink, with a cable management clip in the back of the device. Overall, it's rather Apple-esque (Figure 1).
Figure 1. Pogoplug (from Cloud Engine's Web site)
My review unit came with a bag of microwave popcorn and a simple note saying to go start the popcorn, then come back and follow the Pogoplug setup instructions. The note boasted that the Pogoplug would be ready before the popcorn, and it was. Once I connected power, networking and a USB hard drive, which I happened to have on hand, all I had to do was go to my.pogoplug.com and enter the device's ID, my e-mail address and a password. A couple seconds later, it was ready to go. From that point on, all I had to do was supply my e-mail address and password to access the device. This is the kind of simplicity most people expect from consumer electronics.
Once the device finished booting, it began scanning the attached storage for pictures, movies and music files. It wasn't long before I was uploading media to the device and making it available to various friends and family. At this point, it was all pretty intuitive, though by no means sophisticated. I was able to grant either read-write or read-only access on a directory basis—real simple. When I granted access to people, they received an e-mail message telling them how to access the shared media. When my friends clicked on the hyperlink, they were able to preview or download various files I had made available to them. From their points of view, it was just another Web page; from my point of view, it was a server that I controlled.
All interaction with the Pogoplug is through a single Web site, my.pogoplug.com. This Web site is able to access your device, or devices, and present you with an easy-to-use Web interface. You don't even need to know your device's IP address (Figure 2). In the center of the page, you see thumbnail previews of some movies and a music file that I uploaded. When you mouse over a thumbnail, a pop-up menu appears that lets you either preview (Figure 3), download or remove the file. Along the left side of the page, under My Media, are various media categories. These links simply show a filtered view of all of the files on the device. Under Show my files, there are a few other ways of accessing media files on the device. Maybe it's the nerd in me, but I prefer to access the drives directly, from the My library section. Here, I have two thumbdrives plugged in (middle left-hand side of Figure 2).
Across the bottom of the page are buttons that allow you to change how the device displays your file lists, as well as buttons that let you upload new files, create folders and copy files from one folder to another. There's also a Sharing button. This is the button you press when you want to grant other people access to a directory.
When you click on the Sharing button, you are presented with a screen that allows you to turn sharing on or off for the current folder. If sharing is on, you can invite people to access the share. Also, you can see who has access, and whether it's full access or read-only access. Additionally, this is the screen where you configure the social-networking features of the Pogoplug.
Most of my friends and family use Facebook to keep in touch, so I was intrigued to hear that the Pogoplug would integrate with Twitter, Facebook and MySpace. I decided to check out the Facebook feature. Once I supplied my Facebook user name and password, the device posted a news article to my “wall” any time I added files to the shared directory. Obviously, this would be a great way for the grandparents to keep up with all the grandkids.
Okay, so how does it work, really? As soon as the device boots up, it calls home via what looks like a TCP-based VPN. From that point, the device is able to respond to commands, such as “Tell me what services you are providing” or “Delete a file.” It's important to note that this is a free service, and that your files stay on your device and don't simply get uploaded to Cloud Engine's servers. But, one of the nice things about this architecture is that the Cloud Engine Web site is a central point of interaction with your Pogoplug device, or devices. This also enables you, the consumer, to write Web service requests from any Web page that can interact with your Pogoplug (I'll come back to this in a minute).
The dark side of this architecture is that cloud computing could become a potential single source of failure. If Cloud Engine went out of business, this infrastructure would go away also. However, to mitigate this threat and to dissuade fears, Cloud Engine has put its source tree in escrow to be released to the public if need be. In the meantime, Cloud Engine uses this infrastructure to distinguish its product from other similar devices. In fact, chatter on the Pogoplug user forums indicates that the infrastructure is being developed and improved actively. What I've gleaned from reading the forums is that Cloud Engine can push upgrades to the device—meaning that the Pogoplug is basically a managed device, but the owner maintains complete control.
Sadly, the device doesn't ship with a native Samba or NFS server. The device is targeted at people for whom this much configuration would be too much. But, there is a filesystem driver available for download that runs on Linux, Windows and Mac. I installed it on my Linux workstation and my wife's Windows laptop, and it worked quite well.
So although the device is designed simply to work right out of the box with little or no configuration, it still is quite hackable by more sophisticated users. However, you first have to determine what the device's IP address is, and this isn't to be found anywhere on the device's Web site! I had to ask my DHCP server. Armed with the IP address, I was able to ssh into the machine as root using the default password, ceadmin. This is a reasonably secure configuration, because presumably, the device will be behind your NAT router and not accessible from the outside world. However, I'm told that after March 16, 2010, SSH will be turned off by default, but users will be able to enable it through the Web interface.
Earlier, I alluded to the ability to send Web service requests to a Pogoplug. Cloud Engine's Web site documents how this is done and provides a fairly complete API for interacting with a Pogoplug. With a little bit of reading, I was able to perform some basic functions in only a few minutes.
First, you have to authenticate via the service.pogoplug.com Web site. This is done by sending an HTTP GET request with this structure:
http://service.pogoplug.com/svc/api/ ↪loginUser?email=user@example.com&password=supersecret
You can see that the only parameters are your e-mail address and the password you use to access the device. The server will reply with a JavaScript object that contains various pieces of information, including a valtoken field, which contains an authentication token. You simply include that token in subsequent requests, such as:
http://service.pogoplug.com/svc/api/ ↪listDevices?valtoken=5LfDTCKNZRoi86Ifdd
This request results in another JavaScript object detailing the hardware that's plugged in to my device:
{"devices": [{"deviceid" :"UZHTREWJF52ZMN", "type" :"xce:unknown", "name" :"Pogoplug", "version" :"LINUX POGOPLUG - 2.0.3", "flags" :"0", "ownerid" :"228d65951f3fe1ff6c", "owner" : {"userid" :"228d6fe1ff6c", "screenname" :"user@example.com", "email" :"user@example.com", "flags" :"sawoobe,gv=m,", "emails" :[{"address" :"user@example.com", "validated" :"1", "default" :"0"}], "options" :[{"name" :"disablehoverprev", "value" :"1"}, {"name" : "slideshare_4dDxYuUonfJQ"}]}, "sku" :{"skuid" :"3", "oem" :"Cloud Engines", "name" :"POGO-TEST", "user" :"Pogoplug", "terms" :"0"}, "terms" :"0", "valstart" :"0", "valend" :"0", "services" :[{"deviceid" :"UZHTRETF52ZMN", "serviceid" :"Yxg9f32P-mcuVzIIZRKRAQ", "sclass" :"1", "type" :"xce:plugfs:vfat", "name" :"KINGSTON", "version" :"LINUX POGOPLUG - 2.0.3", "online" :"1", "msgpending" :"0", "apiurl" :"http://10.0.1.52:3333/...", "space" :"1358462976/1999044608", "flags" :"12288"}]}]}
You can see that it would be pretty usable inside a JavaScript program. I haven't looked at the API documentation with an eye toward writing a particular application, but it seems pretty complete and well documented.
As is, the Pogoplug is a simple file server, but thanks to OpenPogo (which is now known as PlugApps), you actually can extend the device's functionality. By default, the root filesystem is mounted read-only, but once the filesystem is remounted read-write, you can mount an attached USB hard drive manually. Then, you download the PlugApps tarball and extract it onto the mounted filesystem.
Once PlugApps is installed, you can install additional packages using the ubiquitous ipkg package manager. From here, it's pretty easy to imagine a Samba, Firefly or CUPS server running on the device. But, the neat thing about the way the installation is done is that it doesn't overwrite the existing filesystem. This means you don't lose any of the benefits of the Cloud Engine infrastructure.
Overall, I think the Pogoplug is a neat little device, but it does have some negatives. I was really hoping to be able to plug in my digital camera and have the Pogoplug recognize it as a regular USB hard drive and publish my pictures. This would have been a great way to offload photos and make them available to friends and family in one operation. Alas, that didn't work, but it probably has more to do with my camera than the Pogoplug. When I pulled the memory card out of the camera and put it in a USB card reader, it worked like a charm.
By itself, the device is very attractive-looking. However, all of the equipment in my LAN closet is black, as is most of the equipment on my desk in my office. Even my entertainment system is black. Against these black backgrounds, this pink Pogoplug kind of sticks out like a sore thumb. This leads me to wonder how hard it would be to offer different colored skins for the device. I'd snap up a black skin in a heartbeat, although I'm sure other designs, such as camouflage, might be popular. On the other hand, I have to admit, it is quite the conversation piece.
The configuration was designed to be simple, and I'd venture to say that it actually might be too simple. I'd like to be able to associate comments with the various files I upload. Also, the categories Movies, Photos, Music and Slideshows are a bit limiting, as I also have documents and spreadsheets that I share. Finally, the ability to organize my music collection better would be very much welcome.
That said, the Pogoplug is an extremely easy device to set up and use. This $130 device eliminates virtually all the hassle of sharing media, controlling access and telling my friends and family when I've uploaded new baby pictures, for example. My plan for the device is to tuck it away in the corner of my LAN closet and post some shares for family pictures. I'll also post a share for just our immediate family, where we'll store genealogy data that my wife can collaborate on with her father on the other side of the country. I'll probably also set up a share for my favorite YouTube videos. With the Pogoplug in place, my wife and kids may not have to interact directly with my main server anymore, but they'll still have convenient access to the stuff they want.
Mike Diehl is a contract programmer and consultant in Albuquerque, New Mexico. Mike lives with his wife and three small boys and can be reached via e-mail at mdiehl@diehlnet.com.