How to transfer photos from a Game Boy Camera to a computer (in Linux)

A few days ago, I found a Flickr group thread that was practically begging for my input. It read something like “Hey Everett, you’re surprisingly enough not the only person out there with these two interests (one obscure and the other semi-so). Would you be willing to help out quite possibly the only other person in the world who cares about these things?”

Not only was I like, “Heck  yeah!,” but I decided that this was worthy of blogging, in case a third individual happens to develop these interests. (If this is you, welcome!)

So, in case you find yourself wanting to get crappy photos—a term I use most affectionately—like these:

off of one of these:

red Game Boy Camera

and you use Linux:

(I kid!)

…like I do, read on.

The hardware I’m using to download photos over USB is SmartBoy USB cartridge reader (which is made by these people). And there just so happens to be a great open-source program for facilitating this task using this device (or a similar cartridge reader): gbcflsh.

So what’s the problem? gbcflsh is only distributed as source, and the source fails to compile under recent releases of Ubuntu. I contacted the developers of gbcflsh, and one gave me some suggestions for fixing the source code. They have yet to publish the fixed source, so I’ll document how I got it to compile.

(If you don’t care about this, just grab the binary I made: gbcflsh 32-bit, md5sum: 85b185706c3d5fe45b7787787f8510bd; gbcflsh 64-bit, md5sum: 4326e08fcfb5be39004c290df2a71988)

  1. Download and extract the source code.
  2. Install the following packages:
    gcc 4.3.3, qt4-dev-tools, libftdi-dev
  3. Focus on the following files:
    src/Logic.cpp
    src/ReadFlashThread.cpp
    src/ReadRamThread.cpp
    src/WriteFlashThread.cpp
    src/WriteRamThread.cpp
  4. Add the following to the bottom of the #include section of each file:
    #include <cstdio>
  5. That’s it! Compile it like you already know how to do (which I won’t get into here).

gbcflshWhen you run gbcflsh (you’ll need to do so as root, by the way), it’ll look a little bit like what you see to the right. Select the visible options (USB, Auto, Ram: 128 KB) and click “Read RAM.”

If all goes well, you’ll end up with the contents of your camera’s RAM in the form of a .sav file. Great! The hard part is behind us, but we’re not quite done yet.

Next, you’ll need a program that will extract photos from the save file. I believe there are a few, but they all seem to be for Windows. Fortunately, the one I use works perfectly under Wine. gbcameradumpIt’s called GBCameraDump.exe, and it can currently be found here. Download it, run it via Wine and select the .sav file you got from gbcflsh. You’ll have something that looks like this screenshot (except hopefully with better photos).

I would also advise you to — if this sort of thing matters to you — check the order of the saved images. They’re likely to be out of order due to, it seems, the way Nintendo decided to handle the saving of images to the cartridge. (Also, you’re likely to find some photos you thought were deleted, which may come as a surprise.)

So there you have it: how to get photos off of this camera of the past, using the operating system of the (sigh) future.

How Windows ate my EXIF data (and how I mostly fixed it)

The background

As we’ve already established, I love to take photos, and I have a strong bias toward digital. While I received my first digital camera (the aforementioned Game Boy Camera) on my birthday in 2000, it wasn’t until the following summer that I got my first “real” digicam, a Nikon Coolpix 775.

From there, the flood of digital photos began. Initially, I just dumped every photo into a single folder on my shiny, new, gonna-help-me-do-well-in-college-this-fall laptop, and let their sequential filenames (DSCN0001.JPG, 0002, etc.) do the “sorting.”

This worked for a while, until it became clear that having all of my photos in one folder was poor for both organization and performance, so I started organizing my photos using dated subfolders (e.g. photos/2001/2001-08-12/). This was all the organization I did for my photos, and was also how  I viewed them, up until I began using photo managing software (first Picasa on Windows, later F-Spot under Ubuntu).

The problem

While these apps excel at taking photos and turning them into a well-organized stream based on date taken, I noticed that a small handful of photos were out-of-place in the timeline.1

After spending some time puzzled by this, it occurred to me that:

  1. none of these photos had EXIF data
  2. all of these were taken in 2001
  3. all of these had been taken in “portrait” mode (when you turn the camera sideways), as opposed to “landscape”

In an example of clearly misguided, youthful indiscretion, I had manually rotated these photos—remember, cameras didn’t have orientation sensors back then—using Windows Picture & Fax Viewer (Windows ME/XP’s default), and it ate my photos’ EXIF data! From then on, I started using the camera’s built-in rotate functionality.

But, ugh, I still had a bunch of old, messed up photos. Fortunately, I wasn’t totally in the dark about these photos’ chronology, as I knew the correct dates that these photos were taken, thanks to the surrounding sequential photos still having their EXIF data.

The solution

For the last few years, I let these few photos just be, annoyed that they would always show up in the wrong places. So today, I finally did something about this: I gave them new EXIF data using the best information I had at my disposal.

While I didn’t know the precise time taken, I did have dates for these photos, so I figured giving them EXIF with the right date and wrong time was better than no date at all. I accomplished this using a pair of Linux programs: jhead and touch. Here’s how:

First, I created an EXIF tag for a given photo using jhead:

$ jhead -mkexif DSCN1282.JPG

Then, I touched the file (in Unix-y parlance, change the file’s “modified” timestamp) to midnight (00:00:00) on the appropriate date (e.g. August 12, 2001):

$ touch -t 200108120000.00 DSCN1228.JPG

Finally, I used jhead to change the file’s EXIF timestamp to the newly-fixed modified date:

$ jhead -dsft DSCN1282.JPG

Having re-added the problem images to my F-Spot library, the photos now appear more-or-less in the place they should. They’re now good enough that I’ll never again have to see those photos mixed in with the wrong year!

  1. I know what you’re thinking: that there were times when I forgot to set the date on my camera. Nope. No way. I never forget to set the date on my camera, because making sure my photos have the correct date and time is something that I’m a bit obsessive about, and the first thing I do after charging my camera’s battery is always check the date.[]

…but my new camera sucks a little too much

[If you’re just joining us, see part one.]

I recently felt like I needed a new crappy camera in my life. I found myself in a drugstore yesterday, where I purchased one of those miniature ones, a Vivitar Clipshot (née Sakar 11693). At $10, the price was right but it’s a little too cheap to have a screen built-in, and the “viewfinder” is a laughably inaccurate hole in the body. Even more exciting, I thought! It’ll be like taking photos with film and waiting to see what develops!

I couldn’t find reference to the camera working in Ubuntu with a quick Web search, but the specs on the package claimed that it works in OS X without drivers. This seemed to imply that it was a standard USB Mass Storage device, the kind you plug in and have just work, as it appears to the computer as a removable drive.

So I expected quick and easy access to my photos. I was wrong.

The OS detects the device, but not as a normal camera device, nor a Mass Storage device. This is what lsusb had to say about it:

Bus 007 Device 008: ID 0979:0371 Jeilin Technology Corp., Ltd

Searching for that lead me to a number of blog and forum posts where people discussed ways to possibly get the camera working, but to no avail. This post received a number of replies, with this reply being the most helpful: (emphasis mine)

Professor Theodore Kilgore from Alabama has been working on a driver for this camera. As of about 6 months ago, the Professor had me download his driver for the camera, and the driver lets download files from the camera. But since the pictures are stored in an encrypted format on the storage media of the camera, there is still work to be done to decrypt the picture files into a viewable format (this is the last I heard anyway).

The photos are stored encrypted on the camera, so you have to use the included Windows software to download them. Glad to know they’re being protected… from me. This crappy camera is a little too crappy for me. I haven’t tried it on a Mac yet, but I can’t imagine how this could possibly work without drivers.

There will be more crappy digital cameras in my life, but one can only hope that the next one sucks in the way it should.

Breaking news: This piece of garbage does not work in OS X either.

Lo-fi cameras are awesome…

I loves me some crappy digital cameras.

Ten years on, my first is still my favorite, my Game Boy Camera. Thank you Diego, for perhaps the greatest birthday gift ever. Sure, I had crappy film cameras before, but that didn’t stop me from loving my GBC like anyone does their first. Using film meant that I couldn’t go wild and experiment, take tons of pictures of stupid stuff like any kid with a camera does, and any self-respecting adult with one continues to do.

That wouldn’t exactly work with my Game Boy Camera, which only held 30 snapshots and didn’t come with any way to, you know, transfer them to a computer.

Details. To make do, I would delete all but my absolute favorites, the true ‘keepers.’ That awkward red cartridge still has photos from walking home on the day in 2000 I got the camera, of good high school friends, of a duck from Kendale Lakes, and self-portraits taken every few months as I grew my hair to a respectable shoulder length in college.

Last year, realizing that I was far from done taking tiny, grainy, black-and-white photos, I bought a second Game Boy Camera, and a couple of Mad Catz PC link cables, so I could finally transfer the photos. They’re cheap and plentiful on Amazon and eBay these days (the cameras, at least; the link cables are hard to find).

There was a time when mobile phones could be counted on to take photos of this sort. Sure it might be frustrating when you actually wanted to take a good photo, but think of the washed-out colors! The poor lighting! The blurry faces! Alright, maybe it wasn’t so great if that was the only camera you had at a memorable event, but if that’s the sort of camera you go out of your way to use for artsy, leisurely photography, I respect that.

My first mobile phone with a camera was a Sidekick, and its photos are by far my favorite:

I could add these effects with software, but what fun is that?

Then came my Treo, which was, unfortunately, a little bit better at taking photos:

I won’t even mention my G1, which takes practically perfect photos. How sad.

I’m glad I’ve been able to shoot with so many crappy cameras, because I know one I won’t be using anytime soon. Sigh.

To be continued…