Upgrading the firmware of a Cisco 3750 switch

Upgrading the firmware of a Cisco switch can be done in several ways. My preferred way is to copy the firmware to local flash from a TFTP server. In the following I will outline the process.

Lets first get a running TFTP server. There are plenty of options, I usually go with SolarWinds TFTP- Server, as its free, and works on Windows. Start the TFTP Server, and put the firmware file in your TFTP root directory.

TFTP Server

Under File –> Configure you can set the TFTP Server Root Directory. We will be using firwmare: c3750e-universalk9-mz.152-4.E6.bin

Next, let’s serial into the switch:

Switch#dir flash:/
Directory of flash:/

  458  -rwx        1048   Mar 1 1993 00:01:33 +00:00  multiple-fs
    3  drwx         512   Mar 1 1993 19:48:23 +00:00  c3750e-universalk9-mz.122-58.SE1

57671680 bytes total (36307968 bytes free)

Connect a port of the switch to be upgraded into your existing network, from where the TFTP Server is reachable. Your network should provide DHCP in our scenario. We will enable the switch to retrieve an IP address from DHCP:

Switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#int vlan 1
Switch(config-if)#ip address dhcp 
Switch(config-if)#no shut
Switch(config-if)#end
Switch#wr
Building configuration...

*Mar  1 00:09:34.829: %SYS-5-CONFIG_I: Configured from console by console
*Mar  1 00:09:35.366: %LINK-3-UPDOWN: Interface Vlan1, changed state to up[OK]
Switch#sh ip int br
*Mar  1 00:10:42.684: %DHCP-6-ADDRESS_ASSIGN: Interface Vlan1 assigned DHCP address 10.253.6.64, mask 255.255.254.0, hostname 

Interface              IP-Address      OK? Method Status                Protocol
Vlan1                  10.253.6.64     YES DHCP   up                    up      

Let’s quickly run through, what we have done here. We have enabled DHCP on the interface of VLAN 1, and then confirmed we have indeed been assigned an IP address.

Next, let’s finally copy the file from our TFTP Server to the switch and tell the switch to boot the new firmware:

Switch#copy tftp://10.253.5.21:/c3750e-universalk9-mz.152-4.E6.bin flash:/c3750e-universalk9-mz.152-4.E6.bin
Destination filename [c3750e-universalk9-mz.152-4.E6.bin]? 
Accessing tftp://10.253.5.21/c3750e-universalk9-mz.152-4.E6.bin...
Loading c3750e-universalk9-mz.152-4.E6.bin from 10.253.5.21 (via Vlan1): !!!...
[OK - 25906176 bytes]
25906176 bytes copied in 183.131 secs (141463 bytes/sec)

Switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#boot system switch all flash:/c3750e-universalk9-mz.152-4.E6.bin
Switch(config)#end
Switch#wr
Building configuration...

Take note, that in some cases, the old firmware file may need to be deleted first to make room for the new firmware:

Switch#dir flash:/
Directory of flash:/

  458  -rwx    25906176   Mar 1 1993 00:13:46 +00:00  c3750e-universalk9-mz.152-4.E6.bin
    2  -rwx           5   Mar 1 1993 00:17:32 +00:00  private-config.text
  459  -rwx        2072   Mar 1 1993 00:17:32 +00:00  multiple-fs
  461  -rwx        2476   Mar 1 1993 00:17:32 +00:00  config.text
    3  drwx         512   Mar 1 1993 19:48:23 +00:00  c3750e-universalk9-mz.122-58.SE1

57671680 bytes total (10187264 bytes free)
Switch#delete /f /r flash:/c3750e-universalk9-mz.122-58.SE1

The last step is to reboot the switch and confirm the new firmware after reboot:

Switch#reload 
Proceed with reload? [confirm]

[looooong time to reboot, you should see a long list of sssssspssssss resembling the microcode programming on the serial console]

Switch#sh version 
Cisco IOS Software, C3750E Software (C3750E-UNIVERSALK9-M), Version 15.2(4)E6, RELEASE SOFTWARE (fc4)