Creative Zen Vision M rescue operation

Introduction

I’ve recently done a rescue operation of a Creative Zen Vision M 30G device that refuses to power up. I’m writing it up so people who have the same problem could find help.

Three primary failure points are:

  • battery
  • hard drive
  • motherboard

Helpful links I discovered:

Opening the device

Was relatively easy. Unscrew small screws and try not to break the plastic. anythingbutipod forum has videos and pictures on how to do this.

Hard drive

…is a ZIF connector 1.8″ Hitachi HTC426030G5CE00 30G. To do any meaningful recovery operations on it, you probably need to use a ZIF to 2.5″ IDE converter. That’s what I did anyway. That converter then connects to a run of the mill IDE to USB converter.

ZIF to 2.5" IDE conversion

Fortunately, the disk seems to be alive and well, I could read everything through /dev/disk2.

Filesystem, extracting data

Zen uses custom filesystems to store whatever it needs to store, MiniFS for operating system stuff and CFS for user stuff. Tobia Conforto has just recently done some fabulous work with his ZenRecover python script and information web page. This information helped me along alot. His device was a Nomad Jukebox 3. There are some differences to the newer Vision M device, which we were fortunately able to figure out together over a few hours of debugging sessions over Skype.

Below are the differences I had to make to the original ZenRecover.py script:

  • cluster size has changed from 0x2000 bytes (8K) to 0x8000 bytes (32K), so CFS starts at offset 0x3200000
  • Vision M doesn’t need to do byteswapping on the data
  • but uint32 is stored in a different order
  • so are the metadata tag bytes

After making needed modifications to the script, I run:

python 8kzenrecover.py -o 52428800 /dev/disk2 songs /Volumes/ZenRescueDir

It worked! Thanks a lot to Tobia for his help figuring the newer device quirks out. I’m sending him the updated script and let him maintain the versions, URL is listed above. Write a comment on this post if you have any questions.

Source code

EDIT #2: I’ve gisted the source code: http://gist.github.com/237256, version control ftw.

EDIT: Tobia is a bit busy and hasn’t managed to upload the Vision:M compatible script on his web page, so I’m making it available for download here in the meanwhile.