Sunday, August 14, 2022

Upgrade the BIOS from an ReadyNAS device

Every ReadyNAS device has a bios like all other PCs, however its not updated automatically when you update the firmware as this is a manual and additional process. To perform an bios upgrade for example for an RNDU4000 (ReadyNAS Ultra 4) you need to follow the steps below. Other devices are similar (see the notes below).

To find out which version you are using (maybe the latest one) you need to perform the following steps:

1.) Login into the web GUI from your ReadyNAS

2.) Click on Logfiles and download all logfiles as *.ZIP file

3.) Inside the *.zip file is a file named bios_ver.log which needs to be opened

4.) Inside that file you can see a string which is similar like:

/sys/class/dmi/id/product_version
::::::::::::::
05/19/2010 ReadyNAS-NVX-V2 V1.8
::::::::::::::
/sys/class/dmi/id/bios_date
::::::::::::::
05/19/2010
::::::::::::::
/sys/class/dmi/id/bios_version
::::::::::::::
080016

 Keep noted that this RNDU4000 (ReadyNAS Ultra 4) comes up as ReadyNAS-NVX-V2 with the bios date from 2010.

 

If the version is older then the BIOS version which you might have seen somewhere else (for example below) you can perform the following steps to update it:

1.) Login into the web GUI from your ReadyNAS

2.) Enable the SSH option

3.) Use Putty to login into the device (with the same password as used on the web GUI but with username root)

4.) Once logged in download the latest bios via:

wget http://www.readynas.com/download/addons/x86/4.2/BIOS_Update_Package_0.5-x86.bin

 it will output something like:

--2020-01-11 14:58:49--  http://www.readynas.com/download/addons/x86/4.2/BIOS_Update_Package_0.5-x86.bin
Resolving www.readynas.com (www.readynas.com)... 208.185.37.247
Connecting to www.readynas.com (www.readynas.com)|208.185.37.247|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3026944 (2.9M) [application/octet-stream]
Saving to: ‘BIOS_Update_Package_0.5-x86.bin’

BIOS_Update_Package 100%[=====================>]   2.89M  1.97MB/s   in 1.5s

2020-01-11 14:58:51 (1.97 MB/s) - ‘BIOS_Update_Package_0.5-x86.bin’ saved [3026944/3026944]

5.) Output some more infos from the file via:

head -n 1 BIOS_Update_Package_0.5-x86.bin

which will output

addon::name=BIOS_Update_Package,version=0.5,time=1336699935,size=3010560,md5sum=1a72de0097d80cf3838c391fb053b0b2,skipreboot=1,unencrypted=1,arch=x86,api=1

6.) you can also get some more infos via:

ls -l BIOS_Update_Package_0.5-x86.bin

which will output

-rw-r--r-- 1 admin admin 3026944 May 11  2012 BIOS_Update_Package_0.5-x86.bin

7.) Now we will use dd (diskdump) to generate a Tar file:

dd if=BIOS_Update_Package_0.5-x86.bin of=BIOS_Update_Package_0.5-x86.tar bs=1 skip=$[ 3026944 – 3010560 ]

Which will generate the following output:

3010560+0 records in
3010560+0 records out
3010560 bytes (3.0 MB, 2.9 MiB) copied, 62.1372 s, 48.5 kB/s

Note: This step might take some time!

8.) Once the command finished we then can check the MD5SUM via:

md5sum BIOS_Update_Package_0.5-x86.tar

9.) Now we will create a new folder for the bios and move into it

mkdir BIOS

cd BIOS

10.) inside that folder we will expand our *.tar file via:

tar xvf ../BIOS_Update_Package_0.5-x86.tar

11.) and also expand the files.tgz file which was in the *.tar file

tar xzvf files.tgz

12.) You can now show the bios files via:

 ls -lah /homes/admin/BIOS/opt/biosflash/

which will output something like:

drwxr-xr-x 1 admin admin  206 Nov 11  2011 .
drwxr-xr-x 1 admin admin   18 Mar  9  2011 ..
-rwxr-xr-x 1 admin admin 275K Jan 14  2011 flashrom
-rw-r--r-- 1 admin admin 2.1M Jun 25  2009 RN_3200_062410.ROM
-rw-r--r-- 1 admin admin 1.0M Jul 27  2010 RN_NV6_072610.ROM
-rw-r--r-- 1 admin admin 2.0M Nov  2  2011 RN_Ultra2_110211.ROM
-rw-r--r-- 1 admin admin 2.0M Aug 26  2011 RN_Ultra4_082311.ROM
-rw-r--r-- 1 admin admin 1.0M Jan 14  2011 RN_Ultra6_061010.ROM

With that details you can decide if an update would require. For example for the RNDU4000 (ReadyNAS Ultra 4) we can see the string 082311, which means the bios is from 08/23/2011. So its newer then our version and an upgrade is possible.

13.) now we need to check the install.sh file to find the command we need. To read out the file use:

cd /homes/admin/BIOS/

grep -B2 biosflash install.sh

it will output something like:

#   - Todo: add check to only flash if newer.

ULTRA2BIOS=/opt/biosflash/RN_Ultra2_110211.ROM
ULTRA4BIOS=/opt/biosflash/RN_Ultra4_082311.ROM
ULTRA6BIOS=/opt/biosflash/RN_Ultra6_061010.ROM
NV6BIOS=/opt/biosflash/RN_NV6_072610.ROM
--

# // pre-flight checks
if [ ! -d /opt/biosflash ]; then
        echo " * missing BIOS images"; exit
fi
if [ ! -x /opt/biosflash/flashrom ]; then
--
if [ $DMI_BOARD = "ReadyNAS-NVX-V2" ]; then
        echo " * found Ultra 4 board, date: $DMI_DATE"
        /opt/biosflash/flashrom -c SST25VF016B -w $ULTRA4BIOS > /tmp/bios.flash
--
elif [ $DMI_BOARD = "FLAME6-2" ]; then
        echo " * found Ultra 6 board, date $DMI_DATE"
        /opt/biosflash/flashrom -c W25Q80 -w $ULTRA6BIOS > /tmp/bios.flash
--
elif [ $DMI_BOARD = "FLAME6-MB" ]; then
        echo " * found NV6 board, date $DMI_DATE"
        /opt/biosflash/flashrom -c W25x80 -w $NV6BIOS > /tmp/bios.flash
--
        echo " * found Ultra 2 board, date $DMI_DATE"
        # -c SST25VF016B | -c MX25L1605
        /opt/biosflash/flashrom -w $ULTRA2BIOS > /tmp/bios.flash

14.) before we can flash the bios we need to install some files, so we need to add a repository via:

echo “deb http://ftp.us.debian.org/debian wheezy main non-free” >> /etc/apt/sources.list

15.) run an update via:

apt-get update

16.) And install some software we need via:

apt-get install dmidecode flashrom

15.) As we saw in the check above that our board is an ReadyNAS-NVX-V2 we need the string SST25VF016B. So the complete command to flash the bios would be:

cd /BIOS/opt/biosflash

flashrom –programmer internal -c SST25VF016B -w /root/BIOS/opt/biosflash/RN_Ultra4_082311.ROM

the output will be something like:

flashrom v0.9.7-r1782 on Linux 4.4.184.x86_64.1 (x86_64)
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
Found chipset "Intel ICH9". Enabling flash write... OK.
Found SST flash chip "SST25VF016B" (2048 kB, SPI) at physical address 0xffe00000.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

16.) Now its time for a reboot. So login into the webGUI and perform a reboot.

17.) You then download a fresh new copy from the logfiles, open the bios_ver.log and you should see:

/sys/class/dmi/id/product_version
::::::::::::::
08/23/2011 ReadyNAS-NVX-V2 V1.10
::::::::::::::
/sys/class/dmi/id/bios_date
::::::::::::::
08/23/2011
::::::::::::::
/sys/class/dmi/id/bios_version
::::::::::::::
080016

18.) Now you can do some cleanup. Login again via SSH (via root)

19.) remove files and folders via:

rm BIOS_Update_Package_0.5-x86.tar

rm BIOS_Update_Package_0.5-x86.bin

rm -r BIOS

20.) remove the two packages we installed via:

apt-get remove dmidecode flashrom

21.) Once done disable SSH in the web fronted from the NAS as we do no longer need that (and it might cause security issues if enabled but not needed).

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Stay Connected

23FollowersFollow
- Advertisement -

Latest Articles