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 prac­ti­cal­ly beg­ging for my in­put. It read some­thing like “Hey Everett, you’re sur­pris­ing­ly enough not the on­ly per­son out there with these two in­ter­ests (one ob­scure and the oth­er semi-so). Would you be will­ing to help out quite pos­si­bly the on­ly oth­er per­son in the world who cares about these things?”

Not on­ly was I like, “Heck  yeah!,” but I de­cid­ed that this was wor­thy of blog­ging, in case a third in­di­vid­ual hap­pens to de­vel­op these in­ter­ests. (If this is you, welcome!)

So, in case you find your­self want­i­ng to get crap­py pho­tos—a term I use most af­fec­tion­ate­ly — like these:

off of one of these:

red Game Boy Camera

and you use Linux:

(I kid!)

…like I do, read on.

The hard­ware I’m us­ing to down­load pho­tos over USB is SmartBoy USB car­tridge read­er (which is made by these peo­ple). And there just so hap­pens to be a great open-source pro­gram for fa­cil­i­tat­ing this task us­ing this de­vice (or a sim­i­lar car­tridge read­er): gbcflsh.

So what’s the prob­lem? gbcflsh is on­ly dis­trib­uted as source, and the source fails to com­pile un­der re­cent re­leas­es of Ubuntu. I con­tact­ed the de­vel­op­ers of gbcflsh, and one gave me some sug­ges­tions for fix­ing the source code. They have yet to pub­lish the fixed source, so I’ll doc­u­ment how I got it to compile.

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

  1. Download and ex­tract the source code.
  2. Install the fol­low­ing packages:
    gcc 4.3.3, qt4-dev-tools, libftdi-dev 
  3. Focus on the fol­low­ing files:
    src/Logic.cpp
    src/ReadFlashThread.cpp
    src/ReadRamThread.cpp
    src/WriteFlashThread.cpp
    src/WriteRamThread.cpp
  4. Add the fol­low­ing to the bot­tom of the #in­clude sec­tion of each file:
    #in­clude <cst­dio>
  5. That’s it! Compile it like you al­ready know how to do (which I won’t get in­to here).

gbcflshWhen you run gbcflsh (you’ll need to do so as root, by the way), it’ll look a lit­tle bit like what you see to the right. Select the vis­i­ble op­tions (USB, Auto, Ram: 128 KB) and click “Read RAM.”

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

Next, you’ll need a pro­gram that will ex­tract pho­tos from the save file. I be­lieve there are a few, but they all seem to be for Windows. Fortunately, the one I use works per­fect­ly un­der Wine. gbcameradumpIt’s called GBCameraDump.exe, and it can cur­rent­ly be found here. Download it, run it via Wine and se­lect the .sav file you got from gbcflsh. You’ll have some­thing that looks like this screen­shot (ex­cept hope­ful­ly with bet­ter photos).

I would al­so ad­vise you to — if this sort of thing mat­ters to you — check the or­der of the saved im­ages. They’re like­ly to be out of or­der due to, it seems, the way Nintendo de­cid­ed to han­dle the sav­ing of im­ages to the car­tridge. (Also, you’re like­ly to find some pho­tos you thought were delet­ed, which may come as a surprise.)

So there you have it: how to get pho­tos off of this cam­era of the past, us­ing the op­er­at­ing sys­tem of the (sigh) fu­ture.

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

The background

As we’ve al­ready es­tab­lished, I love to take pho­tos, and I have a strong bias to­ward dig­i­tal. While I re­ceived my first dig­i­tal cam­era (the afore­men­tioned Game Boy Camera) on my birth­day in 2000, it wasn’t un­til the fol­low­ing sum­mer that I got my first “re­al” digi­cam, a Nikon Coolpix 775.

From there, the flood of dig­i­tal pho­tos be­gan. Initially, I just dumped every pho­to in­to a sin­gle fold­er on my shiny, new, gonna-help-me-do-well-in-college-this-fall lap­top, and let their se­quen­tial file­names (DSCN0001.JPG, 0002, etc.) do the “sort­ing.”

This worked for a while, un­til it be­came clear that hav­ing all of my pho­tos in one fold­er was poor for both or­ga­ni­za­tion and per­for­mance, so I start­ed or­ga­niz­ing my pho­tos us­ing dat­ed sub­fold­ers (e.g. photos/2001/2001-08-12/). This was all the or­ga­ni­za­tion I did for my pho­tos, and was al­so how  I viewed them, up un­til I be­gan us­ing pho­to man­ag­ing soft­ware (first Picasa on Windows, lat­er F-Spot un­der Ubuntu).

The problem

While these apps ex­cel at tak­ing pho­tos and turn­ing them in­to a well-organized stream based on date tak­en, I no­ticed that a small hand­ful of pho­tos were out-of-place in the time­line.1

After spend­ing some time puz­zled by this, it oc­curred to me that:

  1. none of these pho­tos had EXIF data
  2. all of these were tak­en in 2001
  3. all of these had been tak­en in “por­trait” mode (when you turn the cam­era side­ways), as op­posed to “land­scape”

In an ex­am­ple of clear­ly mis­guid­ed, youth­ful in­dis­cre­tion, I had man­u­al­ly ro­tat­ed these pho­tos — re­mem­ber, cam­eras didn’t have ori­en­ta­tion sen­sors back then — us­ing Windows Picture & Fax Viewer (Windows ME/XP’s de­fault), and it ate my pho­tos’ EXIF da­ta! From then on, I start­ed us­ing the camera’s built-in ro­tate functionality.

But, ugh, I still had a bunch of old, messed up pho­tos. Fortunately, I wasn’t to­tal­ly in the dark about these pho­tos’ chronol­o­gy, as I knew the cor­rect dates that these pho­tos were tak­en, thanks to the sur­round­ing se­quen­tial pho­tos still hav­ing their EXIF data.

The solution

For the last few years, I let these few pho­tos just be, an­noyed that they would al­ways show up in the wrong places. So to­day, I fi­nal­ly did some­thing about this: I gave them new EXIF da­ta us­ing the best in­for­ma­tion I had at my disposal.

While I didn’t know the pre­cise time tak­en, I did have dates for these pho­tos, so I fig­ured giv­ing them EXIF with the right date and wrong time was bet­ter than no date at all. I ac­com­plished this us­ing a pair of Linux pro­grams: jhead and touch. Here’s how:

First, I cre­at­ed an EXIF tag for a giv­en pho­to us­ing jhead:

$ jhead -mkexif DSCN1282.JPG

Then, I touched the file (in Unix-y par­lance, change the file’s “mod­i­fied” time­stamp) to mid­night (00:00:00) on the ap­pro­pri­ate date (e.g. August 12, 2001):

$ touch -t 200108120000.00 DSCN1228.JPG

Finally, I used jhead to change the file’s EXIF time­stamp to the newly-fixed mod­i­fied date:

$ jhead -ds­ft DSCN1282.JPG

Having re-added the prob­lem im­ages to my F-Spot li­brary, the pho­tos now ap­pear more-or-less in the place they should. They’re now good enough that I’ll nev­er again have to see those pho­tos mixed in with the wrong year!

  1. I know what you’re think­ing: that there were times when I for­got to set the date on my cam­era. Nope. No way. I nev­er for­get to set the date on my cam­era, be­cause mak­ing sure my pho­tos have the cor­rect date and time is some­thing that I’m a bit ob­ses­sive about, and the first thing I do af­ter charg­ing my camera’s bat­tery is al­ways check the date.

…but my new camera sucks a little too much

[If you’re just join­ing us, see part one.]

I re­cent­ly felt like I need­ed a new crap­py cam­era in my life. I found my­self in a drug­store yes­ter­day, where I pur­chased one of those minia­ture ones, a Vivitar Clipshot (née Sakar 11693). At $10, the price was right but it’s a lit­tle too cheap to have a screen built-in, and the “viewfind­er” is a laugh­ably in­ac­cu­rate hole in the body. Even more ex­cit­ing, I thought! It’ll be like tak­ing pho­tos with film and wait­ing to see what develops!

I couldn’t find ref­er­ence to the cam­era work­ing in Ubuntu with a quick Web search, but the specs on the pack­age claimed that it works in OS X with­out dri­vers. This seemed to im­ply that it was a stan­dard USB Mass Storage de­vice, the kind you plug in and have just work, as it ap­pears to the com­put­er as a re­mov­able drive.

So I ex­pect­ed quick and easy ac­cess to my pho­tos. I was wrong.

The OS de­tects the de­vice, but not as a nor­mal cam­era de­vice, nor a Mass Storage de­vice. 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 num­ber of blog and fo­rum posts where peo­ple dis­cussed ways to pos­si­bly get the cam­era work­ing, but to no avail. This post re­ceived a num­ber of replies, with this re­ply be­ing the most help­ful: (em­pha­sis mine)

Professor Theodore Kilgore from Alabama has been work­ing on a dri­ver for this cam­era. As of about 6 months ago, the Professor had me down­load his dri­ver for the cam­era, and the dri­ver lets down­load files from the cam­era. But since the pic­tures are stored in an en­crypt­ed for­mat on the stor­age me­dia of the cam­era, there is still work to be done to de­crypt the pic­ture files in­to a view­able for­mat (this is the last I heard anyway).

The pho­tos are stored en­crypt­ed on the cam­era, so you have to use the in­clud­ed Windows soft­ware to down­load them. Glad to know they’re be­ing pro­tect­ed… from me. This crap­py cam­era is a lit­tle too crap­py for me. I haven’t tried it on a Mac yet, but I can’t imag­ine how this could pos­si­bly work with­out drivers.

There will be more crap­py dig­i­tal cam­eras in my life, but one can on­ly 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 crap­py dig­i­tal cameras.

Ten years on, my first is still my fa­vorite, my Game Boy Camera. Thank you Diego, for per­haps the great­est birth­day gift ever. Sure, I had crap­py film cam­eras be­fore, but that didn’t stop me from lov­ing my GBC like any­one does their first. Using film meant that I couldn’t go wild and ex­per­i­ment, take tons of pic­tures of stu­pid stuff like any kid with a cam­era does, and any self-respecting adult with one con­tin­ues to do.

That wouldn’t ex­act­ly work with my Game Boy Camera, which on­ly held 30 snap­shots and didn’t come with any way to, you know, trans­fer them to a computer.

Details. To make do, I would delete all but my ab­solute fa­vorites, the true ‘keep­ers.’ That awk­ward red car­tridge still has pho­tos from walk­ing home on the day in 2000 I got the cam­era, of good high school friends, of a duck from Kendale Lakes, and self-portraits tak­en every few months as I grew my hair to a re­spectable shoul­der length in college.

Last year, re­al­iz­ing that I was far from done tak­ing tiny, grainy, black-and-white pho­tos, I bought a sec­ond Game Boy Camera, and a cou­ple of Mad Catz PC link ca­bles, so I could fi­nal­ly trans­fer the pho­tos. They’re cheap and plen­ti­ful on Amazon and eBay these days (the cam­eras, at least; the link ca­bles are hard to find).

There was a time when mo­bile phones could be count­ed on to take pho­tos of this sort. Sure it might be frus­trat­ing when you ac­tu­al­ly want­ed to take a good pho­to, but think of the washed-out col­ors! The poor light­ing! The blur­ry faces! Alright, maybe it wasn’t so great if that was the on­ly cam­era you had at a mem­o­rable event, but if that’s the sort of cam­era you go out of your way to use for art­sy, leisure­ly pho­tog­ra­phy, I re­spect that.

My first mo­bile phone with a cam­era was a Sidekick, and its pho­tos are by far my favorite:

I could add these ef­fects with soft­ware, but what fun is that?

Then came my Treo, which was, un­for­tu­nate­ly, a lit­tle bit bet­ter at tak­ing photos:

I won’t even men­tion my G1, which takes prac­ti­cal­ly per­fect pho­tos. How sad.

I’m glad I’ve been able to shoot with so many crap­py cam­eras, be­cause I know one I won’t be us­ing any­time soon. Sigh.

To be continued…