TiVo Community
TiVo Community
TiVo Community
Go Back   TiVo Community > Underground Playground > TiVo Upgrade Center
TiVo Community
Reply
Forum Jump
 
Thread Tools
Old 06-14-2014, 12:54 PM   #91
telemark
Registered User
 
Join Date: Nov 2013
Posts: 600
Quote:
Originally Posted by ggieseke View Post
What you're seeing is one of the changes in the superheader structure that I mentioned before. On a Roamio state and magic are still 32 bit fields, but they are swapped (magic comes first). The logstamp and zonemap_type fields are also swapped.
Ok, I'll look for that.

Was the CRC covering the 512 sector or did you need the 4096 sector?
__________________
Premiere 2 tuner & SiliconDust
on Comcast-CableCard + OTA
telemark is offline   Reply With Quote
Old 06-14-2014, 01:46 PM   #92
jmbach
Registered User
 
jmbach's Avatar
 
Join Date: Jan 2009
Posts: 769
Traditionally the CRC has been the 512 byte sector.
__________________
"Delay is preferable to error" - Thomas Jefferson
"If I have seen further it is by standing on the shoulders of Giants" - Sir Isaac Newton
jmbach is online now   Reply With Quote
Old 06-14-2014, 02:49 PM   #93
ggieseke
Registered User
 
Join Date: May 2008
Posts: 2,980
The CRC is only calculated on the actual size of the structure, which in this case is 280 bytes. I never read in less than 512 byte chunks, so jmbach is also right (I need the whole sector to run my crapware CRC program). I rewrote my program to make it Roamio-aware and it came up with the same checksum as the hex code that you posted earlier.

I don't know java, but once you change the definition of the structure it should be OK. The problem was that is was seeing the "magic" as 0x00000000 and the "state" as 0xEBBAFEED. Don't forget to swap those other two fields as well or it will crap out on the zonemaps.

There's some additional weirdness in the inode structures on a Roamio that I haven't completely figured out yet. I don't think it will matter for a basic expansion. The code to read inodes and map them to physical sectors on the drive is there in the jmfs source, but I don't think it's actually used.
ggieseke is offline   Reply With Quote
Old 06-14-2014, 04:48 PM   #94
jmbach
Registered User
 
jmbach's Avatar
 
Join Date: Jan 2009
Posts: 769
I am only close if it was a horseshoe game. Thanks for the correct info.
__________________
"Delay is preferable to error" - Thomas Jefferson
"If I have seen further it is by standing on the shoulders of Giants" - Sir Isaac Newton
jmbach is online now   Reply With Quote
Old 06-14-2014, 05:43 PM   #95
telemark
Registered User
 
Join Date: Nov 2013
Posts: 600
Feels like a game of something. Who gives up first? I'm about to lose.

Fixed the CRC computation. Added two swaps mentioned (4 fields), gives:
Code:
java.io.IOException: Logical block is located beyond the current storage: block=1121, view=tivo.view.MfsView@2ce908
	at tivo.io.Utils.getValidPhysicalAddress(Utils.java:460)
	at tivo.io.Utils.seekToLogicalBlock(Utils.java:480)
	at tivo.Mfs.loadZones(Mfs.java:451)
	at tivo.Mfs.addDisks(Mfs.java:347)
	at tivo.Mfs.<init>(Mfs.java:76)
	at tivo.Mfs.<init>(Mfs.java:70)
	at jmfs.MfsLayout.main(MfsLayout.java:42)

Debug:  5266 ? 5266
Debug:  Block0 isValid true
Debug:  Block0 isValid true
Debug:  storageSize=500107862016, nextFreeBlock=976773168, free=0
Debug: AppleDisk constructor #3
Debug: TivoDisk loadHeader
Debug:  Checksum 0x511ed733 ? 0x572822da
Debug:  Checksum 0x572822da ? 0x572822da
Debug:  TD isValidRoot MfsHeader64 { MfsHeaderHeader { state=0x0000, magic=0xEBBAFEED, CRC=0x572822DA }, validCRC=TRUE, sectors=967,859,200, partitions='/dev/sda10 /dev/sda11 /dev/sda12 /dev/sda13', logStart=1, logStamp=157, logSectors=1,000}
Debug:  Found boot TivoDisk at '/dev/sda'. Boot device is '/dev/sda'
Debug: MFS.java boot.getMfsHeader().getZoneMap()=ZoneHeader64 { startBlockPrimary=1121, startBlockBackup=1638398, length=1, size=524288, min=524288}
PartitionMap:
Code:
 1 PartitionEntry { number=1, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=1 (byte offset 0x00000200), sizeBlocks=63 (bytes 32,256, next offset 0x00008000), name='Apple', type='Apple_partition_map', logicalStartBlock=0 (physical 1, logical offset 0x00000000, physical offset 0x00000200), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 1, logical offset 0x00000000, physical offset 0x00000200), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 2 PartitionEntry { number=2, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=537225104 (byte offset 0x400ACF2000), sizeBlocks=8 (bytes 4,096, next offset 0x400ACF3000), name='Bootstrap 1', type='Image', logicalStartBlock=0 (physical 537225104, logical offset 0x00000000, physical offset 0x400ACF2000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 537225104, logical offset 0x00000000, physical offset 0x400ACF2000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 3 PartitionEntry { number=3, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=537225112 (byte offset 0x400ACF3000), sizeBlocks=8 (bytes 4,096, next offset 0x400ACF4000), name='Kernel 1', type='Image', logicalStartBlock=0 (physical 537225112, logical offset 0x00000000, physical offset 0x400ACF3000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 537225112, logical offset 0x00000000, physical offset 0x400ACF3000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 4 PartitionEntry { number=4, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=537225120 (byte offset 0x400ACF4000), sizeBlocks=8 (bytes 4,096, next offset 0x400ACF5000), name='Root 1', type='Ext2', logicalStartBlock=0 (physical 537225120, logical offset 0x00000000, physical offset 0x400ACF4000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 537225120, logical offset 0x00000000, physical offset 0x400ACF4000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 5 PartitionEntry { number=5, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=537225128 (byte offset 0x400ACF5000), sizeBlocks=8 (bytes 4,096, next offset 0x400ACF6000), name='Bootstrap 2', type='Image', logicalStartBlock=0 (physical 537225128, logical offset 0x00000000, physical offset 0x400ACF5000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 537225128, logical offset 0x00000000, physical offset 0x400ACF5000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 6 PartitionEntry { number=6, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=537225136 (byte offset 0x400ACF6000), sizeBlocks=8 (bytes 4,096, next offset 0x400ACF7000), name='Kernel 2', type='Image', logicalStartBlock=0 (physical 537225136, logical offset 0x00000000, physical offset 0x400ACF6000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 537225136, logical offset 0x00000000, physical offset 0x400ACF6000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 7 PartitionEntry { number=7, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=537225144 (byte offset 0x400ACF7000), sizeBlocks=8 (bytes 4,096, next offset 0x400ACF8000), name='Root 2', type='Ext2', logicalStartBlock=0 (physical 537225144, logical offset 0x00000000, physical offset 0x400ACF7000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 537225144, logical offset 0x00000000, physical offset 0x400ACF7000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 8 PartitionEntry { number=8, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=537225152 (byte offset 0x400ACF8000), sizeBlocks=1048576 (bytes 536,870,912, next offset 0x402ACF8000), name='Linux swap', type='Swap', logicalStartBlock=0 (physical 537225152, logical offset 0x00000000, physical offset 0x400ACF8000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 537225152, logical offset 0x00000000, physical offset 0x400ACF8000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 9 PartitionEntry { number=9, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=538273728 (byte offset 0x402ACF8000), sizeBlocks=1572864 (bytes 805,306,368, next offset 0x405ACF8000), name='/var', type='Ext2', logicalStartBlock=0 (physical 538273728, logical offset 0x00000000, physical offset 0x402ACF8000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 538273728, logical offset 0x00000000, physical offset 0x402ACF8000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 10 PartitionEntry { number=10, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=546138048 (byte offset 0x411ACF8000), sizeBlocks=1638400 (bytes 838,860,800, next offset 0x414CCF8000), name='MFS application region', type='MFS', logicalStartBlock=0 (physical 546138048, logical offset 0x00000000, physical offset 0x411ACF8000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 546138048, logical offset 0x00000000, physical offset 0x411ACF8000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 11 PartitionEntry { number=11, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=549414848 (byte offset 0x417ECF8000), sizeBlocks=427358320 (bytes 218,807,459,840, next offset 0x7470C06000), name='MFS media region', type='MFS', logicalStartBlock=0 (physical 549414848, logical offset 0x00000000, physical offset 0x417ECF8000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 549414848, logical offset 0x00000000, physical offset 0x417ECF8000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 12 PartitionEntry { number=12, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=547776448 (byte offset 0x414CCF8000), sizeBlocks=1638400 (bytes 838,860,800, next offset 0x417ECF8000), name='MFS application region 2', type='MFS', logicalStartBlock=0 (physical 547776448, logical offset 0x00000000, physical offset 0x414CCF8000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 547776448, logical offset 0x00000000, physical offset 0x414CCF8000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 13 PartitionEntry { number=13, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=64 (byte offset 0x00008000), sizeBlocks=537225040 (bytes 275,059,220,480, next offset 0x400ACF2000), name='MFS media region 2', type='MFS', logicalStartBlock=0 (physical 64, logical offset 0x00000000, physical offset 0x00008000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 64, logical offset 0x00000000, physical offset 0x00008000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
 14 PartitionEntry { number=14, signature=0x504D, signaturePad=0x0000, partitionMapSizeBlocks=14 (bytes 7168), startBlock=539846592 (byte offset 0x405ACF8000), sizeBlocks=6291456 (bytes 3,221,225,472, next offset 0x411ACF8000), name='SQLite', type='Ext2', logicalStartBlock=0 (physical 539846592, logical offset 0x00000000, physical offset 0x405ACF8000), logicalSizeBlocks=0 (bytes 0), status='Invalid,Free,NotInUse,NotBoot,Non-readable,Non-writable,PositionalBoot,', bootStartBlock=0 (physical 539846592, logical offset 0x00000000, physical offset 0x405ACF8000), bootSizeBytes=0, bootLoadAddress=00000000:00000000, bootEntryAddress=00000000:00000000, bootCRC=0x00000000, processorBytes=00000000	00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 00   |................|
Code:
storage=[
Info { physical=PartitionExtent { startBlock=546138048, length=0 }, logical=Extent { startBlock=0, length=0 } }, 
Info { physical=PartitionExtent { startBlock=549414848, length=0 }, logical=Extent { startBlock=0, length=0 } }, 
Info { physical=PartitionExtent { startBlock=547776448, length=0 }, logical=Extent { startBlock=0, length=0 } }, 
Info { physical=PartitionExtent { startBlock=64, length=0 }, logical=Extent { startBlock=0, length=0 } }] 
getSize()=0 logicalBlock=1121

__________________
Premiere 2 tuner & SiliconDust
on Comcast-CableCard + OTA

Last edited by telemark : 06-15-2014 at 02:59 AM.
telemark is offline   Reply With Quote
Old 06-15-2014, 04:06 AM   #96
telemark
Registered User
 
Join Date: Nov 2013
Posts: 600
Guess that's Done.
[for reading]
Code:
Disk '/dev/sda'
------------------
1 :  start=         1, size=        63 ( 31.50K), type='Apple_partition_map', name='Apple'
13:  start=        64, size= 537225040 (256.17G), type='MFS'                , name='MFS media region 2'
2 :  start= 537225104, size=         8 (  4.00K), type='Image'              , name='Bootstrap 1'
3 :  start= 537225112, size=         8 (  4.00K), type='Image'              , name='Kernel 1'
4 :  start= 537225120, size=         8 (  4.00K), type='Ext2'               , name='Root 1'
5 :  start= 537225128, size=         8 (  4.00K), type='Image'              , name='Bootstrap 2'
6 :  start= 537225136, size=         8 (  4.00K), type='Image'              , name='Kernel 2'
7 :  start= 537225144, size=         8 (  4.00K), type='Ext2'               , name='Root 2'
8 :  start= 537225152, size=   1048576 (512.00M), type='Swap'               , name='Linux swap'
9 :  start= 538273728, size=   1572864 (768.00M), type='Ext2'               , name='/var'
14:  start= 539846592, size=   6291456 (  3.00G), type='Ext2'               , name='SQLite'
10:  start= 546138048, size=   1638400 (800.00M), type='MFS'                , name='MFS application region'
12:  start= 547776448, size=   1638400 (800.00M), type='MFS'                , name='MFS application region 2'
11:  start= 549414848, size= 427358320 (203.78G), type='MFS'                , name='MFS media region'
------------------
Unallocated space: 0 (0.00b)

Zones Logical
------------------
  [0] /dev/sda10  start=      1121, size=         1 (512.00b), end=      1121  NODE descriptor
  [0] /dev/sda10  start=      1122, size=    524288 (256.00M), end=    525409  NODE data
  [1] /dev/sda10  start=    525410, size=        18 (  9.00K), end=    525427  MEDIA descriptor
  [2] /dev/sda10  start=    525428, size=       130 ( 65.00K), end=    525557  APP descriptor
  [2] /dev/sda10  start=    525558, size=   1112688 (543.30M), end=   1638245  APP data
  [2] /dev/sda10  start=   1638250, size=       130 ( 65.00K), end=   1638379  APP descriptor backup
  [1] /dev/sda10  start=   1638380, size=        18 (  9.00K), end=   1638397  MEDIA descriptor backup
  [0] /dev/sda10  start=   1638398, size=         1 (512.00b), end=   1638398  NODE descriptor backup
  [1] /dev/sda11  start=   1638400, size= 427356160 (203.78G), end= 428994559  MEDIA data
  [3] /dev/sda12  start= 428996608, size=         1 (512.00b), end= 428996608  NODE descriptor
  [3] /dev/sda12  start= 428996609, size=    524288 (256.00M), end= 429520896  NODE data
  [4] /dev/sda12  start= 429520897, size=        18 (  9.00K), end= 429520914  MEDIA descriptor
  [5] /dev/sda12  start= 429520915, size=       130 ( 65.00K), end= 429521044  APP descriptor
  [5] /dev/sda12  start= 429521045, size=   1113808 (543.85M), end= 430634852  APP data
  [5] /dev/sda12  start= 430634859, size=       130 ( 65.00K), end= 430634988  APP descriptor backup
  [4] /dev/sda12  start= 430634989, size=        18 (  9.00K), end= 430635006  MEDIA descriptor backup
  [3] /dev/sda12  start= 430635007, size=         1 (512.00b), end= 430635007  NODE descriptor backup
  [4] /dev/sda13  start= 430635008, size= 537210880 (256.16G), end= 967845887  MEDIA data
------------------

Zones Physical
------------------
  [4] /dev/sda13  start=        64, size= 537210880 (256.16G), end= 537210943  MEDIA data
  [0] /dev/sda10  start= 546139169, size=         1 (512.00b), end= 546139169  NODE descriptor
  [0] /dev/sda10  start= 546139170, size=    524288 (256.00M), end= 546663457  NODE data
  [1] /dev/sda10  start= 546663458, size=        18 (  9.00K), end= 546663475  MEDIA descriptor
  [2] /dev/sda10  start= 546663476, size=       130 ( 65.00K), end= 546663605  APP descriptor
  [2] /dev/sda10  start= 546663606, size=   1112688 (543.30M), end= 547776293  APP data
  [2] /dev/sda10  start= 547776298, size=       130 ( 65.00K), end= 547776427  APP descriptor backup
  [1] /dev/sda10  start= 547776428, size=        18 (  9.00K), end= 547776445  MEDIA descriptor backup
  [0] /dev/sda10  start= 547776446, size=         1 (512.00b), end= 547776446  NODE descriptor backup
  [3] /dev/sda12  start= 547776448, size=         1 (512.00b), end= 547776448  NODE descriptor
  [3] /dev/sda12  start= 547776449, size=    524288 (256.00M), end= 548300736  NODE data
  [4] /dev/sda12  start= 548300737, size=        18 (  9.00K), end= 548300754  MEDIA descriptor
  [5] /dev/sda12  start= 548300755, size=       130 ( 65.00K), end= 548300884  APP descriptor
  [5] /dev/sda12  start= 548300885, size=   1113808 (543.85M), end= 549414692  APP data
  [5] /dev/sda12  start= 549414699, size=       130 ( 65.00K), end= 549414828  APP descriptor backup
  [4] /dev/sda12  start= 549414829, size=        18 (  9.00K), end= 549414846  MEDIA descriptor backup
  [3] /dev/sda12  start= 549414847, size=         1 (512.00b), end= 549414847  NODE descriptor backup
  [1] /dev/sda11  start= 549414848, size= 427356160 (203.78G), end= 976771007  MEDIA data
------------------


	Size of zones:
	Used:	8826920 (4.21G)
	Free:	959015192 (457.29G)
	Total:	967842112 (461.50G)

	Recordable space reported by Tivo: 967859200 (461.51G), approximately 71 HD hours


MfsLayout: done


Last edited by telemark : 06-15-2014 at 04:54 AM.
telemark is offline   Reply With Quote
Old 06-15-2014, 12:23 PM   #97
jmbach
Registered User
 
jmbach's Avatar
 
Join Date: Jan 2009
Posts: 769
It looks good. Which modules did you end up modifying to get it done.
__________________
"Delay is preferable to error" - Thomas Jefferson
"If I have seen further it is by standing on the shoulders of Giants" - Sir Isaac Newton
jmbach is online now   Reply With Quote
Old 06-15-2014, 04:50 PM   #98
telemark
Registered User
 
Join Date: Nov 2013
Posts: 600
Quote:
Originally Posted by jmbach View Post
It looks good. Which modules did you end up modifying to get it done.
It's checked in on github, but will need to be cleaned up.

There's 2 new classes, BiRandomAccessFile and BiDataInputStream...which took RandomAccessFile and DataInputStream and were reimplemented to support flexible byte ordering. Then any source file using the the old class was modified to reference the new classes. My preference would have been to subclass, but because these were built ins, they were defined as final (and can not be overridden).

There was another reading method, I guess maybe it's called NIO, that had to have its mode changed, but it had this feature built in.

Then 4 fields were swapped (2 swaps) as ggieseke directed.
The Crc function had to be modified, which was some guesswork, but it self confirms that it's right.
Then Roamio partition map has a lot of zero-ed fields, some of which JMFS was depending on for higher logic, so sane implied defaults had to be put in.

MLS does not work, probably because it's using inodes, which have not been reexamined yet.

To get writing to work, BiDataOutputStream, would have to be implemented.
__________________
Premiere 2 tuner & SiliconDust
on Comcast-CableCard + OTA

Last edited by telemark : 06-15-2014 at 07:47 PM.
telemark is offline   Reply With Quote
Old 06-16-2014, 07:55 AM   #99
jmbach
Registered User
 
jmbach's Avatar
 
Join Date: Jan 2009
Posts: 769
Have you tried it on your 4TB construct yet?

I'll download your repository and compile it and try it on the one I have hopefully after work if I don't run over too long.
__________________
"Delay is preferable to error" - Thomas Jefferson
"If I have seen further it is by standing on the shoulders of Giants" - Sir Isaac Newton
jmbach is online now   Reply With Quote
Old 06-16-2014, 10:38 AM   #100
telemark
Registered User
 
Join Date: Nov 2013
Posts: 600
I gave it a try last night, but I think the USB-SATA adapters I have are not reporting large drive sizes correctly.

It sounds like you have a compatible one if you never had problems before.

I'll have to try again after I build a Java+SATA box.
__________________
Premiere 2 tuner & SiliconDust
on Comcast-CableCard + OTA

Last edited by telemark : 06-16-2014 at 03:26 PM.
telemark is offline   Reply With Quote
Old 06-16-2014, 04:55 PM   #101
jmbach
Registered User
 
jmbach's Avatar
 
Join Date: Jan 2009
Posts: 769
Not sure the the mod is important in your edits, but did you make the change in the Apple Disk module to handle images larger than 0xEFFFFFFF?
__________________
"Delay is preferable to error" - Thomas Jefferson
"If I have seen further it is by standing on the shoulders of Giants" - Sir Isaac Newton
jmbach is online now   Reply With Quote
Old 06-16-2014, 06:51 PM   #102
telemark
Registered User
 
Join Date: Nov 2013
Posts: 600
I added a different version of the patch to my repository now and tested.
mfslayout does work with a 4TB image.

Last edited by telemark : 06-18-2014 at 11:39 AM.
telemark is offline   Reply With Quote
Old 06-28-2014, 11:16 PM   #103
telemark
Registered User
 
Join Date: Nov 2013
Posts: 600
64bit map

Attached is 3 different partition maps using the same offsets.

The all 32bit one is the same as the original used in imaging.
Then there's an all 64bit one.
And an all 64bit, except one.

The results I got on a Base Roamio, running 20.3.8:
All 32bit works
All 64bit, the roamio triggers a reformat.
All but first one, works again.

If someone wants to try this at home, I used the command:
dd if=4TBr1-64.map of=/dev/sdX count=14 seek=1
to install them.
Attached Files
File Type: zip pcreate.zip (26.8 KB, 9 views)
telemark is offline   Reply With Quote
Old 06-29-2014, 04:08 PM   #104
jmbach
Registered User
 
jmbach's Avatar
 
Join Date: Jan 2009
Posts: 769
Quote:
Originally Posted by telemark View Post
Attached is 3 different partition maps using the same offsets.

The all 32bit one is the same as the original used in imaging.
Then there's an all 64bit one.
And an all 64bit, except one.

The results I got on a Base Roamio, running 20.3.8:
All 32bit works
All 64bit, the roamio triggers a reformat.
All but first one, works again.

If someone wants to try this at home, I used the command:
dd if=4TBr1-64.map of=/dev/sdX count=14 seek=1
to install them.
Similar results Roamio Plus with 20.4.1

All 32bit - works
All 64bit - reformat loop
Mixed with Partition 1 32bit and the rest 64bit - works

Now what would happen if we had an image that:
a) had at least one partition start beyond 2.2TB
b) a partition larger than 2.2TB
c) a combination of the above.
__________________
"Delay is preferable to error" - Thomas Jefferson
"If I have seen further it is by standing on the shoulders of Giants" - Sir Isaac Newton
jmbach is online now   Reply With Quote
Old 06-29-2014, 05:37 PM   #105
ggieseke
Registered User
 
Join Date: May 2008
Posts: 2,980
Quote:
Originally Posted by jmbach View Post
Similar results Roamio Plus with 20.4.1

All 32bit - works
All 64bit - reformat loop
Mixed with Partition 1 32bit and the rest 64bit - works

Now what would happen if we had an image that:
a) had at least one partition start beyond 2.2TB
b) a partition larger than 2.2TB
c) a combination of the above.
In my experience, 64-bit partition table entries trigger a reformat and boot loop if any of the entries go beyond a 32-bit value (0xFFFFFFFF) for the start or size fields. The partition tables we're talking about here don't need to be 64-bit, so as long ast the first Apple_partition_map entry is 32-bit it seems to work.

I haven't specifically tested a Roamio running 20.4.1, but 20.3.8 still had those limitations and I don't think anything fundamental has changed since then. For now I think 5 & 6 TB drives are still out of the question. A properly prepared 4TB drive with the MFS headers and zone maps already in place seems to work, as telemark's work has shown.
ggieseke is offline   Reply With Quote
Reply
Forum Jump




Thread Tools


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Advertisements

TiVo Community
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
vBulletin Skins by: Relivo Media

(C) 2013 Magenium Solutions - All Rights Reserved. No information may be posted elsewhere without written permission.
TiVoŽ is a registered trademark of TiVo Inc. This site is not owned or operated by TiVo Inc.
All times are GMT -5. The time now is 06:50 PM.
OUR NETWORK: MyOpenRouter | TechLore | SansaCommunity | RoboCommunity | MediaSmart Home | Explore3DTV | Dijit Community | DVR Playground |