Home Server, Software • Updating the firmware on a Brocade 300 FC switch

Updating the firmware on a Brocade 300 FC switch

 - 

product-300-right-gallery-bannerWith the office cleanup a couple of weeks ago an old Brocade 300 FC-switch (24 port 8Gbit fibrechannel)was found and was taken out of service due to probable hardware issues. Since the unit was already out of warranty no further efforts were made to revive or test the unit. I’ve taken the unit home to use with my 2 FC-cards to see how such a switch works and can be configured.

The first issue I ran into was the firmware. The conclusion at work was that a possible firmware update would be able to solve the issue so I went on a nice journey to find out how to retrieve the firmware and to update the switch (as the unit was never updated). This post will cover the steps and requirements needed to upgrade the firmware on this type of FC-switch. For people interested in the specifications of this switch can have a look at the datasheet here.

Getting firmware updates from Brocade:
This is the hardest part as you may only download firmware updates for Brocade devices if you have a support plan with Brocade. As I personally don’t have a contract with them I’ve found a colleague of mine who normally manages this for the company and downloaded the latest firmware updates for me. If you don’t have a contract with Brocade it’s not possible to download the firmware. You should contact a network or storage engineer in your company or personal area to see if they can help you further. At the time of writing version “7.4.1c” was the latest release with a size of approx ~1.2GB.
Version 8.0.0 and 8.0.1 were available as well, but not recommended by Brocade yet and therefore are not used in this post.

Logging in on the switch:
My unit was already configured so the LAN interface was already set to a fixed IP and had to reset this first. There is a serial console as well and sits next to the LAN interface (the IOIOI port) and with a RJ45 -> DB9 converter you can setup a serial connection with 9600baud 8N1. I had a problem with the serial connection that it would stop working after being idle for a minute and had to reboot the switch in order to revive it. Luckily the engineers never set a password themselves on the switch so when the login prompt arrived I was able to log in using the default password (username is “admin” and the password is “password”:

sw1 login: admin
Password:

-----------------------------------------------------------------
sw1:admin>

I had already updated the password, once logging in with the default password the system will ask you if you want to change this, for security it’s best to do so.

Since I’m logged in I had to change the interface details, this can be done with the following command:

sw1:admin> ipaddrset
Ethernet IP Address [192.168.0.199]:
Ethernet Subnetmask [255.255.255.0]:
Gateway IP Address [192.168.0.1]:
DHCP [Off]:
sw1:admin>

If you want to use DHCP you should set DHCP to On, but it’s best to set a fixed IP here so you always know the IP if you need to log in.

From this point on you don’t need the serial connection and can telnet to the IP address you’ve set above:
telnet 192.168.0.199
Trying 192.168.0.199...
Connected to 192.168.0.199.
Escape character is '^]'.


Fabric OS (sw1)
Fabos Version 6.4.3d

sw1 login:

Retrieving the current firmware version:
You should log in as admin on the console or management interface, with the “firmwareshow” command you can show the current running firmware:
sw1:admin> firmwareshow
Appl Primary/Secondary Versions
------------------------------------------
FOS v6.4.3d
v6.4.3d

As you can see the firmware on my unit is rather old. Using SSH to connect to the management IP was not possible due to weak ciphers and other strange behaviour that started showing up. The unit clearly looked faulty at this point. The unit itself is from 2012 and had it’s last update (according to the eventlog) in 2013 and was the stock firmware the unit shipped with at that point.

Updating the firmware:
The firmware update process is pretty simple but the instructions are not very clear if you are not familiar with it. You can update using a variety of protocols like:
– FTP
– SFTP
– SCP

To download the firmware to the device the “firmwaredownload” function can be used. In this process I will use SCP as this was the most convenient way in my network. To be able to use the SCP method we need to have a server which runs SSH and has a account that has SSH access, the easiest solution is to either use root or a local username (on the server) and extract the firmware software to it’s home directory. So in my case I have a user “jeffrey” on my server with IP 192.168.0.75. I’ve copied the firmware tar.gz file to the homedir of that user and extracted it there. This will result in a “v7.4.1c” directory in the homedir of “jeffrey”.

A note on the firmware archive: There are a lot of files in the archive, this holds the firmware for all supported devices so it’s not only for this switch. You don’t need to know the so-called SWBD number (hardware ID) of the switch. The updater will search in the right SWBD folder automatically and you only need to point the file name location to the directory where the firmware was extracted to.

A note on firmware update versions: You cannot upgrade directly to the latest version if you are running more than 1 release behind. So in my case where I have v6.4.3 I had to update to 7.0.0a -> 7.2.1g -> 7.4.1c instead. Note that you can update in even numbered steps, odd numbered update steps won’t work.See the end of this post for more information. In this case the instructions apply in general for the update process itself but this firmware version only works when running 7.2.x or 7.3.x.

Below are the steps that I took to accomplish this in general and will apply also when the device is running a version behind (with the console output):
sw1:admin> firmwaredownload -s
Server Name or IP Address: 192.168.0.75
User Name: jeffrey
File Name: v7.4.1c
Network Protocol(1-auto-select, 2-FTP, 3-SCP, 4-SFTP) [1]: 3
Verifying if the public key authentication is available.Please wait ...
The public key authentication is not available.
Password:
Do Auto-Commit after Reboot [Y]:
Reboot system after download [N]: Y
Server IP: 192.168.0.75, Protocol IPv4
Checking system settings for firmwaredownload...
WARNING: Fabric Watch is discontinued in FOS 7.4 and will not run after firmware upgrade. To continue with monitoring capability, it is recommended to migrate to MAPS prior to firmware upgrade. Users can convert existing Fabric Watch thresholds into MAPS policies by using "mapsConfig --fwconvert" CLI command and continue monitoring with the same settings. Fabric Watch thresholds cannot be converted to MAPS policies after firmware upgrade. Please refer to MAPS Administrator's Guide for further information.
System settings check passed.


You are running firmwaredownload with auto-reboot and auto-commit enabled. After the firmware is downloaded the system will reboot and commit firmware automatically.


Do you want to continue (Y/N) [Y]:
Firmware is being downloaded to the switch. This step may take up to 30 minutes.
Preparing for firmwaredownload...
Start to install packages...
dir ##################################################
ldconfig ##################################################
glibc ##################################################
glibc-linuxthreads ##################################################
bash ##################################################
readline ##################################################
terminfo ##################################################
termcap ##################################################
vixie-cron ##################################################
fileutils ##################################################
textutils ##################################################
warning: /etc/group created as /etc/group.rpmnew
warning: /etc/passwd created as /etc/passwd.rpmnew
setup ##################################################
warning: /etc/hosts created as /etc/hosts.rpmnew
swbd12-setup ##################################################
which ##################################################
findutils ##################################################
bzip ##################################################
zlib ##################################################
chkconfig ##################################################
sed ##################################################
procps ##################################################
psmisc ##################################################
modutils ##################################################
sin ##################################################
rcinit ##################################################
misc ##################################################
pam ##################################################
util-linux ##################################################
sh-utils ##################################################
popt ##################################################
grep ##################################################
rpm ##################################################
sysvinit ##################################################
man ##################################################
less ##################################################
gzip ##################################################
tar ##################################################
rsync ##################################################
uuid-libs ##################################################
e2fsprogs ##################################################
cpio ##################################################
dev ##################################################
bootenv ##################################################
wdtd ##################################################
fwdl ##################################################
telnet-server ##################################################
kernel ##################################################
kernel-module-usb ##################################################
swbd21-drivers ##################################################
sysklogd ##################################################
syslog-ng ##################################################
getty ##################################################
net-tools ##################################################
uucp ##################################################
portmap ##################################################
inetd ##################################################
iptables ##################################################
tcpd ##################################################
rsh-server ##################################################
rsh ##################################################
openssl-libs ##################################################
openssh ##################################################
warning: /etc/sshd_config saved as /etc/sshd_config.rpmsave
openssh-server ##################################################
rusers-server ##################################################
rdate ##################################################
logrotate ##################################################
ntp ##################################################
pciutils ##################################################
strace ##################################################
sendmail ##################################################
iproute2 ##################################################
libxml2 ##################################################
fss ##################################################
warning: /etc/fabos/rbac/dynamic created as /etc/fabos/rbac/dynamic.rpmnew
fabos-setup ##################################################
fabos-drivers ##################################################
fabos-libs ##################################################
fabos-diag ##################################################
fabos ##################################################
fabos-daemons ##################################################
fabos-zoning ##################################################
sqlite ##################################################
dhcpcd ##################################################
dhclient ##################################################
fabos-vf ##################################################
fabos-hmon ##################################################
fabos-wwnhs ##################################################
fabos-man ##################################################
fabos-swbd71 ##################################################
apache ##################################################
fastcgi ##################################################
fabos-webtools ##################################################
fabos-webtoolsez ##################################################
tz ##################################################
mtracer-tool ##################################################
sysstat ##################################################
prom-440epx ##################################################
Please avoid powering off the system during prom update.
ipv6 ##################################################
awk ##################################################
ipsec ##################################################
hss-diag ##################################################
Removing unneeded files, please wait ...
Finished removing unneeded files.


INFO: Ciphersuite change on switch
HTTPS ciphers will be modified to be compatible with new firmware version
creating the old storage file
All packages have been downloaded successfully.
Firmware has been downloaded to the secondary partition of the switch.


Broadcast message from root (pts/0) Mon May 23 15:49:45 2016...


The system is going down for reboot NOW !!
Connection closed by foreign host.

After the reboot the switch should be running the newly updated firmware. The reboot procedure varies in each version. I’ve set it to auto commit and reboot as this is a testing unit for me and don’t mind that it just reboots when done. In a production environment you might want to keep this feature disabled (which it is by default!). The download process took a couple of minutes (the management port is 10/100Mbit) and the update process around 15 minutes. Although I just waited for some time you may want to run “firmwaredownloadstatus” which can show the current firmware download eventlog and the current action it’s performing.

An example of the “firmwaredownloadstatus” output can be found below:
sw1:admin> firmwaredownloadstatus
[1]: Mon May 23 15:10:37 2016
Firmware is being downloaded to the switch. This step may take up to 30 minutes.


[2]: Mon May 23 15:15:23 2016
Firmware has been downloaded to the secondary partition of the switch.


[3]: Mon May 23 15:17:04 2016
The firmware commit operation has started. This may take up to 10 minutes.


[4]: Mon May 23 15:20:04 2016
The commit operation has completed successfully.


[5]: Mon May 23 15:20:04 2016
Firmwaredownload command has completed successfully. Use firmwareshow to verify the firmware versions.

Note on availability: During the download and update process the switch will remain available for traffic. During the reboot this is (yes really) interrupted. After the switch is back online the traffic is resumed.

Updating issues:
If you run a firmware older than 7.2.x you cannot directly upgrade to the current 7.4.1 release. If you try to upgrade it will error with:
sw1:admin> firmwaredownload
Server Name or IP Address:
fwdl (pid=3898): signal=2
sw1:admin> firmwaredownload
Server Name or IP Address: 192.168.0.75
User Name: jeffrey
File Name: v7.4.1c/
Network Protocol(1-auto-select, 2-FTP, 3-SCP, 4-SFTP) [1]: 3
Password:
Server IP: 192.168.0.75, Protocol IPv4
Checking system settings for firmwaredownload...


The following item(s) need to be addressed before downloading the specified firmware:
Cannot upgrade directly to 7.4. Please upgrade to 7.2 first and then upgrade to 7.4.


Firmwaredownload failed.
sw1:admin>

If this occurs you should download the 7.2 firmware update and apply it first and then try updating to 7.4 again. Do note that you cannot update major versions if you are running more than 2 firmware versions behind. So in order to update to 7.4 you either need to run 7.2 or 7.3 on your unit.

So in my case I had to update to 7.0.0a, 7.2.1g and to v7.4.1c. For reference you will find the whole console output below:

Updating from v6.4.3d to v7.4.1c:
Updating from v6.4.3d to v7.0.0a:
sw1:admin> firmwaredownload
Server Name or IP Address: 192.168.0.75
User Name: jeffrey
File Name: v7.0.0a
Network Protocol(1-auto-select, 2-FTP, 3-SCP, 4-SFTP) [1]: 3
Password:
Server IP: 192.168.0.75, Protocol IPv4
Checking system settings for firmwaredownload...
System settings check passed.


You can run firmwaredownloadstatus to get the status
of this command.


This command will cause a warm/non-disruptive boot but will
require that existing telnet, secure telnet or SSH sessions
be restarted.


Do you want to continue (Y/N) [Y]:
Firmware is being downloaded to the switch. This step may take up to 30 minutes.
Preparing for firmwaredownload...
Start to install packages...
dir ##################################################
ldconfig ##################################################
glibc ##################################################
glibc-linuxthreads ##################################################
bash ##################################################
readline ##################################################
terminfo ##################################################
termcap ##################################################
vixie-cron ##################################################
fileutils ##################################################
textutils ##################################################
setup ##################################################
swbd12-setup ##################################################
which ##################################################
findutils ##################################################
bzip ##################################################
zlib ##################################################
chkconfig ##################################################
sed ##################################################
procps ##################################################
psmisc ##################################################
modutils ##################################################
sin ##################################################
rcinit ##################################################
misc ##################################################
pam ##################################################
util-linux ##################################################
sh-utils ##################################################
popt ##################################################
grep ##################################################
rpm ##################################################
sysvinit ##################################################
man ##################################################
less ##################################################
gzip ##################################################
tar ##################################################
rsync ##################################################
uuid-libs ##################################################
e2fsprogs ##################################################
cpio ##################################################
dev ##################################################
bootenv ##################################################
wdtd ##################################################
fwdl ##################################################
telnet-server ##################################################
kernel ##################################################
kernel-module-usb ##################################################
swbd21-drivers ##################################################
sysklogd ##################################################
getty ##################################################
net-tools ##################################################
uucp ##################################################
portmap ##################################################
inetd ##################################################
iptables ##################################################
tcpd ##################################################
rsh-server ##################################################
rsh ##################################################
openssl-libs ##################################################
openssh ##################################################
openssh-server ##################################################
rusers-server ##################################################
rdate ##################################################
logrotate ##################################################
ntp ##################################################
pciutils ##################################################
strace ##################################################
sendmail ##################################################
iproute2 ##################################################
libxml2 ##################################################
fss ##################################################
fabos-setup ##################################################
fabos-drivers ##################################################
fabos-libs ##################################################
nonet-lib ##################################################
fabos-diag ##################################################
fabos ##################################################
fabos-daemons ##################################################
fabos-zoning ##################################################
sqlite ##################################################
dhcpcd ##################################################
fabos-vf ##################################################
fabos-hmon ##################################################
fabos-wwnhs ##################################################
fabos-man ##################################################
fabos-swbd71 ##################################################
apache ##################################################
fastcgi ##################################################
fabos-webtools ##################################################
fabos-webtoolsez ##################################################
tz ##################################################
mtracer-tool ##################################################
sysstat ##################################################
prom-440epx ##################################################
Please avoid powering off the system during prom update.
ipv6 ##################################################
awk ##################################################
ipsec ##################################################
hss-diag ##################################################
Removing unneeded files, please wait ...
Finished removing unneeded files.


All packages have been downloaded successfully.
Firmware has been downloaded to the secondary partition of the switch.
HA Rebooting ...
Connection closed by foreign host.

Check to see if the update went okay:
[jeffrey@e7440 ~]$ telnet 192.168.0.199
Trying 192.168.0.199...
Connected to 192.168.0.199.
Escape character is '^]'.


Fabric OS (sw1)
Fabos Version 7.0.0a

Updating from v7.0.0.a to 7.2.1g:
sw1:admin> firmwaredownload -s
Server Name or IP Address: 192.168.0.75
User Name: jeffrey
File Name: v7.2.1g
Network Protocol(1-auto-select, 2-FTP, 3-SCP, 4-SFTP) [1]: 3
Verifying if the public key authentication is available.Please wait ...
The public key authentication is not available.
Password:
Do Auto-Commit after Reboot [Y]:
Reboot system after download [N]:
Server IP: 192.168.0.75, Protocol IPv4
Checking system settings for firmwaredownload...


This action will set default QoS port configuration from AE to OFF because Adaptive Networking License is not installed on the switch.


System settings check passed.


You are running firmwaredownload with auto-reboot disabled. After firmware is downloaded, please reboot the system to activate the new firmware.


Do you want to continue (Y/N) [Y]:
Firmware is being downloaded to the switch. This step may take up to 30 minutes.
Preparing for firmwaredownload...
Removing nonet-lib
Removing hss-diag
Start to install packages...
dir ##################################################
ldconfig ##################################################
glibc ##################################################
glibc-linuxthreads ##################################################
bash ##################################################
readline ##################################################
terminfo ##################################################
termcap ##################################################
vixie-cron ##################################################
fileutils ##################################################
textutils ##################################################
setup ##################################################
swbd12-setup ##################################################
which ##################################################
findutils ##################################################
bzip ##################################################
zlib ##################################################
chkconfig ##################################################
sed ##################################################
procps ##################################################
psmisc ##################################################
modutils ##################################################
sin ##################################################
rcinit ##################################################
misc ##################################################
pam ##################################################
util-linux ##################################################
sh-utils ##################################################
popt ##################################################
grep ##################################################
rpm ##################################################
sysvinit ##################################################
man ##################################################
less ##################################################
gzip ##################################################
tar ##################################################
rsync ##################################################
uuid-libs ##################################################
e2fsprogs ##################################################
cpio ##################################################
dev ##################################################
bootenv ##################################################
wdtd ##################################################
fwdl ##################################################
telnet-server ##################################################
kernel ##################################################
kernel-module-usb ##################################################
swbd21-drivers ##################################################
sysklogd ##################################################
getty ##################################################
net-tools ##################################################
uucp ##################################################
portmap ##################################################
inetd ##################################################
iptables ##################################################
tcpd ##################################################
rsh-server ##################################################
rsh ##################################################
openssl-libs ##################################################
openssh ##################################################
openssh-server ##################################################
rusers-server ##################################################
rdate ##################################################
logrotate ##################################################
ntp ##################################################
pciutils ##################################################
strace ##################################################
sendmail ##################################################
iproute2 ##################################################
libxml2 ##################################################
fss ##################################################
warning: /etc/fabos/rbac/dynamic created as /etc/fabos/rbac/dynamic.rpmnew
fabos-setup ##################################################
fabos-drivers ##################################################
fabos-libs ##################################################
fabos-diag ##################################################
fabos ##################################################
fabos-daemons ##################################################
fabos-zoning ##################################################
sqlite ##################################################
dhcpcd ##################################################
dhclient ##################################################
fabos-vf ##################################################
fabos-hmon ##################################################
fabos-wwnhs ##################################################
fabos-man ##################################################
fabos-swbd71 ##################################################
apache ##################################################
fastcgi ##################################################
fabos-webtools ##################################################
fabos-webtoolsez ##################################################
tz ##################################################
mtracer-tool ##################################################
sysstat ##################################################
prom-440epx ##################################################
Please avoid powering off the system during prom update.
ipv6 ##################################################
awk ##################################################
ipsec ##################################################
Removing unneeded files, please wait ...
Finished removing unneeded files.


All packages have been downloaded successfully.
Firmware has been downloaded to the secondary partition of the switch.

Issue a “firmwarecommit” to apply the update. The switch will reboot for this. After the reboot check if the update went okay:
[jeffrey@e7440 ~]$ telnet 192.168.0.199
Trying 192.168.0.199...
Connected to 192.168.0.199.
Escape character is '^]'.


Fabric OS (sw1)
Fabos Version 7.2.1g

And the last step, from v7.2.1g to v7.4.1c:
sw1:admin> firmwaredownload -s
Server Name or IP Address: 192.168.0.75
User Name: jeffrey
File Name: v7.4.1c
Network Protocol(1-auto-select, 2-FTP, 3-SCP, 4-SFTP) [1]: 3
Verifying if the public key authentication is available.Please wait ...
The public key authentication is not available.
Password:
Do Auto-Commit after Reboot [Y]:
Reboot system after download [N]: Y
Server IP: 192.168.0.75, Protocol IPv4
Checking system settings for firmwaredownload...
WARNING: Fabric Watch is discontinued in FOS 7.4 and will not run after firmware upgrade. To continue with monitoring capability, it is recommended to migrate to MAPS prior to firmware upgrade. Users can convert existing Fabric Watch thresholds into MAPS policies by using "mapsConfig --fwconvert" CLI command and continue monitoring with the same settings. Fabric Watch thresholds cannot be converted to MAPS policies after firmware upgrade. Please refer to MAPS Administrator's Guide for further information.
System settings check passed.


You are running firmwaredownload with auto-reboot and auto-commit enabled. After the firmware is downloaded the system will reboot and commit firmware automatically.


Do you want to continue (Y/N) [Y]:
Firmware is being downloaded to the switch. This step may take up to 30 minutes.
Preparing for firmwaredownload...
Start to install packages...
dir ##################################################
ldconfig ##################################################
glibc ##################################################
glibc-linuxthreads ##################################################
bash ##################################################
readline ##################################################
terminfo ##################################################
termcap ##################################################
vixie-cron ##################################################
fileutils ##################################################
textutils ##################################################
warning: /etc/group created as /etc/group.rpmnew
warning: /etc/passwd created as /etc/passwd.rpmnew
setup ##################################################
warning: /etc/hosts created as /etc/hosts.rpmnew
swbd12-setup ##################################################
which ##################################################
findutils ##################################################
bzip ##################################################
zlib ##################################################
chkconfig ##################################################
sed ##################################################
procps ##################################################
psmisc ##################################################
modutils ##################################################
sin ##################################################
rcinit ##################################################
misc ##################################################
pam ##################################################
util-linux ##################################################
sh-utils ##################################################
popt ##################################################
grep ##################################################
rpm ##################################################
sysvinit ##################################################
man ##################################################
less ##################################################
gzip ##################################################
tar ##################################################
rsync ##################################################
uuid-libs ##################################################
e2fsprogs ##################################################
cpio ##################################################
dev ##################################################
bootenv ##################################################
wdtd ##################################################
fwdl ##################################################
telnet-server ##################################################
kernel ##################################################
kernel-module-usb ##################################################
swbd21-drivers ##################################################
sysklogd ##################################################
syslog-ng ##################################################
getty ##################################################
net-tools ##################################################
uucp ##################################################
portmap ##################################################
inetd ##################################################
iptables ##################################################
tcpd ##################################################
rsh-server ##################################################
rsh ##################################################
openssl-libs ##################################################
openssh ##################################################
warning: /etc/sshd_config saved as /etc/sshd_config.rpmsave
openssh-server ##################################################
rusers-server ##################################################
rdate ##################################################
logrotate ##################################################
ntp ##################################################
pciutils ##################################################
strace ##################################################
sendmail ##################################################
iproute2 ##################################################
libxml2 ##################################################
fss ##################################################
warning: /etc/fabos/rbac/dynamic created as /etc/fabos/rbac/dynamic.rpmnew
fabos-setup ##################################################
fabos-drivers ##################################################
fabos-libs ##################################################
fabos-diag ##################################################
fabos ##################################################
fabos-daemons ##################################################
fabos-zoning ##################################################
sqlite ##################################################
dhcpcd ##################################################
dhclient ##################################################
fabos-vf ##################################################
fabos-hmon ##################################################
fabos-wwnhs ##################################################
fabos-man ##################################################
fabos-swbd71 ##################################################
apache ##################################################
fastcgi ##################################################
fabos-webtools ##################################################
fabos-webtoolsez ##################################################
tz ##################################################
mtracer-tool ##################################################
sysstat ##################################################
prom-440epx ##################################################
Please avoid powering off the system during prom update.
ipv6 ##################################################
awk ##################################################
ipsec ##################################################
hss-diag ##################################################
Removing unneeded files, please wait ...
Finished removing unneeded files.


INFO: Ciphersuite change on switch
HTTPS ciphers will be modified to be compatible with new firmware version
creating the old storage file
All packages have been downloaded successfully.
Firmware has been downloaded to the secondary partition of the switch.


Broadcast message from root (pts/0) Mon May 23 15:49:45 2016...


The system is going down for reboot NOW !!
Connection closed by foreign host.

After a couple of minutes, log back in to see if the update went okay:
[jeffrey@e7440 ~]$ telnet 192.168.0.199
Trying 192.168.0.199...
Connected to 192.168.0.199.
Escape character is '^]'.


Fabric OS (sw1)
Fabos Version 7.4.1c

Author:langerak

Leave a Reply

Your email address will not be published. Required fields are marked*

*

*