Overview
Upgrading a Catalyst 3750X stack is methodical but unforgiving if steps are skipped. The WS-C3750X-24T-S ships with a 24-port 1G copper switch module and supports stacking via StackWise-480. Moving from 15.0(2)SE1 to 15.2(4)E10 is a major train jump — SE to E — which requires extra care: different train, different feature sets, and a mandatory flash filesystem check before transfer.
This guide covers a stack of 1–4 members. Every command is shown for both single-switch and multi-member scenarios. The entire procedure takes 20–30 minutes per stack with a ~5 minute downtime window during the reload.
Maintenance window required. The final reload drops all traffic until the stack comes back up. Plan accordingly.
Part 1 — Pre-Upgrade Validation
Never skip pre-checks. A stack member with insufficient flash or a corrupt image will brick a member mid-upgrade and require a console recovery.
1.1 — Verify Current Version and Stack Health
# Confirm current IOS version on all stack members
Switch# show version
# Expected: Cisco IOS Software, Version 15.0(2)SE1
# Check: every member shows same version — mixed versions = upgrade already in progress
# Verify stack membership and roles
Switch# show switch
# Confirms: Switch Number, Role (Active/Standby/Member), State (Ready), Priority
# All members must be in Ready state before proceeding
# Check stack ring topology
Switch# show switch stack-ring speed
Switch# show switch stack-ports summary
# All stack ports should show Link=OK, Sync=OK, InLoop=False
# Confirm no stack members are in partial ring or half-connected state
Switch# show switch neighbors
Expected show switch output before upgrade:
If any member is not in Ready state, resolve the stack issue before continuing.
1.2 — Check Flash Space on All Members
# Check flash on active switch (member 1)
Switch# dir flash:
# Note the "bytes available" line at the bottom
# 15.2(4)E10 image = ~28 MB. Need at least 35 MB free to be safe
# Check flash on ALL stack members
Switch# dir flash-2:
Switch# dir flash-3:
Switch# dir flash-4:
# Every member needs enough space. Remove old images if needed (after backup)
# If flash is tight — delete old image (only AFTER new image is verified working)
Switch# delete flash:c3750e-universalk9-mz.150-2.SE1.bin
# Confirm deletion. Then: squeeze flash: to reclaim space
Switch# squeeze flash:
1.3 — Backup the Running Configuration
# Save running config to startup (critical before any change)
Switch# write memory
# Copy startup config off-box via TFTP
Switch# copy startup-config tftp://192.168.1.10/3750x-pre-upgrade.cfg
# Alternatively copy to flash as local backup
Switch# copy startup-config flash:3750x-pre-upgrade.cfg
# Document current boot variable (critical for rollback)
Switch# show boot
# Note the BOOT path shown — you will need this if rollback is required
1.4 — Note the Image Filename
The correct image for WS-C3750X running the IP Services or IP Base feature set:
| Feature Set | 15.2(4)E10 Image Filename |
|---|---|
| IP Services (ipservices) | c3750e-universalk9-mz.152-4.E10.bin |
| Universal (universal) | c3750e-universalk9-mz.152-4.E10.bin |
The 3750X uses the
c3750eimage prefix (notc3750). Verify the exact filename from Cisco's software download portal before transfer. MD5 hash is available on the download page.
Part 2 — Image Transfer
2.1 — Copy Image to Active Switch Flash
# Method 1: TFTP transfer (most common)
Switch# copy tftp://192.168.1.10/c3750e-universalk9-mz.152-4.E10.bin flash:
# Destination filename [c3750e-universalk9-mz.152-4.E10.bin]? (press Enter)
# Transfer begins — ~28 MB over 100Mbps takes approx 3-5 minutes
# Watch for: !!!!!!!! pattern = successful blocks
# If you see: ....... (dots) = timeout — check TFTP server and routing
# Method 2: USB flash drive (fastest, no network dependency)
Switch# copy usbflash0:c3750e-universalk9-mz.152-4.E10.bin flash:
# Method 3: SCP from a Linux/Windows server
Switch# copy scp://admin@192.168.1.10/c3750e-universalk9-mz.152-4.E10.bin flash:
2.2 — Verify MD5 Checksum
This step is mandatory. A corrupt transfer will fail to boot and require a ROMMON/xmodem recovery.
# Verify MD5 of copied image — compare against Cisco's published hash
Switch# verify /md5 flash:c3750e-universalk9-mz.152-4.E10.bin
# Output: verify /md5 (flash:c3750e-universalk9-mz.152-4.E10.bin) = <hash>
# Must match exactly the MD5 from Cisco's download page
# If hashes differ: delete the file and re-transfer
# Optionally verify SHA512 (more secure)
Switch# verify /sha512 flash:c3750e-universalk9-mz.152-4.E10.bin
2.3 — Copy Image to All Stack Members
The image on flash-1 (active) must be manually copied to each member's local flash. The stack does not auto-distribute the image.
# Copy from active switch flash to member 2 flash
Switch# copy flash:c3750e-universalk9-mz.152-4.E10.bin flash-2:
# Destination filename? (press Enter to accept same name)
# Copy to member 3
Switch# copy flash:c3750e-universalk9-mz.152-4.E10.bin flash-3:
# Copy to member 4
Switch# copy flash:c3750e-universalk9-mz.152-4.E10.bin flash-4:
# Confirm image is present on all members
Switch# dir flash-2:
Switch# dir flash-3:
Switch# dir flash-4:
# Each should list: c3750e-universalk9-mz.152-4.E10.bin with correct file size
Part 3 — Boot Variable Configuration
3.1 — Set Boot Variable on All Stack Members
Switch# conf t
# Remove the old boot statement first (clean slate)
Switch(config)# no boot system
# Set new boot image — applies to the active switch (member 1)
Switch(config)# boot system switch all flash:c3750e-universalk9-mz.152-4.E10.bin
# "switch all" = applies to ALL stack members simultaneously
# This is the recommended command for stacks — one line covers every member
Switch(config)# end
# Save configuration — critical. If this is skipped the old boot var survives reload
Switch# write memory
3.2 — Verify Boot Variable Before Reload
# Confirm boot variable is set correctly on all members
Switch# show boot
# Expected output:
# BOOT path-list : flash:c3750e-universalk9-mz.152-4.E10.bin
# Config file : flash:/config.text
# Private Config file: flash:/private-config.text
# Enable Break : yes
# For a stack, verify per-member boot variable
Switch# show boot | include switch
# Each member line should show the new image path
# Double-check the image file is on flash and matches the boot path exactly
Switch# dir flash: | include E10
# Expected: c3750e-universalk9-mz.152-4.E10.bin
Part 4 — Reload
4.1 — Schedule the Reload (Recommended)
Using reload in is safer than reload — it gives a countdown and allows cancellation if something goes wrong before the window starts.
# Schedule reload 5 minutes from now (gives time to notify team)
Switch# reload in 5
# Proceeds without a config save prompt if you already ran write memory
# A system message broadcasts to all logged-in users
# Cancel a scheduled reload if needed
Switch# reload cancel
# Immediate reload (use only during maintenance window with all teams notified)
Switch# reload
# Proceed with reload? [confirm] — press Enter
4.2 — What to Expect During Reload
The stack goes through this sequence:
- All members save state and begin reloading simultaneously
- Each member decompresses the new IOS image (~2–3 min)
- The active switch comes up first and begins stack discovery
- Standby and member switches join the stack ring
- Stack is fully operational — typically 4–7 minutes from reload to all ports forwarding
If a member takes longer than 10 minutes to rejoin, check its console. It may have booted the old image (boot var was not saved) or failed to find the image file on its local flash.
Part 5 — Post-Upgrade Verification
5.1 — Verify New IOS Version
# First command after reload — confirm version on all stack members
Switch# show version
# Expected: Cisco IOS Software, Version 15.2(4)E10
# Verify: every member in the output shows 15.2(4)E10 (not a mix)
# Confirm all stack members are present and Ready
Switch# show switch
# All members: State = Ready
# Active/Standby roles should be same as before (unless priority changed)
# Verify stack ring is intact
Switch# show switch stack-ports summary
# All ports: Link=OK, Sync=OK, InLoop=False
5.2 — Verify Interfaces and Forwarding
# Check all interfaces came up correctly
Switch# show interfaces status
# Compare against pre-upgrade — every connected port should show "connected"
# Ports that were "notconnect" before should still be "notconnect"
# Verify Spanning Tree is converged
Switch# show spanning-tree summary
# No ports should be stuck in Listening or Learning (should be Forwarding)
Switch# show spanning-tree | include BLK\|LIS\|LRN
# Empty output = good. Any hits = investigate immediately
# Verify MAC address table is populated
Switch# show mac address-table count
# Should be similar to pre-upgrade count within a few minutes
# Check VLAN database is intact
Switch# show vlan brief
# All VLANs should be active. No VLANs should be missing
5.3 — Verify Routing and Uplinks (if L3 switch)
# Check L3 interfaces are up
Switch# show ip interface brief
# All SVI and routed interfaces should show "up/up"
# Verify routing table is populated
Switch# show ip route summary
# Route counts should match pre-upgrade baseline
# If running OSPF — confirm adjacencies are up
Switch# show ip ospf neighbor
# All neighbors should show FULL state
# If running BGP — confirm peers are established
Switch# show ip bgp summary | begin Neighbor
# State/PfxRcd column should show a number (prefix count), not Idle/Active
# Connectivity test — ping default gateway and a remote subnet
Switch# ping 192.168.1.1 source vlan 1 repeat 100
# 100/100 success rate expected. Any loss = investigate routing
5.4 — Verify Boot Variable is Persistent
# Confirm boot var points to new image (survives reload)
Switch# show boot
# BOOT path-list must show: flash:c3750e-universalk9-mz.152-4.E10.bin
# If it still shows old image — run the boot system command and write mem again
# Confirm running image matches boot image
Switch# show version | include System image
# System image file is "flash:c3750e-universalk9-mz.152-4.E10.bin"
Part 6 — Rollback Procedure
If the upgrade causes an unexpected issue (feature regression, incompatible hardware module, critical bug), revert as follows:
# Step 1: Set boot variable back to old image
Switch# conf t
Switch(config)# no boot system
Switch(config)# boot system switch all flash:c3750e-universalk9-mz.150-2.SE1.bin
Switch(config)# end
# Step 2: Verify old image is still on flash
Switch# dir flash: | include SE1
# If old image was deleted — you must re-transfer it before rollback
# Step 3: Save and reload
Switch# write memory
Switch# reload
# Step 4: After reload — confirm rollback succeeded
Switch# show version | include Version
# Should show: Version 15.0(2)SE1
Keep the old image on flash until you are satisfied the new version is stable in production. Only delete 15.0(2)SE1 after at least 2–4 weeks of verified normal operation.
Common Issues and Fixes
Pre/Post Upgrade Checklist
- [ ]
show versionconfirms 15.0(2)SE1 on all stack members - [ ]
show switch— all members in Ready state - [ ]
show switch stack-ports summary— all ports Link=OK - [ ] Running config saved with
write memory - [ ] Config backed up to TFTP or local flash
- [ ] Flash space verified on every member (≥35 MB free)
- [ ] Image filename confirmed:
c3750e-universalk9-mz.152-4.E10.bin - [ ] MD5 hash verified against Cisco's published value
- [ ] Image copied to flash on ALL stack members
- [ ]
dir flash-2: / flash-3: / flash-4:confirms image present - [ ]
boot system switch all flash:c3750e-universalk9-mz.152-4.E10.binconfigured - [ ]
write memoryexecuted after boot var change - [ ]
show bootconfirms correct image on all members - [ ] Maintenance window confirmed with team
- [ ] Rollback path documented (old image still on flash)
- [ ] Post-upgrade:
show versionconfirms 15.2(4)E10 on all members - [ ] Post-upgrade:
show switch— all members Ready - [ ] Post-upgrade:
show interfaces status— all connected ports up - [ ] Post-upgrade:
show spanning-tree summary— no ports in transient state - [ ] Post-upgrade: routing adjacencies restored (OSPF/BGP if applicable)