The CPLD code upgrade procedure for the XSM4396S is complex. If you do not feel comfortable with the procedure, contact NETGEAR support.
The upgrade procedure requires the following files:
Note: Your XSM4396S must have firmware version 12.0.4.8 or later. If your XSM4396S has an older firmware version, contact NETGEAR support.
To upgrade the CPLD code:
- Copy the required files to a FAT32-formatted USB flash drive.
- Plug the USB flash drive into the USB port on the XSM4396S back panel.

- Connect to the switch using the serial console port or telnet.
Note: If you are connected to the switch using telnet, enter:
debug console - To verify that the required files are in the USB flash drive, enter:
show usb device - Run the following CLI commands:
Caution: Do not power cycle the switch during the update. The update may take 10 minutes or more. See below for the expected output.- dev cpldUpdate(/media/usb-storage/XSM4396_M_006_0718.jbc,0);
- dev cpldUpdate(/media/usb-storage/XSM4396_S_006_0629.jbc,1);
- After the CLI commands finish, unplug all power cables from the XSM4396S.
The switch powers off. - After the LEDs on the power supply units turn off, plug in all power cables.
The switch powers on and the update is completed.
Expected Output
(M4300-96X) #dev cpldUpdate(/media/usb-storage/XSM4396_S_006_0306.jbc,1);
Devshell output (Session #0): cpldUpdate(/media/usb-storage/XSM4396_ S_006_0629.jbc,1);
serveWDflag = 0
cpldWriteEnable MISC REG val: 0x0, wrc:1, rrc:1
cpldUpdateInit: Selected CPLD 2 of M4396S for programming.
cpldUpdate: Attempting CPLD update with jbcplayer. file: /media/usb-storage/XSM4396_ S_006_0629.jbc, size: 56606
PROGRAM
DO_BLANK_CHECK
DO_VERIFY
DO_SECURE
DO_DISABLE_ISP_CLAMP
DO_BYPASS_CFM
DO_BYPASS_UFM
DO_REAL_TIME_ISP
DO_FORCE_SRAM_DOWNLOAD
DO_READ_USERCODE
DO_INIT_CONFIGURATION
Unrecognized device
cpldUpdate: jbcplayer execution completed.
cpldWriteDisable MISC REG val: 0x0, wrc:1, rrc:1
cpldUpdate: CPLD update exited with rc 0 (Success)
value = 0 = 0x0
arg 1: /media/usb-storage/XSM4396_ S_006_0629.jbc
arg 3: ;
(M4300-96X) #dev cpldUpdate(/media/usb-storage/XSM4396_ M_006_0718.jbc,0);
Devshell output (Session #0): cpldUpdate(/media/usb-storage/XSM4396_ M_006_0718.jbc,0);
cpldUpdateInit: Selected CPLD 1 of M4348S for programming.
cpldUpdate: Attempting CPLD update with jbcplayer. file: /media/usb-storage/XSM4396_ M_006_0718.jbc, size: 85550
cpldWriteEnable MISC REG val: 0x3
PROGRAM
DO_BLANK_CHECK
DO_VERIFY
DO_DISABLE_ISP_CLAMP
DO_BYPASS_CFM
DO_BYPASS_UFM
DO_REAL_TIME_ISP
DO_FORCE_SRAM_DOWNLOAD
DO_BYPASS_ICB
DO_BYPASS_CFM1
DO_READ_USERCODE
DO_INIT_CONFIGURATION
Device #1 IDCODE is 031810DD
full-chip erasing Max 10 FPGA device(s) ...
programming Max 10 FPGA CFM0 block at sector 5 ...
programming Max 10 FPGA UFM block at sector 1 ...
programming Max 10 FPGA UFM block at sector 2 ...
verifying Max 10 FPGA CFM0 block at sector 5 ...
verifying Max 10 FPGA UFM block at sector 1 ...
verifying Max 10 FPGA UFM block at sector 2 ...
programming Max 10 FPGA DSM block ...
DONE
cpldUpdate: jbcplayer execution completed.
cpldWriteDisable MISC REG val: 0x1
cpldUpdate: CPLD update exited with rc 0 (Success)
value = 0 = 0x0
arg 1: /media/usb-storage/XSM4396_ M_006_0718.jbc
arg 3: ;