Digital Picture Frame Hacking Roundup

Saturday, March 7th, 2009

hack_open_photo_cubeWith all the nice hacks on digital picture frames scattered around the web, I decided to put them all in one place for reference. Due thanks to all the hackers out there who put their work out for everyone to see. It’s the joy in reverse engineering. For some of the hacks I’ve included a compressed file with the code and webpage archived in case the original site goes down. If you are the author an would not like it, please let me know.

Please read : If you would like to be notified of new frames being hacked, leave a comment below and check the “subscribe to comments” box.


PHILIPS Picture Frames
philips_7ff1am_7fficmi_frame_hack[v]incent was able to display his images directly to the frame by writing a little script which prepends a binary header to the JPEG file. There is a detailed writeup on how he reverse engineered the picture frame format.

Detailed info:



CEIVA Picture Frames
ceiva_picture_frame_hackThe CEIVA runs on a Cirrus Logic Maverick(EP7212) controller. It’s based on a ARM720T core with 2Mb Flash and 4Mb DRAM.
Initial hack done by [c]olin. The frame runs on Linux. Necessary patches and images are provided. [b]rad keeps a worklog here
New code can be loaded via a serial port on the PCB through a simple level converter.




Detailed info:



KeyChain Displays
tom_tec_digital_photo_fram_hack2[j]eroen from Spritesmods maintains a wiki of compatible keychain displays with his firmware hack. He and a couple of guys regularly update it with new displays. Most of the displays use the SITRONIX ST2205U controller in them. I tried my hand in doing the same with the Hannah Montana Vu-Me photo frame. I got close, but bricked it in the end.
Their code is maintained at Google code

Detailed info:

  • Models:
    • TomTec
    • Coby DP-151SX/DPKEY
    • HK unbranded
    • Keypix
    • Dealxtreme SKU5218
    • Innovage
    • Dig-291
    • Innovalley
  • Webpage
  • Wiki
  • Google code



DIGITAL SPECTRUM MemoryFrame
digital_spectrum_memoryframe_hack_arm920The MemoryFrames run on WindowsCE5. [r]etoor from mozy.org managed to crash the frame using a keyboard, mouse and following a sequence. The frame runs on an ARM920T – a 32bit Arm9 processor. The following is an excerpt from his “YouTube’s more info…” link:
…”Basically you need both the mouse and keyboard plugged in, scroll down past the “Settings” option, scroll back up, and click the word “Settings” with your mouse. There is no enter key on the keyboard so you have to click the mouse….”


Detailed info:



SAMSUNG SPF-83v Frames
samsung_spf-83v_digital_frame_hackThe frame parses feeds and regular html pages for images and displays them. You can use the frame’s i-net-functions to serve it data.
[t]obe from Infolexikon uses PHP to gather data and writes it all to an image using gd. These images are then pushed to the frame at regular intervals.

Detailed info:



JUICEBOX Digital Frames
juicebox_digital_frame_hack[j]oevennix managed to rip out the LCD from a Juicebox and enclose it in his own custom frame. He didn’t have the mp3 kit at that time( although you can get it online), so he soldered a SD card slot into the cartridge connector. His webpage is down. The following is an archive of his work.

Detailed info:



If you find this interesting or have some new ideas or links on frames, please post in the comments. Don’t forget to Subscribe [email]for more followups and hacks. To get updates on this page, subscribe to the comments below.


Taking Apart the ATV-360 EyePiece [Head Mounted Display]

Saturday, February 14th, 2009

atv_360_wild_planet_hud_pcb_removedAs promised, after taking apart the ATV-360 Spy Video here, this is a follow-up on taking apart the Head Mounted Display[HUD]. The HUD has some very interesting DIY parts and ideas which you can try out. Maybe a cool wearable. The details on all the parts used are at the end of the post and comments are open for discussion.

The HUD consists of a frame which sits in the same way as you would wear a pair of spectacles. On the right side, a case is attached which holds all the necessary electronics and optics. The HUD receives video signals from the remote which houses the camera receiver.

1. First for a few views. Click on the views for a larger image.
atv_360_wild_planet_hud_full_view atv_360_wild_planet_hud_eye_pieceatv_360_wild_planet_hud_eye_piece_2

2. So that you know how it looks, I setup two scenes. One with a PostIt note saying “HI” and the other a Rubik’s cube. The LCD is monocohrome however, so the image you will see is not color.

  • The one with the PostIt note
    atv_360_wild_planet_hud_hi_post_it_setupatv_360_wild_planet_hud_post_it_hi
  • The one with the Rubiks cube
    atv_360_wild_planet_hud_rubiks_cubeatv_360_wild_planet_hud_rubiks_cube_lens_view

3. Opening is not that easy as there are no screws to take apart the top cover which says “Spy Gear”. The cover is glued to the case using glue. Taking a clue from Jake to avoid inserting the screwdriver on the side the “cable does not come out”, I managed to take it apart. Pry the side where the black cable comes out. The other side has the LCD connector, you might damage it if ou pry that side. It’s tough at first, but once you get one side, it gets easier.
atv_360_wild_planet_hud_pry_open

4. Once the cover is removed, the PCB becomes visible. The main controller chip is a Kopin KCD-A300-QB. All the other parts are support components for the chip. There is a small potentiometer in one corner which allows you to change camera gain. You can see the display change in brightness when you change it. Try adjusting it, there is no harm in doing so as it can easily be bough back to it’s previous value by looking at the screen.
atv_360_wild_planet_hud_pcb_1atv_360_wild_planet_hud_pcb_2atv_360_wild_planet_hud_pcb_3

5. Remove the two screws keeping the PCB in place. Also it’s time to remove the LCD connector. To remove it, pull the black tab out a bit as in the pic.
The connector will slip out easily with a slight tug. The connector is pretty rugged. I have already plugged it in/out a few times.
atv_360_wild_planet_hud_lcd_connectoratv_360_wild_planet_hud_pcb_removed

6.The LCD connector is glued on to the casing. Remember to break it free before going ahead.
atv_360_wild_planet_hud_remove_lcd_glue

6: Four more screws need to be taken out to remove the eyepiece. Use a pair of pliers to do this.
atv_360_wild_planet_hud_pliers_remove_case

7.Before I forget, the PCB has a high output smd LED behind it as below:
atv_360_wild_planet_hud_led_2atv_360_wild_planet_hud_led

8. Prying out gives you the lens casing. It’s pretty well made, with the LCD nicely sitting in it’s place. It was designed so that the lens was at a fixed distance from the LCD.
atv_360_wild_planet_hud_lens_case_1atv_360_wild_planet_hud_lens_case_2atv_360_wild_planet_hud_lens_case_3atv_360_wild_planet_hud_lens_case_4

9.Going further, pry the top half with a flat head screwdriver. There are four tiny rods which keep it inline. This part should come out easily.
atv_360_wild_planet_hud_remove_lens_cover_1

9.Now for the LCD. The LCD is in a tiny casing which sits in a grooved box. There is a slight amount of glue on one end as in the image. With a flat head screwdriver, as shown, just give a tiny nudge and it should come free.
atv_360_wild_planet_hud_lensatv_360_wild_planet_hud_remove_lens_coveratv_360_wild_planet_hud_lcd_screen_cover

10. The LCD in all it’s glory!
atv_360_wild_planet_hud_lcd_screenatv_360_wild_planet_hud_lcd_screen_2

11. The following views show the three pieces of the lens casing. Note that the part at the extreme right of each image has a diffused screen to spread light from the SMD LED.
atv_360_wild_planet_hud_lens_partsatv_360_wild_planet_hud_lens_parts_2atv_360_wild_planet_hud_lens_parts_3

12. This was as far as I could go. The eyepiece is glued together. Trying to take it apart would mean risk in breaking the lens.

Parts and Notes:
Main controller chip :: Kopin KCD-A300-QB
Documents :: kopin_kcd-a300-qb_dsiplay_driver
Notes :: This is the driver chip for the 300M LV monochrome display. It is designed to accept a standard monochrome video signal (525 or 625 lines), and convert it for the display. Unfortunately its a monochrome driver and not a color one.

LCD Display :: Kopin 300MLV CyberDisplay
Documents :: kopin_cyberdisplay_300m_lv_feature_sheet
Notes :: This is the LCD Display with the connector. The feature sheet shows a frameless one, but I’m unable to find the document with the framed one.

If you find this interesting or have some new ideas or links, please post it in the comments. Thanks for reading and don’t forget to Subscribe [email] for more followups and hacks.

Hacking the Hannah Montana Photocube – Almost!

Tuesday, February 10th, 2009

hannah_montana_photocubeThings with LCDs are very interesting. I found a Hannah Montana Digital Photocube on sale and decided to look what’s inside it. Good for a day of hacking :)

First a description:

  • Storage capacity: 8 M bit (Up to 70 photos) Resolution: 128×128 dpi
  • Display: 1.5-inch color LCD
  • Supported File Format: JPG (JPEG),BMP, GIF, PNG, & TIF
  • Power: 2 xAAA batteries (not included)
  • USB Ports: Mini-USB 1.1 interface

Searching around the net produced a lot of work done by Sprite. He and a couple of guys maintain a wiki containg information about hacked lcd keychains. Most of the keychains that have been hacked contain a ST2205U Microcontroller. With this information I proceeded ripping apart my photocube. This was what was inside:

hack_photo_cube_a29l800_flash_chiphack_photo_cube_pcb_2hack_photo_cube_pcbhack_photo_frame_lcdhack_open_photo_cube

A 1Mb A29L800( datasheet ) flash chip and a micrcontroller hidden behind a big black blob along with the LCD, buttons, USB port and an on-off switch. With some reading on Sprite’s blog and modifyng his script a little, I was able to verify that the microcontroller was indeed a ST2205U. If you browse through main.c, a function is_photoframe checks if the controller is a ST2205U. So I inserted a printf(“Response : %s\n”,buff) to verify if the chip gave back the correct string, which it did.

/*
Checks if the device is a photo frame by reading the first 512 bytes and
comparing against the known string that's there
*/
int is_photoframe(int f) {
int y,res;
char id[]="SITRONIX CORP.";
char *buff;
buff=malloc_aligned(0x200);
lseek(f,0x0,SEEK_SET);
y=read(f,buff,0x200);
buff[15]=0;
printf("Response : %s\n",buff);
// fprintf(stderr,"ID=%s\n",buff);
res=strcmp(buff,id)==0?1:0;
free_aligned(buff,0x200);
return res;
}

I’ll try documenting my steps going further. It’s in Linux( RedHat ) since I work on it, and you could do the same using a linux live cd.

1. Unpack Sprite’s hack from here. You will need to install libgd if you don’t have it. As root install gd-devel. Please read the README file in the unpacked directory. It’s written for a reason.

yum install gd-devel

2. Then as a user type “make” in the unpacked directory. This will compile the hack to give you the “phack” binary.
make_hackfw

3. Now connect the photocube and turn it on. You will see “USB Connect” displayed on the screen. Open a terminal on your linux machine and type

dmesg | tail

This will give you any hardware information that occurred last. You will see the following:
dmesg_hannah_montana_photocube

If you see something like:

4096 512-byte hdwr sectors (2 MB)

then your close. Also note where your cube is mounted so you can access it. If you look at the pic above it says “Attached scsi removable disk sdg”, which means that the cube is mounted at /dev/sdg

4. Now to hack the firmware.
WARNING : Anything you do after this is at your own risk.

Type the following as root in your terminal, using the mount point which you got from step 3.

./hackfw.sh /dev/sdg

You will see the following as checks are made and eventually an error:
hack_st2205tool_error

Sprite’s script makes a backup of the firmware and an image of the memory. It however says that “The hack won’t work for my Firmware.” When I looked into the script, it looks if my cube’s firmware is same as Sprite’s when he hacked his keychain, which is an entirely different product.

dd if=fwimage.bin bs=256 skip=58 count=2 of=fwbit 2>/dev/null
#check for all FFs Md5sum may not be _the_ tool for that, but it works OK.
if ! md5sum fwbit | grep -q de03fe65a6765caa8c91343acc62cffc; then
echo "No room at the location we want to place the hack!"
echo "This specific hack won't work for this particular firmware, I'm sorry."
exit 1;
fi

I did not have anything to loose, so I commented it out to bypass the check. Just put a “#” to comment out code.

5. I ran the script again (run as root), this time it went through the whole flashing process, till I rebooted

hack_st2205tool_success

6. The script ends with “No Photoframe found here”. Turn off, Disconnect, Turn On and the Connect the photoframe. Get the mount point as in step 3. Type the following as root.
hack_st2205tool_hi_lcd

You should see the following on the LCD
hack_photo_cube_lcd_debug

The script allows a maximum of 10 characters. Another example
hack_photo_cube_lcd_debug_2


I was however unsuccessful in getting PNGs or JPEGs uploaded to the device. That’s when I bricked my cube trying different memory addresses. It doesn’t even turn on now. I’ll update when I get my hands on another one. If you have any questions or comments, you could enter them below. Thanks for reading and don’t forget to Subscribe for more followups and hacks.

Me

Welcome to my place on the web. I note down anything interesting most of them relating to my experiences, Tech, To-dos, How-tos and various hacks. Most of my time is spent in tinkering around with hardware, building robots and working with DSPs.More

Want to subscribe?

 Subscribe in a reader Or, subscribe via Email

Add to Technorati Favorites
Find entries :