NBT HDD to SSD swap

superwofy

Corporal
Jan 18, 2021
126
188
0
To my knowledge this hasn't been done publicly yet. It's possible on EVO units however, NBT refuses to mount SSDs.
I've achieved this swap by patching the srv-hddmgr binary running on HU-Intel.

Based on previous comments on other forums, the assumption was that SMART variables were what caused the NBT to refuse SSDs. There's actually a temperature check function which always returns an error on my SSD.

Code:
void FUN_0807af78(void)

{
  FUN_0807ae43();                                    // Bypass this function call with NOPs
  return;
}

FUN_0807ae43() makes the calls for readtemp_direct and will return "__errnum". For some reason on SSDs this has issues and leads to the disk being unmounted.


A trivial patch changes 5 bytes at 0x807AF7F from "E9 BF FE FF FF" to "90 90 90 90 90".

For reference, the SSD I used is an Integral 240GB. Literally the cheapest drive I could find https://www.integralmemory.com/product/c-series-sata-iii-2-5-ssd/.

Warning! The following can lead to a brick which requires the EMMC to be repaired. I will describe this in a separate post. Execute the commands that replace the binary carefully. The startup script which loads all the programs is very strict at will restart the system if srv-hddmgr crashes potentially leading to a boot loop.
  1. Using serial access enable SSH https://www.spoolstreet.com/threads/serial-telnet-and-ssh.9172/.
  2. The original hard drive needs to be unlocked so that it can be imaged:
    1. Run and take a note of the values:
      1. adjinfo --get=E2P.Networking.Eth0MacAddr
      2. adjinfo --get=E2P.Networking.Bt0Addr
      3. adjinfo --get=E2P.ProdLogistic.SerialNo
    2. Copy complete hddsecurity + libs to a USB drive in a folder called "hddsec". Plug the drive into NBT's USB1 slot. Run:
      1. mkdir /fs/sda1/work
      2. cp /fs/usb0/hddsec/* /fs/sda1/work
      3. cd /fs/sda1/work && chmod +x hddsecurity
      4. ./hddsecurity -d **Eth0MacAddr**,**Bt0Addr**,**SerialNo** (replace the **s and values with data from adjinfo)
  3. Remove the drive and make an image of it. I merely copied my drive. I did not bother with expanding the media partition since its capacity doesn't get displayed properly. Restore the image to the SSD.
  4. Start NBT with the SSD installed.
    1. Copy srv-hddmgr to the root of a USB drive. Plug the drive into NBT's USB1 slot. Run:
    2. Code:
      mount -uw /fs/sda0 && \
      mv /fs/usb0/srv-hddmgr /opt/sys/bin/ && \
      chmod 0775 /opt/sys/bin/srv-hddmgr && \
      sleep 5 && \
      mount -ur /fs/sda0 && OnOffDSICommander appreset
    3. Unit will restart and the SSD should now be mounted.
Everything should work now. I've tested music import, navigation and navigation updating. It's hard to say how long the drive will last, but it's quiet and uses less power.
 

Attachments

  • srv-hddmgr superwofy.zip
    122.9 KB · Views: 92
  • Running without SMART attributes.png
    Running without SMART attributes.png
    374.1 KB · Views: 182
  • hddsec and libs from RSE.zip
    199.5 KB · Views: 88
Last edited: