After my DMR-EH55 froze up in error mode last January during a 'divide title' operation, I searched all over the forums and even posted to few, but everyone said there is no way to retrieve the recorded programs. I finally attacked this problem on my own and came up with a way!! ( Of course your drive still has to be physically working )
All you need is a decent hex editor program ( I use HxD ) and a way to connect the the HD to your PC ( An IDE to USB adapter cable is what I use ). It doesn't matter if Windows can't see the drive, a hex editor can retrieve the binary data from any storage device connected to your PC! By studying the hex codes of DVD vob files, and doing some web research, I found out the start codes for all of your recorded entries on the HD. Also it is possible to locate every part of a fragmented program and reassemble them into one file. I've already retrieved two complete 30 min. shows from just the first 20 GB of the drive. ( Both were in 3 fragments each ). The data is NOT encrypted in any way (just standard DVD vob file format), It's just recorded to the HD sequentially until the drive reaches the end, then goes back to the beginning and starts recording over the places where you 'erased' entries or parts of shows (which are not really erased, just recorded over). This is what causes the fragmentation. It does take a considerable amount of time and patience, since you have to do a lot of string searching, copying and pasting data blocks, and looking at the count patterns ( and have a reasonable knowledge of the hexadecimal number system ). The beginning of the drive does not contain video files, but may have info on where to find the fragments. After I finish the whole drive ( it may be several weeks ) I'll investigate this further.
Part 1 - preliminaries:
If you can't install an IDE drive into your PC, you will need an IDE to USB adapter cable with power supply and ac cord ( available on eBay or websites ).
Go to these websites and download & install the following two programs:http://mh-nexus.de/hxd/
HxD 18.104.22.168 beta (Hex editor)http://www.freebyte.com/hjsplit/
HJSplit 2.3 (file joiner/splitter)
Carefully unplug the ribbon cable and power plug and remove the hard drive from the unit.
Move the jumper from J48 to J50 ( CS to Master ) and remove the horizontal jumper connecting J44 to J42 ( Maxtor HDs have a diagram on top ). Place jumper and screws in a small zip-loc bag or container where they won't get lost! Romove the two screws near the connecters holding the drive to the metal frame, loosen slightly ( but do not remove ) the two rear screws. Lift the front of the drive just enough so the screw holes are above the frame, then put those screws back in just enough so the screws will rest on top of the frame and hold the drive up at a slight angle ( so you can get the connectors in ). Plug in the power and data connectors, then plug in the power cord. When the drive spins up, plug the USB cable into your PC. Don't let your OS try to format the drive in case it asks for this.
Create a folder in one of your top directories to keep all your work. Open up notepad and save an empty dummy file there, calling it something like "zero" or"0000". Open up HxD, under file tab, open this file and be sure it is empty. If not, type "ctl A", hit delete key, and under file, "save as" (same filename). You will need this for pasting data into from your HD.
To access the drive, click the "Extras" tab, then "open disk...". Under logical disks, you should see only C: ( and any drives or partitions you added ). Under physical disks, it will say "Hard Disk 1", "Hard Disk 2", etc. You will see one more disk here than what is listed under logical. This will be the DMR drive. Click that one (the second or last one). You will then see the data displayed in hex code. To see if this is the right drive, move the slider down to the end of the file and note the hex offset address of the last line. For a 100 GB drive, it will show a 10 digit number starting with "17" or close. A 200 GB drive will show something like "2E" or "2F". Note that a 100 GB drive is really around 94 GB. Also if you are using the adapter cable, an orange light will flash on the connector each time you access the drive. Important: When opening up HxD to read the drive, the 'read only' box should stay checked to prevent you from writing to the drive by accident.
Part 2 - Data transfer:
Create a notepad file, copy and paste the following info into it:
VOB file START STRING 000001BA4400040004
2KB data block start string 000001BA
100 = 256 bytes
1000 = 4096 bytes = 4KB
1:0000 = 65,536 b = 64KB
10:0000 = 1 MB
100:0000 = 16 MB
1000:0000 = 256 MB
1:0000:0000 = 4 GB
10:0000:0000 = 64 GB
6 MB = 600000
12 MB = C00000
24 MB = 1800000
48 MB = 3000000
96 MB = 6000000
192 MB = C000000
FILE 00 ( 1st 4 gigs of HD 0000000000-00FFFFFFFF )
You will need this often for reference. From now on, everytime you locate a program or part of a program, you will need to record the hex addresses, file length, and part of the header string for each program segment you find in this notepad file. Be sure to SAVE this file often as you work on it ( even make backups to another directory each day ).
Note: If you use a PC where you can connect the drive internally, you shouldn't have to transfer all the data to your C: drive first, you can skip down to part 3 below. You can do your string searching directly from the drive. I just can't do it with my USB connected DMR drive because it takes so long even to copy a 256 MB chunk off.
If you are using a IDE to USB adapter cable:
Before you begin, you need at least as much free space on your PC as the capacity of your DMR drive ( plus another 50% or so to work with ). You may have to add a second drive. Don't use a USB connected drive for this, it will slow things down considerably. The hex editor itself does not need much free space to display the data ( it only retrieves what is visible in the window ) but to search for programs and move data around, you will want it all on your PC's HD. With the hex data displayed on your HxD window, note the cursor flashing to the left of the first data byte. Under the 'edit' tab, hit 'select block', choose the 'Length' selection, then type in 10000000 (seven zeros) and hit OK. This will select the first 256 MB of data. Type 'ctrl C' (copy) A progress window will open, and the light will blink on the connector as it copies data to the clipboard. This will take at least a minute. When done, click to the left of the first byte of the very next line below the blue highlighted data. Leave the file open, Under file menu open up your empty file and type 'ctrl V' (paste). Click OK when it asks about the file size. You'll see the data appear in red. In the file tab, click "save as..." and call this file 00.001 hit save, then close the file. Under the HD file, The cursor should still be at the beginning of the line address 0010000000. Now repeat the steps above
(select block, 10000000 size, copy, paste into zero file, save - only this time call the file "00.002". Repeat this process 14 more times, being very careful not to lose track of where you are ( When you finish saving file 00.002, you will see a 2 at the start address of the next block you will copy ). Also, if you are worried about losing track, you can copy down the last few bytes of each 256 MB data block and put it with the correct filename in notepad. After you save the 10th file (calling it "00.010", you will see an A at the next start address. When you finish with the 16th file, the next hex address showing will be 0100000000. Now you can join the 16 files into a 4 GB file. Run 'HJSplit' hit "join" browse for the 00.001 file and hit 'start'. After a while, you will end up with a file called "00" with the first 4 GB of your data. You can delete all the ~.001 - .016 files.
Now you can either are start analyzing the data ( see part 3) or continue with the next 4 GB block.
To continue, copy this into your text file ( a few spaces below the last entry )
FILE 01 ( 2nd 4 gigs of HD 0100000000-01FFFFFFFF )
Starting with hex address 0100000000 retrieve the next 16 blocks ( just like above ) only this time title each file 01.001 thru 01.016 instead of 00.xxx If you close the program and want to do it later, use the 'search' tab and 'Goto' to type in the address of where you need to start. Note that to transfer all 100 GB, you will have to transfer about 375 blocks of data this way. I was unable to transfer larger blocks as I would get an 'out of memory' error each time I tried. There may be a way to copy the entire drive at once, but I yet don't know how and couldn't do it anyway as I am still making room on the hard drive.
Ther is a reason for naming the 4 GB blocks "00","01","02", etc. By adding the numbered name of the 4 GB file you are in to the left of the 8-digit hex address of what line you are looking at in that file, you will have the complete 10 digit hex address for that data line for the whole drive.
Part 3 - Finding your recorded programs:
Open the 00 file in HxD. Hit search and Find. Change the data type from Text-string to Hex-values (it always defaults in text mode when you first use it - so you need to change this every time you first open HxD on your PC). Copy and paste the VOB file start string code 000001BA4400040004 into it and hit OK. Once it finds one, copy the 8 digit address code (or 10 digit code if you are reading from the drive) on the left of this line into your notepad file right below the heading
"FILE 00 ( 1st 4 gigs of HD 0000000000-00FFFFFFFF )"
Note: If you are accessing the drive directly, no need to create the above heading - this is only if you have to copy everything to your C: drive in 4 GB files.
All DVD vob files start with this. This string also appears at the start of anything you record to the hard drive. Now hit edit and select block (leave the highlighted area alone) and type in 1000000 in the length box. Copy and paste this into your zero file, then save it as an .mpg file, calling it something like "a1.mpg" You will have a 16 MB file. Be sure to close the file in HxD once you save it (or it won't play). Now play it with your favorite video player ( I use Media Player Classic ). In LP ( 4 hour ) mode, this will give you about 50 seconds of video. This is usually enough to tell if it something you need or fragments of old deleted shows. If it is old fragments, make a note of this next to the address in your text file so you won't look there again. If it is good, and the entire video is the same program, Then you will need to go back to the same address (Find and Goto) on the 00 file, only this time select a 256 MB block ( 10000000 length ). Copy and paste it the same way, you can even overwrite the first mpg file with the same name when you save. If the video switches over to another fragment part way through the file, you will then need to edit it down. This is where it gets more complicated. First, observe about how many minutes and seconds are in the portion you need to save. I find most fragments fall into the following file lengths: 6 MB, 12 MB, 24 MB, 48 MB, 96 MB, 192 MB and 384 MB. 192 MB fragments are fairly common, this is exactly 3/4 of the way through a 256 MB file, or about 10 min. of video in LP mode (in SP mode, cut the times in half). So if your video plays about 10 min in a 256 MB file before switching shows, you have a 192 MB chunk. First, open the mpg file in HxD, type in 000001BA in the search / find window. Now press and hold down the F3 key on your keyboard and watch the first three bytes to the right of the blue selected string. You will see a '44 00 04' there which will slowly count up as you advance into the file. The 6th digit will only count from 4 to 7 and C to F, skipping the other 8 digits. The first 5 digits count up in the normal way. (The 44 won't change until you get 30 or 40 min. into a program) Let up on the F3 key, then move the slider bar down about a tenth of the way, press F3 again and observe the count. Keep doing this to get a feel for about how fast the count is going up. Move almost 3/4 down the file and look again. Sooner or later, you'll see a discrepancy in the count ( the numbers will jump to much higher value, or back to a lower value ). Work the slider up and down (moving it as little as possible) to zero in on the discrepancy. You can hold the shift key down while pressing F3 to make it search up (backwards). Also, if you have an idea of the chunk length, just go to that hex address on the left. Here are the address codes for the following chunk lengths: 6 MB = 600000 ; 12 MB = C00000 ; 24 MB = 1800000 ; 48 MB = 3000000 ; 96 MB = 6000000 ; 192 MB = C000000 . Hit the F3 and shift F3 keys to verify this is the end of the chunk. The next chunk starts at a hex address ending in several zeros.
Click the start of this chunk, scroll to the end of the file, hold down 'shift' and click the cursor on the right side of the last data byte. Now hit the delete key to remove this. Resave
it under the same filename. Close the file and play it again. The playing time, total time and seeker bar on your media player should now be in sync once you remove extraneous chunks off the end. ( There's another way to tell, if you play a 256 MB file, which should be about 13 min in LP mode, but if the program length time showing is way off from this, then you have mixed programs. Also the seeker bar won't move at the right speed ). Once you have an intact chunk you want to keep, rename it with a number like 01 and the name of the show so you know what it is - followed by "inc" or incomplete. Reopen the saved chunk and search for 000001BA again, but move to the end of the file, using shift F3 to find the last occurance of this string. Copy down the four bytes after the highlighted search string bytes into your text file, next to the info you copied about this chunk. You will need this to find the next chunk of this show. Continue searching for all the start codes in this 4 GB file, Then you can proceed to the next file.
Note1: Commercials you deleted on the DMR are NOT deleted from the HD, they will all still be there. This info is probably stored in the flash memory or at the beginning of the drive.
Note2: The 000001BA code occurs every 2 KB on the drive. Any data chunk starting with this code and ending with the byte preceding this code ( no matter how long ) will play as an mpg file. It does not have to begin with the entire string 000001BA4400040004. You can even name a whole 4 GB file as an mpg and play it! ( Except for the first one, since there are no 000001BA codes near the beginning of the drive ).
Note3: A "byte" in hex code is always a pair of digits shown in the editor
To find the second and subsequent chunks from a show, You will need the first 8 bytes of data from the start of the last 2 KB data block of the first chunk. Another words, the code 00 00 01 BA plus the four bytes I told how to find above.
Here is an example of a 30 min show I retrieved ( It was in the 2nd 4 GB file, about 7 GB
into the drive )
E5180000 [show #1 - part 1] (192MB 10:57)
00 00 01 BA 44 38 6E 57
00 00 01 BA 44 38 6E 5C
This is the last two 2 KB block start codes. Note how the last digit increases from 7 to C
( a jump of 5 units ) This digit always seems to advance in steps of 4 or 5.
To find the next fragment, I did a search for 000001BA44386E ( everything except the very last byte ) Each time your editor finds this string, look at the first byte after the blue selected code. In this case, it should be about 4 or 5 bigger than 5C ( it turned out to be 60 when I found it ). If the number is way smaller ( usually near 00 ) then you are in the wrong program. Hold F3 down until it gets past this show ( you will see a rapid flash of the strings, then a pause and the 'searching' box appears - immediately let up on the key and look again when it finds the next string. If the number is still way off, repeat the above.
If you find a string that looks right, select, copy and paste 16 MB of data into the zero file, save and play it. If it is not the right one, keep searching. In my case, the second segment was in the 4th 4GB file ( about 14 gigs into the drive ) Once you find it, Use the procedures above for selecting larger blocks and trimming the file to the right size. You will also want to record the addresses of all additional segments you find and again record the first 8 bytes of the address from the beginning of the last 2 KB data block of this file ( so you can find the third part ) and so on. Once you get the second segment fixed up, open the first segment in HxD, move the cursor to the very end, open the second part, then select all, copy and paste this to the end of the first part and save it. (Maybe under a different name in case you messed up) Once you play it and see all is OK, then you can delete the two shorter segments.