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 input. It read some­thing like “Hey Everett, you’re sur­pris­ing­ly enough not the only per­son out there with these two inter­ests (one obscure and the oth­er semi-so). Would you be will­ing to help out quite pos­si­bly the only oth­er per­son in the world who cares about these things?”

Not only was I like, “Heck  yeah!,” but I decid­ed that this was wor­thy of blog­ging, in case a third indi­vid­ual hap­pens to devel­op these inter­ests. (If this is you, wel­come!)

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

off of one of these:

red Game Boy Camera

and you use Lin­ux:

(I kid!)

…like I do, read on.

The hard­ware I’m using to down­load pho­tos over USB is Smart­Boy 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 facil­i­tat­ing this task using this device (or a sim­i­lar car­tridge read­er): gbcflsh.

So what’s the prob­lem? gbcflsh is only dis­trib­uted as source, and the source fails to com­pile under recent releas­es of Ubun­tu. I con­tact­ed the devel­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 com­pile.

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

  1. Down­load and extract the source code.
  2. Install the fol­low­ing pack­ages:
    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 #include sec­tion of each file:
    #include <cst­dio>
  5. That’s it! Com­pile 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 lit­tle bit like what you see to the right. Select the vis­i­ble options (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 behind us, but we’re not quite done yet.

Next, you’ll need a pro­gram that will extract pho­tos from the save file. I believe there are a few, but they all seem to be for Win­dows. For­tu­nate­ly, the one I use works per­fect­ly under Wine. gbcameradumpIt’s called GBCameraDump.exe, and it can cur­rent­ly be found here. Down­load it, run it via Wine and select the .sav file you got from gbcflsh. You’ll have some­thing that looks like this screen­shot (except hope­ful­ly with bet­ter pho­tos).

I would also advise you to — if this sort of thing mat­ters to you — check the order of the saved images. They’re like­ly to be out of order due to, it seems, the way Nin­ten­do decid­ed to han­dle the sav­ing of images to the car­tridge. (Also, you’re like­ly to find some pho­tos you thought were delet­ed, which may come as a sur­prise.)

So there you have it: how to get pho­tos off of this cam­era of the past, using the oper­at­ing sys­tem of the (sigh) future.

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

The background

As we’ve already estab­lished, I love to take pho­tos, and I have a strong bias toward dig­i­tal. While I received my first dig­i­tal cam­era (the afore­men­tioned Game Boy Cam­era) on my birth­day in 2000, it wasn’t until the fol­low­ing sum­mer that I got my first “real” digi­cam, a Nikon Coolpix 775.

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

This worked for a while, until it became clear that hav­ing all of my pho­tos in one fold­er was poor for both orga­ni­za­tion and per­for­mance, so I start­ed orga­niz­ing my pho­tos using dat­ed sub­fold­ers (e.g. photos/2001/2001 – 08-12/). This was all the orga­ni­za­tion I did for my pho­tos, and was also how  I viewed them, up until I began using pho­to man­ag­ing soft­ware (first Picasa on Win­dows, lat­er F-Spot under Ubun­tu).

The problem

While these apps excel at tak­ing pho­tos and turn­ing them into a well-organized stream based on date tak­en, I noticed 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 occurred 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 opposed to “land­scape”

In an exam­ple of clear­ly mis­guid­ed, youth­ful indis­cre­tion, I had man­u­al­ly rotat­ed these pho­tos — remem­ber, cam­eras didn’t have ori­en­ta­tion sen­sors back then — using Win­dows Pic­ture & Fax View­er (Win­dows ME/XP’s default), and it ate my pho­tos’ EXIF data! From then on, I start­ed using the camera’s built-in rotate func­tion­al­i­ty.

But, ugh, I still had a bunch of old, messed up pho­tos. For­tu­nate­ly, I wasn’t total­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 sequen­tial pho­tos still hav­ing their EXIF data.

The solution

For the last few years, I let these few pho­tos just be, annoyed that they would always show up in the wrong places. So today, I final­ly did some­thing about this: I gave them new EXIF data using the best infor­ma­tion I had at my dis­pos­al.

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 accom­plished this using a pair of Lin­ux pro­grams: jhead and touch. Here’s how:

First, I cre­at­ed an EXIF tag for a giv­en pho­to using 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 appro­pri­ate date (e.g. August 12, 2001):

$ touch -t 200108120000.00 DSCN1228.JPG

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

$ jhead -dsft DSCN1282.JPG

Hav­ing re-added the prob­lem images to my F-Spot library, the pho­tos now appear 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, because mak­ing sure my pho­tos have the cor­rect date and time is some­thing that I’m a bit obses­sive about, and the first thing I do after charg­ing my camera’s bat­tery is always check the date.

…but my new camera sucks a little too much

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

I recent­ly felt like I need­ed a new crap­py cam­era in my life. I found myself in a drug­store yes­ter­day, where I pur­chased one of those minia­ture ones, a Viv­i­tar Clip­shot (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 inac­cu­rate hole in the body. Even more excit­ing, I thought! It’ll be like tak­ing pho­tos with film and wait­ing to see what devel­ops!

I couldn’t find ref­er­ence to the cam­era work­ing in Ubun­tu 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 imply that it was a stan­dard USB Mass Stor­age device, the kind you plug in and have just work, as it appears to the com­put­er as a remov­able dri­ve.

So I expect­ed quick and easy access to my pho­tos. I was wrong.

The OS detects the device, but not as a nor­mal cam­era device, nor a Mass Stor­age device. This is what lsusb had to say about it:

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

Search­ing for that lead me to a num­ber of blog and forum posts where peo­ple dis­cussed ways to pos­si­bly get the cam­era work­ing, but to no avail. This post received a num­ber of replies, with this reply being the most help­ful: (empha­sis mine)

Pro­fes­sor Theodore Kil­go­re from Alaba­ma has been work­ing on a dri­ver for this cam­era. As of about 6 months ago, the Pro­fes­sor 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 encrypt­ed for­mat on the stor­age media of the cam­era, there is still work to be done to decrypt the pic­ture files into a view­able for­mat (this is the last I heard any­way).

The pho­tos are stored encrypt­ed on the cam­era, so you have to use the includ­ed Win­dows soft­ware to down­load them. Glad to know they’re being 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 dri­vers.

There will be more crap­py dig­i­tal cam­eras in my life, but one can only hope that the next one sucks in the way it should.

Break­ing 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 cam­eras.

Ten years on, my first is still my favorite, my Game Boy Cam­era. Thank you Diego, for per­haps the great­est birth­day gift ever. Sure, I had crap­py film cam­eras before, 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 exper­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 exact­ly work with my Game Boy Cam­era, which only held 30 snap­shots and didn’t come with any way to, you know, trans­fer them to a com­put­er.

Details. To make do, I would delete all but my absolute favorites, 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 respectable shoul­der length in col­lege.

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

There was a time when mobile phones could be count­ed on to take pho­tos of this sort. Sure it might be frus­trat­ing when you actu­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 only 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 respect that.

My first mobile phone with a cam­era was a Side­kick, and its pho­tos are by far my favorite:

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

Then came my Treo, which was, unfor­tu­nate­ly, a lit­tle bit bet­ter at tak­ing pho­tos:

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, because I know one I won’t be using any­time soon. Sigh.

To be con­tin­ued…