Nvidia Shield TV SSD - done

Search This thread

kavey

Senior Member
Oct 4, 2008
82
21
Hello all

Just wanted to update this thread with my experience upgrading my Nvidia Shield Pro (2015)

I've had my 2015 Shield since it launched and over the last couple of years or so, I found it started to crash every so often, particularly in the summer when it's warmer. Having had the device for 8 years, I figured my SSHD would need replacing and after reading this thread and seeing various videos on YT on how to do this, I took the plunge.

My experience was challenging, but in the end I (touchwood) I have a fully upgraded Shield with a 500GB SSD and it has revitalised one of the best pieces of hardware I've ever owned.

I've put together some notes below with the hope that it may help some others that may be looking to replace their drives.

1. Opening the Shield
  • This was a fairly simple process - I already had an ifixit kit with pry tools and spudgers, so opening the device was pretty straightfoward
  • Once open there are three cables which need to be disconnected from the main board - two which are taped to the SSD, one SATA ribbon cable - these are easy to unplug, just make sure the black tab on the retainer for the SATA cable is lifted to allow the cable to come out easily.
  • As my device is pretty old, I took the opportunity to clean the fan and re-grease the APU with some nice new thermal paste I had from my PC building kit - (another that should help in the summer should the device get warm, but in reality the biggest generator of heat in the device is actually the mechanical SSHD which has now been replaced and the device runs very cool now in comparison)
2. Software
  • I wanted to image the drive as a priority so looked at the various options for doing this.
  • If you are doing a straight clone with a 500GB drive, you don't need to mess around with adjusting the lastpart.bin to tweak the partition table, and as 500GB SSDs are pretty cheap these days, didn't seem worth it to get a smaller drive so I stuck with 500GB (most of my media is on NAS, so the Shield has very little stored on it, unless I go on holiday when I might pack the drive with some movies and shows)
  • Various mentions in this thread suggested doing a straight clone with HDDRawCopy. This has the ability to clone the drive to an image first, and I wanted a more permanent backup in case I needed to repeat the operation in the future, and keeping an image meant I will always have my Widevine keys for Netflix etc. The free version of HDDRawCopy is speed limited to 50MB/s so I looked for something else - I wanted to be able to pull the data from the original drive as fast as possible, 50MB/s would have been 6+ hours!
  • In the end i ended up using a similar piece of software I found through some searching - https://dmde.com/ as it allowed me to create a split-file image at full drive speed with the ability to directly hexedit sectors in the image (or even directly on a drive if you dare!) should I ever decide to upgrade to a different sized SSD in the future - when cloning to a 500GB drive, the image can be used as-is - but using the raw original image DMDE can create a new image for a different sized drive (using the same process as the othe thread) to write in one go, rather than having to write multiple different parts of the drive in different places etc. Luckily, despite my drive being 8 years old and being left on constantly, I was please to find that DMDE was able to clone the drive perfectly and no bad sectors found, despite lots of recent crashes.
3. Setup
  • I did not unlock bootloader - I don't understand why this is suggested - if you are cloning the drive on a sector level as I was, this felt unnecessary. I'm not sure if this is needed when changing the size of the drive either, but some of the guides suggest it - I'm not sure why. I didn't want to wipe my drive (which unlocking the bootloader will force) and feel this is an unnecessary pre-requisite
  • Due to various issues listed below, I used a variety of means to connect the drives to my PC - initially I used SATA-USB connectors, as well as using the onboard SATA on my motherboard - I didn't find any difference in using either option, except the onboard SATA was a LOT faster than USB when it came to writing the image to the SSD - the main thing in each case is to understand the Android formatted drive will appear as unreadable to a Windows PC and regardless of how it is connected, do not initialise or attempt any other operation on the drive in Windows (DMDE will be able to see the drive correctly and show you the partition table so you can see how the drive is built even though Windows doesn't understand how to read it)
  • As I am just doing a straight clone, I haven't messed around with 4k alignment, and I don't see the advantage in any case - it may be beneficial if using a larger SSD of course due to the way sectors are read and written with larger LBA devices
4. SSD clone
  • This was the area I had the biggest problems - the original SSHD in the Shield has a power rating of [email protected] - 3.5W max - this is important to note, as foolishly I assumed that the power draw of most SSDs would be similar if not lower (no moving parts) - SATA is SATA right?
  • I've used SSDs for years in various PCs and laptops and have had great experience with Crucial (Micron) so I picked a 500GB Crucial BX500 - CT500BX500SSD1
  • The drive cloning operation was flawless (SATA-USB), popped the new SSD in the Shield, booted up first time! Hallelujah - no issues. Boot time went from 90 secs or so down to 40 secs. Was beautiful.... until it wasn't.
  • After about 2 days, the Shield crashed and then after reboot would not load in to the launcher - no problem I thought - maybe the crash corrupted the data - so i took the SSD out and reflashed the image to the drive (this time from the SATA on the motherboard) thinking this would fix it. It did not.
  • After analysing the drive on my PC and using the Crucial Storage Executive software I discovered the SSD had been write-locked - a process the SSD uses to 'protect' the data on the SSD if it encounters too many errors so it can be recovered, but prevents new data being written.
  • I figured I might have been unlucky with this drive so did an RMA and got a replacement. Followed the same process, and this time within 24h the same thing happened to the new SSD - crashed and then reboot fails to load home launcher. So i put back the original drive until I could work out what the hell was going on.
  • When I took the second drive out I notice the power draw on it was 1.7A - this means that Crucial BX500 would require up to 8.5W which is more than double the power requirement! I figured that this draw was the culprit as the Shield was not providing enough current to the drive to be able to write data correctly. Cue a few days of searching for the various datasheets of SSDs and reviews of them on technology sites to try to find an SSD that had a power draw in-line with the original. I noticed that a lot of people had success with Samsung, so I searched the data sheets which showed that the max power draw on the 500GB 870 EVO was 3.5W - perfect....
  • I ordered the Samsung model MZ-77E500B/EU (870 EVO 500GB) which to my horror had printed on it a 1.1A current draw! Now I wasn't sure about it as the datasheet said 3.5W, but I figured what the hell and would RMA it if it went wrong. I wrote the image from my backup, the same one used with the Crucial and again it worked perfectly in the Shield, and now a week on from installing it - despite the concern over the rated power printed on the SSD, it has been working flawlessly and touchwood, is going to last where the Crucial would barely last a day before going into a write-lock state
5. Conclusion
  • Aside from the dramas with the SSD, the process is very straightforward - it can be daunting opening up tech and playing with innards, but as someone who has build PCs for years, this was a pretty simple process, and the benefit of using DMDE means I have a full image of my drive I can re-clone from, or even resize in future should I need.
  • I paid around £28 for the Crucial SSD, thinking I only needed something cheap, but this 'cheapness' meant that the power draw on the BX500 was a lot higher - the BX500 does NOT have an SLC cache nor a DRAM cache, so I expect every write operation requires full power from the host device - I suspect this is why these SSDs failed - the Shield was not able to power the write operations correctly, causing corrupt data, forcing the drive to write lock - DRAMless and cache-less SSDs are cheaper but need more power it would seem
  • The 870 EVO was £40 - and for this you get a DRAM cache and an SLC cache which, aside from speeding up the drive significantly (writing the image to the Samsung drive on my PC ran at an average of about 375MB/s wheres the Crucial drive started it's write at about 200MB/s but by the end had slowed to around 50MB/s), I believe the lower power consumption is a key factor as to why the Samsung worked and the Crucial didn't
  • Aside from much faster operation (Kodi launches almost instantly vs 5-10 secs on the SSHD) and very fast boot times (30-40 secs), the whole device runs MUCH cooler than before - the SSHD original was a big heat generator and is possibly a source of the crashes I was seeing in hotter weather.
So there you have it. Power seems to be an important and overlooked factor in success with this process - the BX500 is a great drive which will go into my PC when I get the 2nd RMA back, but when looking for an SSD to replace the internal SSHD in your Nvidia Shield - try to ensure the power draw on the device isn't too much for the Shield.

This sounds simple but reviews of SSDs don't usually mention power draw - you have to search for their datasheets to find that information. I suspect that DRAM-less and SLC cache-less drives are not ideal due to the controller having to write directly to the MLC/TLC/QLC, whereas SSDs with DRAM-cache and/or SLC cache may be the best option due to the inherent write-buffering these drives offer.

Moral of the story - Shield needs a low power SSD, check the power rating on your drive before trying it in the Shield as it will likely brick the SSD if it requires more power than the shield is able to provide!

As it's only been a week since installing the Samsung, I can't say 100% that this drive is 'OK', but so far it's been great - I can certainly say that despite the BX500 being a good solid SSD for general use, its power draw seems just too much for the Shield. The MX500 by comparison I have read people have had success with, but again the MX500 has a DRAM cache (and an SLC I think) which again suggests that these drives are preferable as they seem to have a lower power draw.

YMMV, good luck with your Shields - I will update this post in a while to let people know if everything is still working!

Edit: two weeks on and Samsung 870 still working well, no issues encountered 🤞
 
Last edited:
Apr 18, 2023
7
1
I wanted to share my experience so far which not going as well as @kavey .

My reason for wanting to upgrade to an SSD was for performance, but mainly because I didn't want to wait until the HDD died or corrupted before upgrading as I didn't want to spend hours trying to get it back up and running.

Well, my plan backfired.
I am days into this :(

I purchased a Samsung 870 EVO 500GB SSD.
Reading through the posts on here, it looks like I purchased the right SSD as I assume power draw shouldn't be an issue.

First I tried cloning the HDD to the SSD directly using HDD Raw Copy Tool which took hours.

Put the SSD back into the Shield, black screen, no boot, no Nvidia logo nothing.
Checked all the cables, wires and re-connected them, same issue.

Took out the SSD and this time I tried using DD to clone the SSD directly through my mac (using a USB to SATA adapter).

Put the SSD back into the Shield, same issue, black screen, no Nvidia logo.

At this point I was getting nervous so I put the original HDD back in, and that booted straight away :)

So I found this thread and saw @kavey experience with DMDE.
Downloaded it, and this time I cloned the HDD to a .bin image.

Then I restored the .bin image to the SSD, each time I was using the SATA connection on the motherboard of my PC.

Put the SSD back into the Shield, tried again, black screen, no Nvidia logo, no boot.

With the SSD in the Shield, I tried getting to the fastboot menu so I could try recovery mode.
However, every single time I tried to get to the fastboot menu, it failed, black screen, nothing.

Getting nervous again, I put the original HDD back into the Shield and this time it wouldn't boot! Black screen, no logo, on the original HDD!

@kavey here is a screenshot of DMDE with the original HDD open, can you confirm if that file/partition structure is what I should be expecting?

Now I am not sure what to do.

I download the ZIP file (via bittorrent) at the start of this thread and restored the start and end bin files using DD.
Put the SSD into the Shield, now I am getting the fastboot menu come up without me even pressing the shield button.
But selecting Continue or Boot Recovery Kernal does nothing, just says Booting Recovery Kernal... and does nothing.

So now what do I do?
I am given up trying to retain my data and just want to get my shield working again.

Is there an official recovery image from Nvidia I can download somewhere? Or a way to recover the device via adb or something similar?
 

kavey

Senior Member
Oct 4, 2008
82
21
@kavey here is a screenshot of DMDE with the original HDD open, can you confirm if that file/partition structure is what I should be expecting?


Hey sorry you are having trouble - yes that partition table looks correct, so assuming you had 0 read errors, your DMDE image should be good

As to why the black screen, many posts in this thread have mentioned this, some suggesting leaving it for a while then rebooting, but I think those instances the device did boot, but was just rebuilding cache, which would make sense for 'new' drives whereas a cloned drive should really just boot straight away

My experience was that my Shield worked every time (even with the bad drives) i.e. I always got the Nvidia logo then the circles and then full boot so I haven't experienced such an issue to try to resolve

Black screen and no fastboot could mean it's not seeing the drive at all (the shield doesn't have a ROM - everything is on the drive in those custom partitions) or perhaps HDMI issue. The only thing I can think is to ensure the cables are seated correctly (especially ensuring the tab on the sata connector is locked when the cable is put back) and undamaged - I was very careful with the small black connector as that has tiny wires and could get damaged easily especially if repeatedly pulling it and replacing)

As to rebuilding a fresh drive - I believe that is covered in the first post - the OP created a new drive using the developer image from Nvidia after building the partition structure but as I took the clone route, I haven't followed that process to be able to advise

I did use DMDE so that if I ever needed to take that route DMDE can extract the necessary firstpart and lastpart pieces as well as my own widevine keys but as I haven't needed to do that, I can't help on that process.

Edit: I see you have already created the SSD with DD and it booted to fastboot - from what I understand all you need to do now is to connect it to a pc and use ADB to flash the developer image. There is another thread on XDA (apologies on my phone so can't easily find it while editing) about using any size drive in the shield - that has more details on the developer image flashing process as I recall
 
Apr 18, 2023
7
1
@kavey thanks for your quick reply, really appreciate it.

Hey sorry you are having trouble - yes that partition table looks correct, so assuming you had 0 read errors, your DMDE image should be good
0 read errors every time.

some suggesting leaving it for a while then rebooting
Tried waiting for 30 mins on black screen and then power cycling, same issue.

As to rebuilding a fresh drive - I believe that is covered in the first post
I have followed the instructions on this first post.
I used DD to image the start and end bin files.

However, when attempting to boot from this, I immediately get the fastboot screen and it won't boot normally.
When reading through this thread, it seems it's meant to normally boot.

It's not the HDMI path, it displays the fastboot screen just fine and CEC is completely disabled on the display.

The only thing I can think is to ensure the cables are seated correctly (especially ensuring the tab on the sata connector is locked when the cable is put back) and undamaged
I was very careful with this too and I thought I might have broken the ribbon cable somehow because of the boot issues.
However, using the start and end bin files in this thread it boots into fastboot every time so that would mean that the SATA connection is working properly as you said there is no ROM or DOM, although now I really wish they had one (it would make recovery easier).

from what I understand all you need to do now is to connect it to a pc and use ADB to flash the developer image.
I have tried all the steps in this guide (hopefully this is what you are referring to?):

However regardless of the recovery image version I try, each time I get this error:
FAILED: (remote: Partition write failed!)

Same error regardless of if it's the staging blob, the boot.img or the recovery.img all of them I get the same partition write failed.

Could it be because the start.bin and end.bin do not create the correct structure on the drive?
Is there a more minimal way of preparing a new vanilla SSD ready for recovery?

Also, how did you determine your initial SSD (Crucial) had the write lock turned on?
Could this be my issue with my Samsung 870 EVO 500GB?

I am lost about what things to try next :(
 

kavey

Senior Member
Oct 4, 2008
82
21
Could it be because the start.bin and end.bin do not create the correct structure on the drive?
Is there a more minimal way of preparing a new vanilla SSD ready for recovery

Start.bin contains the bootloader with recovery/fastboot and other system partitions but not the full OS, so that looks like it has written fine - it's the last part that contains the custom GPT partition table (which is why it requires editing if the drive size changes from 500GB) - this is the most minimal way already

Perhaps try extracting the last part from your own image from the DMDE image - perhaps one of the lastpart's floating around online might be for a diff size drive? As you are using adb to flash you have to be bootloader unlocked as well otherwise the shield prevents flashing so that could be the issue as well

I doubt your drive is writelocked if you have managed to get the first part there, but to test it's just a case of trying to format it in windows and seeing if data writes to it successfully - crucial also has its own SSD software and Samsung has its Magician for SSD which have show diagnostic info and allow for resetting drives - i knew my crucial were writelocked when windows couldn't format and the crucial storage executive software couldn't sanitize (reset) the device to factory default
 
Apr 18, 2023
7
1
Perhaps try extracting the last part from your own image from the DMDE image
Can you point me in the right direction in regards to this, not sure how I achieve this.

As you are using adb to flash you have to be bootloader unlocked as well otherwise the shield prevents flashing so that could be the issue as well
When I run the command to unlock the bootloader, it says it's already unlocked.

but to test it's just a case of trying to format it in windows and seeing if data writes to it successfully
I have used the OS tools to initialise and format the drive multiple times, so probably not that, but I am running out of ideas.

Start.bin contains the bootloader with recovery/fastboot and other system partitions but not the full OS
Are you sure it's not the full OS?
I read the first 20 pages of this thread and users were reporting it booted fine for them, the only issue that was reported was that Netflix wasn't working due to the ESN.
Wouldn't that indicate that it is the full OS?

I guess I am trying to determine what is the best practice procedure if one was needing to provision a completely blank replacement drive?
Surely NVIDIA have official documentation for this? and not have to rely on the community?

NVIDIAs official instruction readmes cover flashing the recovery image, however, it appears the assumption is they have their factory-installed storage inside the device and that storage is functional and without errors/issues.
You would think in a "recovery" scenario that it's highly likely there is an issue with the originally installed storage and that there would be a procedure if the storage had to be completely replaced.

Its frustrating because my original storage drive no longer boots either and I have no idea why.
 
Apr 18, 2023
7
1
nvidia does not present the original keys to your device
I was hoping that NVIDIA used a dedicated chip similar to Apple's Secure Enclave / TPM to store secrets.

I was unaware that keys were stored in the main storage.
That is disappointing and really affects repairability.
All I wanted is to replace the HDD with an SSD.

Unsure if I want to purchase a new Shield if this is the experience.
 

kavey

Senior Member
Oct 4, 2008
82
21
Can you point me in the right direction in regards to this, not sure how I achieve this.
Not in front of my PC until the weekend to be able to check the details, but essentially it's just copying the relevant sectors from your image file (the sector numbers to copy are the same as the DD process for lastpart) to a new file as a .bin (just a raw binary data file) and then using that file instead of the lastpart floating around

I'll update over the weekend when I've had time to check the sector numbers etc myself but in DMDE it's pretty easy to select a sector range to extract (same as the writing process)
 

eddieyee

Member
Mar 13, 2008
35
3
Not in front of my PC until the weekend to be able to check the details, but essentially it's just copying the relevant sectors from your image file (the sector numbers to copy are the same as the DD process for lastpart) to a new file as a .bin (just a raw binary data file) and then using that file instead of the lastpart floating around

I'll update over the weekend when I've had time to check the sector numbers etc myself but in DMDE it's pretty easy to select a sector range to extract (same as the writing process)
Thanks for this! If there's any way to do it with the old drive connected without making a full image, would be awesome. Mine is reading up to a point and dies due to partial hard drive failure, I know the first 3gb reads fine, but when I try to dd the whole drive to an image it dies part way through. Also, when I did try the OP dd image without the keys, it gets to the login and always fails. I've been reading it's due to the APIs not responding correctly anymore. Any way around this?
 

kavey

Senior Member
Oct 4, 2008
82
21
DISCLAIMER - I'm posting this to assist the above with generating their own firstpart/lastpart to ensure they have the correct 'pieces' to flash to a new drive. Using your own drive should also mean your personal widevine keys are also preserved - but as I have not needed to use this process myself (I just used DMDE to clone the entire drive which worked for me) WHILE I HAVE TESTED THIS MYSELF TO GENERATE MY OWN FIRSTPART AND LASTPART FILES, I HAVE NOT NEEDED TO WRITE THEM TO MY SSD AS MY CLONE IS WORKING - I TAKE NO RESPONSIBILITY FOR FAILURE. These sector numbers are the same as you would extract for the process to use a different sized drive but if you are cloning to another 500GB then you don't need to fiddle around with the lastpart in HxD to edit the partition table to adjust it for a different sized drive (see https://forum.xda-developers.com/t/...sd-hdd-of-any-size-only-for-satv-pro.3440195/ - if you DO want to try a different sized drive - DMDE can edit the lastpart as well in its editor mode, using the same process as HxD, however you would need to find the HEX code for the block size for your drive as explained in that thread - there is a tool/spreadsheet linked in there that can help.)

--------------------------

Okay so quick instructions on how to clone the bare OS and partition data from an old drive with DMDE, leaving the userdata blank:

I imaged my drive using DMDE on windows as it has the ability to easily extract (and even modify sectors) as needed, though as I have only cloned my drive to another 500GB drive, I have not needed to use the sector editing function, but now i have a master backup, the facility is there if I ever needed to change drive to another size in the future. I have no link to DMDE and only refer to it as it has worked flawlessly for me.

First select your drive in DMDE and load the data to see an image like this which is the drive layout. Essentially it's a custom linux partition layout for Android

partitions.PNG


I'm using the image I created from my original drive here, but if you haven't already imaged and need to do this fresh, just select the physical drive option and select the Shield drive and you should see the same partition table. If you can do a full clone first and then work on your master backup image, that is adviseable to reduce wear/use on the original drive, but if your drive is failing and a full clone may not be possible copying just the essential data from the drive should be enough.

2. Cloning just the OS (bootloader, recovery, system etc) (your own personal firstpart.bin) you need to copy all the sectors up until the last partition which starts at sector 6899870 as seen in the image above. This will pull around 3.5GB from the drive, which in your case @eddieyee should hopefully help with your failing drive being able to dump 3.5GB in a few minutes instead of you having to do a full clone which would take hours and will probably fail when the drive heats up.To do this, simply choose 'Copy Sectors' with these values, with your output to a file.


firstpart.PNG


3. To generate your own lastpart.bin, you only need the last 10 sectors which contain the GPT partition table:

lastpart.PNG


4. To then copy those backed-up first/lastpart files, use DMDE to write those sectors to your new drive using the same process ensuring you use the same sector numbers (e.g. firstpart should be written from 0-6899869 and the 10 sectors in the lastpart should be written from sectors 976773158-976773167), but using your new files as the source and the new SSD as the destination. NOTE: when you open firstpart and lastpart in DMDE separately, they WON'T show any data/partition information as they are 'incomplete' raw binary files - only when you reconstruct both firstpart and lastpart combined (well lastpart mainly tbh as that is the partition table) and then re-read the drive as a source in DMDE you should then see the same layout as the original which should confirm the process has worked.

Hope that helps, good luck!
 
Last edited:

ivanovjohn2018

Senior Member
Jan 20, 2018
51
1
DISCLAIMER - I'm posting this to assist the above with generating their own firstpart/lastpart to ensure they have the correct 'pieces' to flash to a new drive. Using your own drive should also mean your personal widevine keys are also preserved - but as I have not needed to use this process myself (I just used DMDE to clone the entire drive which worked for me) WHILE I HAVE TESTED THIS MYSELF TO GENERATE MY OWN FIRSTPART AND LASTPART FILES, I HAVE NOT NEEDED TO WRITE THEM TO MY SSD AS MY CLONE IS WORKING - I TAKE NO RESPONSIBILITY FOR FAILURE. These sector numbers are the same as you would extract for the process to use a different sized drive but if you are cloning to another 500GB then you don't need to fiddle around with the lastpart in HxD to edit the partition table to adjust it for a different sized drive (see https://forum.xda-developers.com/t/...sd-hdd-of-any-size-only-for-satv-pro.3440195/ - if you DO want to try a different sized drive - DMDE can edit the lastpart as well in its editor mode, using the same process as HxD, however you would need to find the HEX code for the block size for your drive as explained in that thread - there is a tool/spreadsheet linked in there that can help.)

--------------------------

Okay so quick instructions on how to clone the bare OS and partition data from an old drive with DMDE, leaving the userdata blank:

I imaged my drive using DMDE on windows as it has the ability to easily extract (and even modify sectors) as needed, though as I have only cloned my drive to another 500GB drive, I have not needed to use the sector editing function, but now i have a master backup, the facility is there if I ever needed to change drive to another size in the future. I have no link to DMDE and only refer to it as it has worked flawlessly for me.

First select your drive in DMDE and load the data to see an image like this which is the drive layout. Essentially it's a custom linux partition layout for Android

View attachment 5894547

I'm using the image I created from my original drive here, but if you haven't already imaged and need to do this fresh, just select the physical drive option and select the Shield drive and you should see the same partition table. If you can do a full clone first and then work on your master backup image, that is adviseable to reduce wear/use on the original drive, but if your drive is failing and a full clone may not be possible copying just the essential data from the drive should be enough.

2. Cloning just the OS (bootloader, recovery, system etc) (your own personal firstpart.bin) you need to copy all the sectors up until the last partition which starts at sector 6899870 as seen in the image above. This will pull around 3.5GB from the drive, which in your case @eddieyee should hopefully help with your failing drive being able to dump 3.5GB in a few minutes instead of you having to do a full clone which would take hours and will probably fail when the drive heats up.To do this, simply choose 'Copy Sectors' with these values, with your output to a file.


View attachment 5894551

3. To generate your own lastpart.bin, you only need the last 10 sectors which contain the GPT partition table:

View attachment 5894553

4. To then copy those backed-up first/lastpart files, use DMDE to write those sectors to your new drive using the same process ensuring you use the same sector numbers (e.g. firstpart should be written from 0-6899869 and the 10 sectors in the lastpart should be written from sectors 976773158-976773167), but using your new files as the source and the new SSD as the destination. NOTE: when you open firstpart and lastpart in DMDE separately, they WON'T show any data/partition information as they are 'incomplete' raw binary files - only when you reconstruct both firstpart and lastpart combined (well lastpart mainly tbh as that is the partition table) and then re-read the drive as a source in DMDE you should then see the same layout as the original which should confirm the process has worked.

Hope that helps, good luck!
interestingly , DMDE can be used to clone a soldered emmc from a 16GB set - top box ?
 
Apr 18, 2023
7
1
Okay so quick instructions on how to clone the bare OS and partition data from an old drive with DMDE, leaving the userdata blank

@kavey just want to say really appreciate the time you have taken to put those instructions together.

Sadly, while I was able to follow your instructions and create a start and end image as well as restore those images to my SSD...

My Shield is still not booting at all, just a blank screen (no nvidia logo).

I have scanned the drive after the restore in DMDE and the whole structure is there.

Do you think possibility there is something wrong with the bootloader?

The reason I think this is because when using the start and end images at the start of this thread, my Shield boots into fastboot.
So that would mean that bootloader is at least working.

But my images whether partial (start, end) or a complete clone is not booting.
Maybe the bootloader in my image/drive is NOT unlocked?
But the image posted here IS unlocked?

In terms of the partition structure, do you know which partition is the bootloader?
Or possibly the partition which stores the Netflix keys etc?

That way I restore the image from this post over the top of mine, but leave the partition with the Netflix keys intact and see if that boots?

Thanks again for your help, I think I might have to buy a new Shield soon as I am not getting anywhere :(
At least the new Shields have solid-state disks already.
 

kavey

Senior Member
Oct 4, 2008
82
21
Do you think possibility there is something wrong with the bootloader?
It's possible, but I can't troubleshoot an issue I haven't faced so tough to say for sure. I would try connecting it to a PC with ADB and see if it can see the device as a starter, but then that might be a whole new rabbit hole depending on the result

The reason I think this is because when using the start and end images at the start of this thread, my Shield boots into fastboot.
So that would mean that bootloader is at least working.

But my images whether partial (start, end) or a complete clone is not booting.
Maybe the bootloader in my image/drive is NOT unlocked?
If you hadn't unlocked bootloader on your own drive then yes, the image remains locked - normally when you unlock a bootloader if forces a full wipe of the device, so if you don't remember doing that, your image probably isn't unlocked. But again this should only be an issue when using ADB to flash the device from a PC - ADB needs the device to be bootloader unlocked in order to be able to make changes to the device, such as flashing an updated OS.

As i just did a clone, i didn't unlock bootloader as it wasn't necessary for me.

But the image posted here IS unlocked?
I believe so, but I haven't used it to be able to say 100%

In terms of the partition structure, do you know which partition is the bootloader?
Or possibly the partition which stores the Netflix keys etc?

Again, I haven't done this or needed to, but I found this thread https://forum.xda-developers.com/t/...vine-keys-extraction-and-re-flashing.4203089/ which looks like the offset 0x2200000 - in DMDE this corresponds to the EKS partition from the DMDE partition list (I blurred out my data for obvious reasons).

WVEKS.PNG


This thread here might also be helpful as the poster seems to have had similar issues as you - https://forum.xda-developers.com/t/bricked-shield-tv-pro-2015-version-stuck-in-apx-mode.3841024/ which also links this post from github that seems to have a full partition breakdown


Looks like there are a bunch of partitions used for the bootloader - Android and ChromeOS use very unique partition structures!

That way I restore the image from this post over the top of mine, but leave the partition with the Netflix keys intact and see if that boots?

Thanks again for your help, I think I might have to buy a new Shield soon as I am not getting anywhere :(
At least the new Shields have solid-state disks already.

Definitely worth a try, thats what that other poster in the thread did essentially.

Good luck buddy!
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 29
    It's done. I repleced original SSHD with SAmsung SSD.

    If someone else is interested in how to do this I'll help.

    *******************************************************

    Some users and moderator has asked me to add mote information what this is about.
    Here is the very same text I have done for the whole package to do HDD/SSD preparation to use it as an internal Nvidia Shield TV Pro disk:

    This is a guide to change Nvidia Shield TV Pro internal SSHD to SSD (or other 500GB drive).

    This will only tell how to prepare SSD for this Nvidia Shield TV PRO 500GB. You have to also know how to open the device, how to take old disk out and how to put new to replace it. You also need a Linux computer with free SATA port to connect your drive to for flashing it. However there are not any screws to hold the drive and it has a common SATA connection.

    Preparation takes two binary files to be put on the new drive. I have only done this for Samsung EVO 850 500GB drive (type MZ-75E500B/EU). I suppose this works with other similar drives too, but I can not guarantee it.

    Here is what you need to do:

    1. unzip start.zip and put binary file start.bin in the beginning of your SSD drive. I use Linux command DD to do this. If your drive is sdX the command will be something like this:

    dd if=start.bin of=/dev/sdX bs=4M

    2. unzip end_976574630.zip and put binary file end_976574630.bin to a proper place of the same disk. Again with DD it would be something like this:

    dd if=end_976574630.bin of=/dev/sdX seek=976574630

    3. put the SSD drive in your Nvidia Shield TV PRO and boot it up. Let it run about 15 minutes. It will not boot until you now cold boot it second time.

    It takes a minute or two to boot this time and the device will come up as expected.

    Enjoy your new Nvidia Shield TV PRO SSD !!!!

    B.T.W The same procedure works with a normal 500GB HDD too in case you would like to use this type disk. So - this also works as an emergency backup in case the original drive will become defective.


    Edit 2: System does not allow attaching files while editing a post. So - here you have a direct link to the message where file is as an attachment.

    http://forum.xda-developers.com/showpost.php?p=67426622&postcount=23
    7
    Code:
    [B][I][COLOR="Red"][SIZE="3"]I am not responsible for bricked devices, dead HDDs, animals 
    activist campaigns, or any H/W damage caused by you following these
    directions. YOU are choosing to make these modificiations, and
    you, yourself take responsibility for doing these modifications
    to your device.
    You can do serious H/W damage to your SATV or even your computer
    by doing any of this. So, you have been warned! [/SIZE][/COLOR][/I][/B]

    Great, can someone make a small tutorial step by step with this new method, I am new dont want to brick my device.

    First of all, you should pay your thanks to @Luxferro for mapping out the entire partition array, and building the chart that does all the calculations for using another disk size.
    He also proved that it was indeed possible to modify your GPT header to another sized drive.
    None of this would have been possible, if it was not for him.

    Also thanks to @Tilator for initiating this thread, and proving it was possible to swap your HDD for something else.

    Well, to begin with you should have a working linux environment set up.
    You should have a hex editor with CRC32 calculating capabilities. I recommend HxD:
    https://mh-nexus.de/en/downloads.php?product=HxD
    Yes, that is for Windows, I use Linux for all the writing/dumping, but I prefer my Windows hex editor.

    Then you can go open up the SATV by prying off the bottom of the casing. I managed to do this with my fingernails. A small plastic pry tool can be used as well.
    088cdebe48.png

    Then you remove the 2 wire sets from the plugs to give more working room. There is 2 sets of tape holding the wires and the HDD in place as well.
    There is (on mine at least) just one screw with a small bracket holding the HDD in place, you will need a T6 driver to remove it.
    Gently lift the black latch/lock on the connector to the secondary board, then the FCC connector will be easily out.
    Then it is just a matter of gently loosening the adhesive on the FCC strip from the HDD and pull out the SATA connector.

    With the HDD out, you will have to connect it to your Linux setup somehow. I used an enclosure with a USB3 connection.
    With the HDD recognized in the computer, the time has now come to clone you HDD.
    You could as well use the bin files Tilator has provided, but if you want your own genuine Netflix ESN, you should use your own.

    In a terminal window you start by listing the drives:

    Code:
    sudo -s
    fdisk -l

    This is to determine which drive you are working with. Remember that the DD command does't care which drive you specify, it will destroy your main drive if you ask it to.
    The you continue by dumping the first 6899870 blocks of data to a bin file:

    Code:
    dd if=/dev/sd[B]X[/B] of=firstpart.bin count=6899870

    This will give you a raw image file of all the partitions up until the /data partition which is better left out (it will come later).
    Then continue by dumping the last 5120 bytes of data which contains the partition array and the GPT header:

    Code:
    dd if=/dev/sd[B]X[/B] bs=512 skip= 976773158 of=lastpart.bin

    You can now disconnect your HDD. These 2 files also counts as a backup of your SATV.
    Now connect your new SSD in the enclosure.
    You can easily start by writing the firstpart.bin:

    Code:
    dd if=firstpart.bin of=/dev/sd[B]X[/B]

    In your linux terminal load up the block count (called sectors in linux language) of the new drive:

    Code:
    fdisk -l

    A 2 TB disk should have a total block count of 3907029168, but a smaller disk would have a smaller block count, so use fdisk -l to determine this.
    The lastpart.bin must be edited before we can write it on the new disk.
    So use the spreadsheet provided by @Luxferro in this post:
    http://forum.xda-developers.com/showpost.php?p=67996717&postcount=189
    In the column at the buttom right that says disk size, you change the value to match you new disk. In this example for the 2TB it should be 2000398934016 (bytes). This value should be taken from fdisk -l as well.
    Now it gets a little hairy!

    In the spreadsheet you should start with the buttom value marked out in purple under the row called "Last LBA". This should be E8E0888E:

    dc65e8f1d7.png


    Open up lastpart.bin in HxD and navigate to offset 00000FA8. There you should find the 4 bytes 0E 60 38 3A illustrated in this picture:
    dc675ca9e9.png


    This value is in a format called reverse byte ordering, so to put in your new calculated value, you will have to arrange it like this: 8E 88 E0 E8. Input that value instead of the bytes already there like this picture:

    dc884ceb4c.png


    While we are in this particular position in the lastpart.bin we might as well do the CRC32 of the partition array.
    Now make a selection containing the 64 bytes or 4 empty lines underneath the line having UDA written in ASCII, and all the way to the top of the file, offset 00000000 to 00000FF0 like in this picture:

    dcea590c79.png


    In the drop-down menu, choose Analyzis->Checksums and generate a CRC-32 checksum (Not checksum-32).
    It will come up in the buttom screen of HxD, and should read 6B CF E5 7D

    Navigate to the buttom of the file which contains the GPT header. It should start with an ANSI text reading "EFI PART".
    In offset 00001258 you should find the value of the original CRC-32 value containing the bytes 0E 02 C5 DC.
    Replace this, again reversing the bytes from your newly calculated CRC-32 value like this: 7D E5 CF 6B:

    067dc12477.png


    Now we are actually almost finished! In the spreadsheet all the way to the right, you will find 4 hexadecimal values marked in purple.
    First is the position of the GPT header, and the second is the position of the backup GPT header. Since there is only 1 on the SATV, these values are both the same.
    Write them into the GPT header on offset 00001218, and 00001220, again reversing the bytes like illustrated in the picture:

    067dc3304e.png


    Same goes for offset 00001230, Last Usable LBA, and offset 00001248, Starting LBA of array of partition entries.

    This brings us to the last thing on the table, the CRC32 of the GPT header itself.
    The CRC is located on offset 00001210 and should have the bytes 46 C9 88 78 already there.
    Just write 00 00 00 00 to blank them out:

    06df641cfe.png


    Now make a selection of the GPT header containing the beginning of the header, and to the last written byte before all the zeroes:

    06df74f054.png


    In the drop-down menu, choose Analyzis->Checksums and generate a CRC-32 checksum (Not checksum-32).
    It will come up in the buttom screen of HxD, and should read 46 9F 24 38
    Again, write it instead of the 4 bytes with zeroes reversed like this:

    06df5f2486.png


    This completes the matter, now just save your work in HxD and write it to the end of your drive.
    To do this we need the total block count from the HDD that you fetched in the beginning of the guide from the fdisk -l output, should be 3907029168
    The lastpart.bin is 5120 bytes which is the same as 10 blocks of 512 byte length.
    So, 3907029168 minus 10 is 3907029158 and put into your DD like this:

    Code:
    dd if=lastpart.bin of=/dev/sda[B]X[/B] bs=512 seek=[B]3907029158[/B]

    Now at last, put in your new disk in the SATV and assemble everything back together.
    If it doesn't boot in the first try, you could try another cold boot (give it 15 min.).
    If that won't do it, you might have to wipe the DATA partition from the fastboot menu.
    To cold boot into fastboot, follow this (taken from "http://developer.download.nvidia.com/mobile/shield/ROM/SHIELD_ATV/OTA-1.1/HowTo-Flash-Recovery-Image.txt"):

    Code:
    HW method:
    - Disconnect power cable
    - Insert USB OTG cable and make sure to connect other end to a host PC
    - Connect power cable to SHIELD
    - Quickly start pressing power button for ~3 seconds
    - Do not hold the button and connect power supply afterwards
    - HDMI TV should be always connected to SHIELD

    And format the /DATA partition from fastboot like this:

    Code:
    fastboot format FS:EXT4 /data

    Or do a fastboot oem unlock of the SATV.

    Hopefully you will now have a SATV with an upgraded SSD/HDD! :D
    6
    Here's a link to my spreadsheet. You only need to enter in the bytes of the HD (cell colored red), and all the variables are calculated (minus the CRC32's), and shown in cells colored purple: https://docs.google.com/spreadsheets/d/1QysvIlVcuxYUroMpY7q0_VeIqOLEgJiZjnXNU1T_Ilw/edit?usp=sharing

    There's a lot of other info on it, that doesn't have much to do with the calculations. Just general info, ect.

    edit: Please don't request access for edit privileges. If I opened it up for everyone to edit, all the formulas could easily be ruined. The best thing to do for those that want to use the spreadsheet is to make a copy to your own google drive, this way you can edit it, and modify it however you want.
    5
    @Tilator

    Look, if you care to share your steps I'll help you find a way to clone it to a smaller SSD? It must be possible to somehow shrink the data partition mounted as sdcard.
    If it can be shrunk to ~250 GB it could possibly be cloned to a smaller drive as well.

    Sent from my SM-N9005 using XDA-Developers mobile app

    It's not that simple. I did try different things to make it smaller for a 320GB drive I have here, but it did not work. Result with a bigger 1TB drive was the same.

    The reason why I don't tell you how it's done is not that I would not like to tell. It's because it was quite complicated.

    You all should do something else now and that's where I can give you some advice. Take a look at the Shield original HD with something like Photorec (needs Linux and knowledge what to do). The disk has GPT partitionin system and more than dozen EXT4 partitions. The very beginning of the file system has been messed up some way. That's why Linux or any other OS does not find file system. With Photorec you can restore partition information as it should be and then you have access to the contents.

    But - after fixing partition system so that Linux can recognice it makes the disk unbootable to Shield. Shield can only use the "messed up" version of the disk.

    Next big question is how is the partiton system messed up and is it possible to first fix it, then secondly change kernel and root system and what ever needed and in the end make this again bootable to Shield. If this can be done, we are free to make new things beeing independent abou what Nvidia allows us to do. This is the ultimate goal.

    The SSD swap or "HD cloning" I made possible with the files shared with the torrent are just a tool. It gives all of you possibility to do and try anything you want without fear of losing the device totally by bricking it. It gives you means to restore the drive and make it bootable again.

    It's not important how I did it. Important is that more and more people try to find out how to go to the next level which is freedom to let this fine HW do what it's capable to.

    If I had time enough next thing to do was to first take bit to bit copy of working Shield HD. Then fixing partition table to make it readable for standard Linux and third thing would be finding differencies between original copy and fixed one. If we are lucky, there will be only a few first sectors to differ from each other and making fixed copy bootable to shield will be only replacing those few sectors.

    B.T.W How many of you have already given it a try? Have you found new HD/SSD types that will work with Shield? I suppose next important thing was making a list of drives that will do. That's the way I can help us now to reach the "ultimate" goal.
    5
    For anyone interested, I was able to use an external hard drive duplicator. (this one https://www.amazon.com/Sabrent-Exte...=1492809151&sr=8-3&keywords=hard+drive+cloner)

    I cloned it to a 500gb Samsung Evo 850 SSD. It worked perfectly. Things that may be relevant:

    The SSD was brand new, I had never formatted it.
    My device was unlocked, with stock recovery, no TWRP or anything.
    The two drives were the exact same size.
    I did nothing at all to the original SSHD after removal, never plugged it into anything but the cloner.
    I didn't use a computer of any kind for anything.​

    After cloning, I turned my device on, and it booted up immediately! In fact, this first boot illustrated how much faster it boots than before. I immediately tested Netflix, Amazon Video, and Hulu, and all were in tact and working exactly as before. Aside from the usual "it feels much snappier", which could be placebo, there are some clear improvements in speed. I notice dramatic improvements in boot up time, loading movies that are stored locally is faster with no pause at all, (even large files) and I have seen a slight, (but still measurable) improvement in frame rate with dolphin emulator (and less crashes). Apps and games that would crash seem more stable, and native apps that had long load times load faster.

    In addition to all that, I am glad I did this because I have a first generation pro, and I never knew how long the spinning disk would last. It's nice to know if something ever goes wrong with this drive, I have an image and I can restore and replace with a simple clone.

    I learned a few things with removing the drive, and put together a YouTube Video. Make sure to turn on CC, so you can read my advice since I removed the audio. Here are some photos, and a link to the video. https://youtu.be/LLPyPAgnaFA