From 94e565dfb2e30286de404c81171567731dadcd31 Mon Sep 17 00:00:00 2001 From: BitwiseOperator Date: Sun, 27 Oct 2024 23:56:16 -0400 Subject: [PATCH] content-update --- ...ade_Procedure_Aruba_Central_and_Instant.md | 56 ++- .../Juniper_Configuration_Generator.md | 4 +- .../AP_Firmware_Recovery_CLI_Ruckus_SZ.md | 2 +- .../AP_TX_Power_EIRP_Ruckus_SZ.md | 37 +- ...mands_Ruckus_SZ.md => Ruckus_AP_CLI_SZ.md} | 0 ...-_ZoneDirector_ZD_SmartZone_SZ_Firmware.md | 28 +- ...Ruckus_MAC_Authentication_Security_Port.md | 2 +- ...are_upgrade_with_USB_Ruckus_Brocade_ICX.md | 422 ++++++++++-------- .../SFP_RUCKUS_Optics_Ruckus_Brocade_ICX.md | 1 + .../Vendor/Ruckus/Switches/drive.mceclip1.png | Bin 0 -> 28000 bytes 10 files changed, 310 insertions(+), 242 deletions(-) rename docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/{CLI_General_Commands_Ruckus_SZ.md => Ruckus_AP_CLI_SZ.md} (100%) create mode 100644 docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/drive.mceclip1.png diff --git a/docs/Knowledge_Base/Network/Vendor/Aruba_HPE/Aruba_Central_Instant_Cluster/Upgrade_Procedure_Aruba_Central_and_Instant.md b/docs/Knowledge_Base/Network/Vendor/Aruba_HPE/Aruba_Central_Instant_Cluster/Upgrade_Procedure_Aruba_Central_and_Instant.md index 4167d3ea2..d3401e363 100644 --- a/docs/Knowledge_Base/Network/Vendor/Aruba_HPE/Aruba_Central_Instant_Cluster/Upgrade_Procedure_Aruba_Central_and_Instant.md +++ b/docs/Knowledge_Base/Network/Vendor/Aruba_HPE/Aruba_Central_Instant_Cluster/Upgrade_Procedure_Aruba_Central_and_Instant.md @@ -59,44 +59,44 @@ ###### URL Format 1 - http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_NAME_VersionNumber + [http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_NAME_VersionNumber](http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_NAME_VersionNumber) - Below links are examples of the different version names available for firmware version 8.7.1.6_81786 + **Below links are examples of the different version names available for firmware version 8.7.1.6_81786** - Ursa http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Ursa_8.7.1.6_81786 + Ursa [http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Ursa_8.7.1.6_81786](http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Ursa_8.7.1.6_81786) - Draco http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Draco_8.7.1.6_81786 + Draco [http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Draco_8.7.1.6_81786](http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Draco_8.7.1.6_81786) - Hercules http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Hercules_8.7.1.6_81786 + Hercules [http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Hercules_8.7.1.6_81786](http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Hercules_8.7.1.6_81786) - Gemini http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Gemini_8.7.1.6_81786 + Gemini [http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Gemini_8.7.1.6_81786](http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Gemini_8.7.1.6_81786) - Lupus http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Lupus_8.7.1.6_81786 + Lupus [http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Lupus_8.7.1.6_81786](http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Lupus_8.7.1.6_81786) - Scorpio http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Scorpio_8.7.1.6_81786 + Scorpio [http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Scorpio_8.7.1.6_81786](http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Scorpio_8.7.1.6_81786) - Vela http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Vela_8.7.1.6_81786 + Vela [http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Vela_8.7.1.6_81786](http://d2vxf1j0rhr3p0.cloudfront.net/fwfiles/ArubaInstant_Vela_8.7.1.6_81786) ###### URL Format 2 - http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_NAME_VersionNumber + [http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_NAME_VersionNumber](http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_NAME_VersionNumber) - Below links are examples of the different version names available for firmware version 8.10.0.1_84079 + **Below links are examples of the different version names available for firmware version 8.10.0.1_84079** - Ursa http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Ursa_8.10.0.1_84079 + Ursa [http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Ursa_8.10.0.1_84079](http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Ursa_8.10.0.1_84079) - Draco http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Draco_8.10.0.1_84079 + Draco [http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Draco_8.10.0.1_84079](http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Draco_8.10.0.1_84079) - Hercules http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Hercules_8.10.0.1_84079 + Hercules [http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Hercules_8.10.0.1_84079](http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Hercules_8.10.0.1_84079) - Gemini http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Gemini_8.10.0.1_84079 + Gemini [http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Gemini_8.10.0.1_84079](http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Gemini_8.10.0.1_84079) - Lupus http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Lupus_8.10.0.1_84079 + Lupus [http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Lupus_8.10.0.1_84079](http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Lupus_8.10.0.1_84079) - Scorpio http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Scorpio_8.10.0.1_84079 + Scorpio [http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Scorpio_8.10.0.1_84079](http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Scorpio_8.10.0.1_84079) - Vela http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Vela_8.10.0.1_84079 + Vela [http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Vela_8.10.0.1_84079](http://common.cloud.hpe.com/ccssvc/ccs-system-firmware-registry/IAP/ArubaInstant_Vela_8.10.0.1_84079) ##### Test the URL @@ -108,13 +108,13 @@ #### Step 4: The upgrade - 3- Login to the Virtual controller Web GUI + 1. Login to the Virtual controller Web GUI - 4- Go to Maintenance > Firmware + 2. Go to Maintenance > Firmware - 5- From the manual option, enter the respective URL for the models in the tab. using the URL that was generated in point number 1. + 3. From the manual option, enter the respective URL for the models in the tab. using the URL that was generated in point number 1. - 6- Make sure to enable the reboot AP option > Click on the upgrade now + 4. Make sure to enable the reboot AP option > Click on the upgrade now - The loading page should change to Downloading then Upgrading. - You will need to wait for an Upgrade Successful message. @@ -129,16 +129,14 @@ !!! bug "" - **If you're having an issue and the upgrade is failing you can do a few things to check.** + #### If you're having an issue and the upgrade is failing you can do a few things to check. - Log in to FTP Server with the user you created and make sure you are able to gain access and view configuration and files. - If you're trying to upgrade multiple Images through the CLI command ```upgrade-image``` Abort this as this only supports single image clusters. - --- - - **If you try to upgrade through the web with a link [ftp, TFTP, http] and receive an error similar to the one below** + #### If you try to upgrade through the web with a link [ftp, TFTP, http] and receive an error similar to the one below ![aruba_upgrade_troubleshooting_00](/Knowledge_Base/images/aruba_upgrade_troubleshooting_00.png) @@ -148,9 +146,7 @@ ![aruba_upgrade_troubleshooting_0](/Knowledge_Base/images/aruba_upgrade_troubleshooting_0.png) - --- - - **Is the Virtual Controller having problems obtaining the image?** + #### Is the Virtual Controller having problems obtaining the image? that's where you can do something similar to running [replace with the URL you're using for the firmware upgrade] @@ -173,7 +169,7 @@ ![aruba_upgrade_troubleshooting_2](/Knowledge_Base/images/aruba_upgrade_troubleshooting_2.png) - **Other commands** + #### Other commands ```bash show log provision diff --git a/docs/Knowledge_Base/Network/Vendor/Juniper/Juniper_Configuration_Generator.md b/docs/Knowledge_Base/Network/Vendor/Juniper/Juniper_Configuration_Generator.md index 9c5f4729b..6715e5b1b 100644 --- a/docs/Knowledge_Base/Network/Vendor/Juniper/Juniper_Configuration_Generator.md +++ b/docs/Knowledge_Base/Network/Vendor/Juniper/Juniper_Configuration_Generator.md @@ -4,7 +4,9 @@ #### Official Tools - Make sure to check the **`About this tool section'** ![alt text](/Knowledge_Base/images/Juniper_Configuration_Generator.png) as it might state each Tool's limitations. + Make sure to check the **`About this tool section'** as it might state each Tool's limitations. + + ![alt text](/Knowledge_Base/images/Juniper_Configuration_Generator.png) - [SRX HA Configuration Generator](https://support.juniper.net/support/tools/srxha/#) - [SRX & J Series Site-to-Site VPN Configuration Generator](https://support.juniper.net/support/tools/vpnconfig/) diff --git a/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/AP_Firmware_Recovery_CLI_Ruckus_SZ.md b/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/AP_Firmware_Recovery_CLI_Ruckus_SZ.md index b0ac893d7..d0df0f2d1 100644 --- a/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/AP_Firmware_Recovery_CLI_Ruckus_SZ.md +++ b/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/AP_Firmware_Recovery_CLI_Ruckus_SZ.md @@ -14,7 +14,7 @@ To recover an Access Point whereby the management interface can no longer be acc Before you can tell the AP's to manually downgrade there firmware you must first create a file called fwcntrl.rcks and use your favourite text editor to modify the contents. - The contents must contain the following: + The contents must contain the following ```bash [rcks_fw.main] diff --git a/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/AP_TX_Power_EIRP_Ruckus_SZ.md b/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/AP_TX_Power_EIRP_Ruckus_SZ.md index 613b487b5..26bf395f8 100644 --- a/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/AP_TX_Power_EIRP_Ruckus_SZ.md +++ b/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/AP_TX_Power_EIRP_Ruckus_SZ.md @@ -1,33 +1,34 @@ !!! info "" - EIRP (dBm) = Conducted Power (dBm) + Antenna Gain (dBi) – Cable loss (dB) + **EIRP (dBm)** = Conducted Power (dBm) + Antenna Gain (dBi) – Cable loss (dB) Max EIRP allowed by FCC on Access Points - 2.4 GHz Channels 1 – 11 (36 dBm) - 5 GHz U-NII-1 channels 36 – 48 (36 dBm) - 5 GHz U-NII-2A channels 52 – 64 (30 dBm) - 5 GHz U-NII-2C channels 100 – 144 (30 dBm) - 5 GHz U-NII-3 channels 149 – 165 (36 dBm) + - 2.4 GHz Channels 1 – 11 (36 dBm) + - 5 GHz U-NII-1 channels 36 – 48 (36 dBm) + - 5 GHz U-NII-2A channels 52 – 64 (30 dBm) + - 5 GHz U-NII-2C channels 100 – 144 (30 dBm) + - 5 GHz U-NII-3 channels 149 – 165 (36 dBm) + + **Antenna Gain** - Antenna Gain This is where Ruckus shines with the Beamflex gain. Beamflex adaptive antenna will get you approx. 3 dBi gain per 2 radio chains on most models. This will be added to the conductive power you set on the management interface and will make sure the EIRP is less than the FCC limit. !!! info "" #### How to find the conducted power of your Ruckus Unleashed AP? - run the below command on WAP + Run the below commands on WAP ```bash ruckus> en ruckus# debug - ruckus(debug)# rksap_cli -A -s “iwconfig” + ruckus(debug)# rksap_cli -A -s "iwconfig" ``` Below is a H510 AP configured with maximum Tx power. It shows 2.4 GHz using Tx power as 16 dBm and 5 GHz at 19 dBm. - ![alt text](/Knowledge_Base/images//Knowledge_Base/images/Ruckus_WAP_image.png) + ![alt text](/Knowledge_Base/images/Ruckus_WAP_image.png) R710 shows 2.4 GHz at 22 dBm and 5 GHz at 20 dBm. @@ -101,15 +102,15 @@ !!! info "" - #### Actual WAP Power vs datasheet + #### Actual WAP Power vs Datasheet - I was working a case about a year ago channelizaing over 100 WAPs at this single location, i had to set the power on each WAP seperatly based on our ekahau WiFi Survey report, i am not one to do such task from GUI, therefor I scripted the whole thing to run on the SmartZone. + I was working a case about a year ago Channelizing over 100 WAPs at this single location, i had to set the power on each WAP separately based on our ekahau WiFi Survey report, i am not one to do such task from GUI, therefor I scripted the whole thing to run on the SmartZone. Anyway, I found that after settings the power on all WAPs and monitoring the clients, nothing was making sense. I looked into the datasheet for each WAP model we had at this location and tried checking the calculations I made based on the information I was fed by our CWNE Network Architect and still something didn't make sense. - I reached out to Ruckus support asking on how I can check the actual Tx Power on the WAP and that's when he hopped on and gave me access to the support shell to get the infomation I need. + I reached out to Ruckus support asking on how I can check the actual Tx Power on the WAP and that's when he hopped on and gave me access to the support shell to get the information I need. - This is when I found out that the actual data provided by Ruckus on theor datasheets, doesnt really match what you get from the Access Point, I was kind of shocked. Below are some of the values I obtained while doing my checks on the WAP, you can see what power level you get based on the select settings i had at the time. + This is when I found out that the actual data provided by Ruckus on the Datasheets, doesn't really match what you get from the Access Point, I was kind of shocked. Below are some of the values I obtained while doing my checks on the WAP, you can see what power level you get based on the select settings i had at the time. ##### H550 @@ -124,7 +125,7 @@ ![alt text](/Knowledge_Base/images/Ruckus_WAP_image-4.png) ##### R350 - + ```bash 2.4GHz Max 20 2 gain 5GHz Max 20 gain 3 @@ -141,14 +142,14 @@ ![alt text](/Knowledge_Base/images/Ruckus_WAP_image-5.png) ##### T350c - + ```bash 2.4Ghz 23dBm 5Ghz 22dBm ``` ##### T310c - + ```bash 2.4Ghz 20dBm 5Ghz 22dBm @@ -197,4 +198,4 @@ Looks for 2.4GHZ TX POWER TARGET > MCS0 HT20 > Pout dBm Value that's the Max - 5GHZ TX POWER TARGET > MCS0 VHT20 > Pout dBm Value that's the Max \ No newline at end of file + 5GHZ TX POWER TARGET > MCS0 VHT20 > Pout dBm Value that's the Max diff --git a/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/CLI_General_Commands_Ruckus_SZ.md b/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_AP_CLI_SZ.md similarity index 100% rename from docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/CLI_General_Commands_Ruckus_SZ.md rename to docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_AP_CLI_SZ.md diff --git a/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_Access_Point_compatibility_-_ZoneDirector_ZD_SmartZone_SZ_Firmware.md b/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_Access_Point_compatibility_-_ZoneDirector_ZD_SmartZone_SZ_Firmware.md index c16ac03d6..509242953 100644 --- a/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_Access_Point_compatibility_-_ZoneDirector_ZD_SmartZone_SZ_Firmware.md +++ b/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_Access_Point_compatibility_-_ZoneDirector_ZD_SmartZone_SZ_Firmware.md @@ -1,6 +1,6 @@ !!! info "" - ** AP Firmware Compatability to Join ZD ** + ** AP Firmware compatibility to Join ZD ** ZD firmware version 9.13.x or lower > AP with Standalone Firmware 100.x is supported. ZD firmware version 10.x or later > AP with Standalone Firmware 104.x or above is supported. @@ -11,26 +11,30 @@ - APs running SZ 5.x and above - APs running Unleashed 200.x and newer - AP utilizes LWAPP to communicate with the controller + AP utilizes `LWAPP` to communicate with the controller - APs running ZD 9.x - APs running solo 104.x or prior ++++++++++ - In SmartZone under Cluster Information > Only first time config you can enable the AP Conversion (This enables LWAPP) > if not enabled then, you can re-enable it from GUI, you have to go to CLI - You can enable this option or disable it through CLI when onboarding APs depending on compatabiliy + In SmartZone under `Cluster Information` > Only first time config you can enable the AP Conversion (This enables `LWAPP`) > if not enabled then, you can re-enable it from GUI, you have to go to CLI + You can enable this option or disable it through CLI when onboarding APs depending on compatibility + ```bash >enable >Show run lwapp2scg + ``` + check the policy if deny all or allow all + ```bash #config #lwapp2scg #policy accept-all > choose this depending on what you need #policy deny-all > choose this depending on what you need #end - + ``` It is similar for vSZ/SZ, so for SZ/vSZ lower than 3.6.x, the AP standalone firmware 100.x is supported and for the firmware version higher than 5.x, the AP firmware version 104.x or higher is supported. @@ -40,19 +44,15 @@ will have issue 5.1 or 5.2 SZ So you need to have only IPv4 - Latest APs should be on 114 but older try either 104 or 110 solo fimrware version + Latest APs should be on 114 but older try either 104 or 110 solo Firmware version - on AP having issue with run - get syslog log + on AP having issue with run `get syslog log` + ```bash #set Controller IP set scg ip - ping controller also if needed to check if you can reach it out - - - - ------------------------------ + ``` + ping controller also if needed to check if you can reach it out Controller upgrade then you need to upgrade the APs - diff --git a/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_ICX_Brocade_CLI_Dot1x_Ruckus_MAC_Authentication_Security_Port.md b/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_ICX_Brocade_CLI_Dot1x_Ruckus_MAC_Authentication_Security_Port.md index c48e6dc8f..c491dbb29 100644 --- a/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_ICX_Brocade_CLI_Dot1x_Ruckus_MAC_Authentication_Security_Port.md +++ b/docs/Knowledge_Base/Network/Vendor/Ruckus/Access_Points/Ruckus_ICX_Brocade_CLI_Dot1x_Ruckus_MAC_Authentication_Security_Port.md @@ -1,6 +1,6 @@ !!! info "" - http://docs.ruckuswireless.com/fastiron/08.0.60/fastiron-08060-securityguide/GUID-173BF914-D248-4CAE-9D80-B036E8EC54E6.htmlhttp://docs.ruckuswireless.com/fastiron/08.0.60/fastiron-08060-securityguide/GUID-173BF914-D248-4CAE-9D80-B036E8EC54E6.html + [fastiron-08060-securityguide](http://docs.ruckuswireless.com/fastiron/08.0.60/fastiron-08060-securityguide/GUID-173BF914-D248-4CAE-9D80-B036E8EC54E6.htmlhttp://docs.ruckuswireless.com/fastiron/08.0.60/fastiron-08060-securityguide/GUID-173BF914-D248-4CAE-9D80-B036E8EC54E6.html) ```bash conf t diff --git a/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/Firmware_upgrade_with_USB_Ruckus_Brocade_ICX.md b/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/Firmware_upgrade_with_USB_Ruckus_Brocade_ICX.md index b376b980e..d51cf5b21 100644 --- a/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/Firmware_upgrade_with_USB_Ruckus_Brocade_ICX.md +++ b/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/Firmware_upgrade_with_USB_Ruckus_Brocade_ICX.md @@ -1,194 +1,262 @@ !!! info "" -### Ruckus Switch Firmware Upgrade – Quick Steps - -download the new firmware from the this link [Ruckus support site]. -Unzip the firmware files into the USB flash drive.mceclip1.png -Plug the flash drive into your switch’s USB port. -Console into the switch and make sure the USB drive mounts mount disk0 -Copy the bootloader software to the switch’s bootrom copy disk0 flash mnzXXXXX.bin bootrom -Copy the firmware on your switches to the primary partition copy disk0 flash SPSXXXXX.bin primary -Verify that the flash contents are correct show flash -Make sure the switch is configured to boot from the primary flash partition ("configuration terminal” then “boot system flash primary”). -Verify that the configuration is set to boot from the desired partition show run | include boot -Save the configuration write memory -Reboot the switch reload -Once reloaded, verify the proper firmware version is running show version - -!!! info "" + ### Ruckus Switch Firmware Upgrade – Quick Steps + + 1. download the new firmware from the this link [Ruckus support site]. + 2. Unzip the firmware files into the USB flash + + ![alt text](drive.mceclip1.png) + + 3. Plug the flash drive into your switch’s USB port. + 4. Console into the switch and make sure the USB drive mounts + + ```bash + mount disk0 + ``` -### Ruckus Switch Firmware Upgrade – Detailed Steps + 5. Copy the bootloader software to the switch’s bootrom -If you already completed the steps in the Quick Steps then no need to do this. These are the same steps, however more detailed in case needed. + ```bash + copy disk0 flash mnzXXXXX.bin bootrom + ``` -1. Download firmware -Confirm the current approved DCD firmware version from [Here] and find it and download it from [Ruckus support site] + 6. Copy the firmware on your switches to the primary partition - + ```bash + copy disk0 flash SPSXXXXX.bin primary + ``` -2. Unzip the firmware and put it on a flash drive -mceclip0.png -Sample file structure of a Ruckus switch firmware package + 7. Verify that the flash contents are correct -A Ruckus switch firmware package will generally include files for lots of different hardware platforms but you really only need two at a time – a bootrom (bootloader) file and a firmware image. First, extract the .zip file and navigate to the folder matching your Ruckus ICX switch family. Then copy the bootloader file from the “Boot” folder and the proper firmware files out of the “Images” folder. Remember to always upgrade the switch bootloader when you upgrade your primary firmware! If you don’t you could crash your switch. In the end you should have three files on your USB drive that look similar to the following. I’ll give more details on why you need all these a little further down in the instructions. + ```bash + show flash + ``` -spzXXXX.bin – Bootloader -SPSXXXXX.bin – Layer 2 firmware image (switching only) -SPRXXXXX.bin – Layer 3 firmware image (routing and switching – L3 features generally require an additional license) -One final but important note – larger, modern flash drives may not work with your switch! For some reason Ruckus switches have a hard time reading drives that are 8+ GB in capacity. Ruckus switch firmware is small so I’d recommend you use the oldest and smallest flash drive you have for this process – 4GB or less in size. Also make sure your flash drive is formatted as FAT32, otherwise you might see the following error: + 8. Make sure the switch is configured to boot from the primary flash partition -ICX7150-24P Switch#mount disk0 -Are you sure?(enter 'y' or 'n'): y -ls: /dev/exusb: No such file or directory -External USB disk is not plugged in or not formatted with VFAT/FAT32 . - -3. Plug the USB flash drive into your switch’s USB port -This is somewhat self-explanatory. + ```bash + configuration terminal + boot system flash primary + ``` + + 9. Verify that the configuration is set to boot from the desired partition - + ```bash + show run | include boot + ``` -4. Console into the switch and verify the USB flash drive has mounted -Usually if your flash drive is formatted properly as FAT32 it will mount automatically. Try using the “show flash disk0” command to find out. If the flash drive is already mounted you should see something like this: + 10. Save the configuration -ICX7150-24P Switch#show files disk0 -F 786944 mnz10110.bin -F 28314668 SPR08061a.bin -F 24723488 SPS08061a.bin -D 4096 -[----] disk0/System Volume Information -53825100 bytes 3 File(s) in disk0 -If it’s NOT already mounted, try “mount disk0” and that should do the trick. If you get a mounting error then 1) make sure the flash drive is formatted as FAT32 and 2) make sure the flash drive + ```bash + write memory + ``` -has < 4GB total capacity. If both those conditions are true and the drive STILL won’t mount try rebooting the switch. + 11. Reboot the switch - + ```bash + reload + ``` -5. Copy the bootloader software to the switch’s bootrom -Copy with below command + 12. Once reloaded, verify the proper firmware version is running + + ```bash + show version + ``` + +!!! info "" -copy -For example: copy disk0 flash mnzXXXXX.bin bootrom - - ICX7150-24P Switch#copy disk0 flash mnz10110.bin bootrom -Flash Memory Write (8192 bytes per dot) -ICX7150-24P Switch#................................................................................................. -SYNCING IMAGE TO FLASH. DO NOT SWITCH OVER OR POWER DOWN THE UNIT(65536 bytes per dot)... -............ -Copy Done. - - -6. Copy the primary firmware to the switch’s primary flash partition -Use “show version” to find out your current firmware version, then use “show flash” to find out where that firmware is stored. -Use the copy command “copy flash flash [primary | secondary]” to put a copy of your firmware into the unused flash partition. -Example: - -copy disk0 flash SPSXXXXX.bin primary - -copy disk0 flash SPSXXXXX.bin secondary - -ICX7150-24P Switch#copy disk0 flash SPS08061a.bin primary -ICX7150-24P Switch#Load to buffer (8192 bytes per dot) ......................................... -SYNCING IMAGE TO FLASH. DO NOT SWITCH OVER OR POWER DOWN THE UNIT(65536 bytes per dot)... -................................................................................................. -Copy Done. -ICX7150-24P Switch#copy disk0 flash SPR08061a.bin secondary -ICX7150-24P Switch#Load to buffer (8192 bytes per dot) ....................................... -SYNCING IMAGE TO FLASH. DO NOT SWITCH OVER OR POWER DOWN THE UNIT(65536 bytes per dot)... -................................................................................................ -Copy Done. - - -7. Verify the Flash Contents are Correct -After you’re done copying the firmware over, make sure everything is where you want it to be. - -Run show flash - -ICX7150-24P Switch#show flash -Stack unit 1: -Compressed Pri Code size = 24723488, Version:08.0.61aT211 (SPS08061a.bin) -Compressed Sec Code size = 28314668, Version:08.0.61aT213 (SPR08061a.bin) -Compressed Boot-Monitor Image size = 786432, Version:10.1.10T225 -Code Flash Free Space = 1306935296 - - -8. Force the Switch to Boot from Primary Flash -By default, a Ruckus switch will boot any valid firmware found in its primary flash partition but It's prefered to always specify which partition to use. Use the commands below to force the switch to boot from your primary partition. Run the below: - -configure terminal - -boot system flash primary - -write memory - -ICX7150-24P Switch#configure terminal -ICX7150-24P Switch(config)#boot system flash primary -ICX7150-24P Switch(config)#write memory - - -9. Verify the Switch will Boot from the Desired Partition -Before reloading the switch confirm which flash partition the switch will be booting from. - -Run show running-config | include boot - -ICX7150-24P Switch#show running-config | include boot -boot sys fl pri -ICX7150-24P Switch(config)# - - -10. Save the Running Configuration -Make sure to save your configuration write memory This will make sure your boot settings from the previous step are saved through the reboot. - -ICX7150-24P Switch#write memory -There is no startup config file, unable to save legacy config -Flash Memory Write (8192 bytes per dot) -. -Write startup-config done. -Copy Done. -ICX7150-24P Switch# - - -11. Reload the Switch -For the firmware upgrade to take effect you have to reboot the switch, use reload - -ICX7150-24P Switch#reload -Are you sure? (enter 'y' or 'n'): y -Could not verify if the Running Config data has been changed. -Do you want to continue the reload anyway? (enter 'y' or 'n'): y -ICX7150-24P Switch#Unmounting the External USB -The system is going down NOW! -! -!Reload output snipped -! - - -12. Confirm the Upgrade -Once the switch has reloaded make sure the correct firmware version is active. Run show version - -ICX7150-24P Switch#show version -Copyright (c) 1996-2017 Brocade Communications Systems, Inc. All rights reserved. -UNIT 1: compiled on Aug 14 2017 at 06:54:44 labeled as SPS08061a -(24723488 bytes) from Primary SPS08061a.bin -SW: Version 08.0.61aT211 -Compressed Boot-Monitor Image size = 786944, Version:10.1.10T225 (mnz10110) -Compiled on Sun Jun 25 09:25:15 2017 - -HW: Stackable ICX7150-24-POE -========================================================================== -UNIT 1: SL 1: ICX7150-24P-4X10GR POE 24-port Management Module -Serial #:FEA3217N0LA -Current License: 4X10GR -P-ASIC 0: type B160, rev 11 Chip BCM56160_B0 -========================================================================== -UNIT 1: SL 2: ICX7150-2X1GC 2-port 2G Module -========================================================================== -UNIT 1: SL 3: ICX7150-4X10GF 4-port 40G Module -========================================================================== -1000 MHz ARM processor ARMv7 88 MHz bus -8192 KB boot flash memory -2048 MB code flash memory -1024 MB DRAM -STACKID 1 system uptime is 1 minute(s) 19 second(s) -The system started at 02:06:21 GMT+00 Wed Jan 05 2000 - -The system : started=cold start - \ No newline at end of file + ### Ruckus Switch Firmware Upgrade – Detailed Steps + + If you already completed the steps in the Quick Steps then no need to do this. These are the same steps, however more detailed in case needed. + + 1. Download firmware + + Confirm the current approved DCD firmware version from [Here] and find it and download it from [Ruckus support site] + + 2. Unzip the firmware and put it on a flash drive + + ![alt text](drive.mceclip1.png) + + Sample file structure of a Ruckus switch firmware package + + > A Ruckus switch firmware package will generally include files for lots of different hardware platforms but you really only need two at a time – a bootrom (bootloader) file and a firmware image. First, extract the .zip file and navigate to the folder matching your Ruckus ICX switch family. Then copy the bootloader file from the “Boot” folder and the proper firmware files out of the “Images” folder. Remember to always upgrade the switch bootloader when you upgrade your primary firmware! If you don’t you could crash your switch. In the end you should have three files on your USB drive that look similar to the following. I’ll give more details on why you need all these a little further down in the instructions. + + - `spzXXXX.bin` – Bootloader + - `SPSXXXXX.bin` – Layer 2 firmware image (switching only) + - `SPRXXXXX.bin` – Layer 3 firmware image (routing and switching – L3 features generally require an additional license) + + One final but important note – larger, modern flash drives may not work with your switch! For some reason Ruckus switches have a hard time reading drives that are 8+ GB in capacity. Ruckus switch firmware is small so I’d recommend you use the oldest and smallest flash drive you have for this process – 4GB or less in size. Also make sure your flash drive is formatted as FAT32, otherwise you might see the following error: + + ```bash + ICX7150-24P Switch#mount disk0 + Are you sure?(enter 'y' or 'n'): y + ls: /dev/exusb: No such file or directory + External USB disk is not plugged in or not formatted with VFAT/FAT32 + ``` + + 3. Plug the USB flash drive into your switch’s USB port + + This is somewhat self-explanatory. + + 4. Console into the switch and verify the USB flash drive has mounted + + Usually if your flash drive is formatted properly as FAT32 it will mount automatically. Try using the `show flash disk0` command to find out. If the flash drive is already mounted you should see something like this: + + ```bash + ICX7150-24P Switch#show files disk0 + F 786944 mnz10110.bin + F 28314668 SPR08061a.bin + F 24723488 SPS08061a.bin + D 4096 + [----] disk0/System Volume Information + 53825100 bytes 3 File(s) in disk0 + ``` + + **If it’s NOT already mounted**, try `mount disk0` and that should do the trick. If you get a mounting error then: + + - make sure the flash drive is formatted as FAT32. + - make sure the flash drive has < 4GB total capacity. If both those conditions are true and the drive STILL won’t mount try rebooting the switch. + + 5. Copy the bootloader software to the switch’s bootrom + + ```bash + copy + ``` + + For example: copy disk0 flash mnzXXXXX.bin bootrom + + ```bash + ICX7150-24P Switch#copy disk0 flash mnz10110.bin bootrom + Flash Memory Write (8192 bytes per dot) + ICX7150-24P Switch#................................................................................................. + SYNCING IMAGE TO FLASH. DO NOT SWITCH OVER OR POWER DOWN THE UNIT(65536 bytes per dot)... + ............ + Copy Done. + ``` + + 6. Copy the primary firmware to the switch’s primary flash partition + 6.1. Use `show version` to find out your current firmware version, then use `show flash` to find out where that firmware is stored. + 6.2. Use the copy command `copy flash flash [primary | secondary]` to put a copy of your firmware into the unused flash partition. + + Example + + ```bash + copy disk0 flash SPSXXXXX.bin primary + copy disk0 flash SPSXXXXX.bin secondary + ``` + + ```bash + ICX7150-24P Switch#copy disk0 flash SPS08061a.bin primary + ICX7150-24P Switch#Load to buffer (8192 bytes per dot) ......................................... + SYNCING IMAGE TO FLASH. DO NOT SWITCH OVER OR POWER DOWN THE UNIT(65536 bytes per dot)... + ................................................................................................. + Copy Done. + ICX7150-24P Switch#copy disk0 flash SPR08061a.bin secondary + ICX7150-24P Switch#Load to buffer (8192 bytes per dot) ....................................... + SYNCING IMAGE TO FLASH. DO NOT SWITCH OVER OR POWER DOWN THE UNIT(65536 bytes per dot)... + ................................................................................................ + Copy Done. + ``` + + 7. Verify the Flash Contents are Correct After you’re done copying the firmware over, make sure everything is where you want it to be. Run `show flash` + + ```bash + ICX7150-24P Switch#show flash + Stack unit 1: + Compressed Pri Code size = 24723488, Version:08.0.61aT211 (SPS08061a.bin) + Compressed Sec Code size = 28314668, Version:08.0.61aT213 (SPR08061a.bin) + Compressed Boot-Monitor Image size = 786432, Version:10.1.10T225 + Code Flash Free Space = 1306935296 + ``` + + 8. Force the Switch to Boot from Primary Flash By default, a Ruckus switch will boot any valid firmware found in its primary flash partition but It's prefered to always specify which partition to use. Use the commands below to force the switch to boot from your primary partition. + + ```bash + configure terminal + boot system flash primary + write memory + ``` + + Example + + ```bash + ICX7150-24P Switch#configure terminal + ICX7150-24P Switch(config)#boot system flash primary + ICX7150-24P Switch(config)#write memory + ``` + + 9. Verify the Switch will Boot from the Desired Partition + + Before reloading the switch confirm which flash partition the switch will be booting from. Run `show running-config | include boot` + + ```bash + ICX7150-24P Switch#show running-config | include boot + boot sys fl pri + ICX7150-24P Switch(config)# + ``` + + + 10. Save the Running Configuration + + Make sure to save your configuration write memory This will make sure your boot settings from the previous step are saved through the reboot. + + ```bash + ICX7150-24P Switch#write memory + There is no startup config file, unable to save legacy config + Flash Memory Write (8192 bytes per dot) + . + Write startup-config done. + Copy Done. + ICX7150-24P Switch# + ``` + + 11. Reload the Switch + + For the firmware upgrade to take effect you have to reboot the switch, use `reload` + + ```bash + ICX7150-24P Switch#reload + Are you sure? (enter 'y' or 'n'): y + Could not verify if the Running Config data has been changed. + Do you want to continue the reload anyway? (enter 'y' or 'n'): y + ICX7150-24P Switch#Unmounting the External USB + The system is going down NOW! + ! + !Reload output snipped + ! + ``` + + 12. Confirm the Upgrade + + Once the switch has reloaded make sure the correct firmware version is active. Run `show version` + + ```bash + ICX7150-24P Switch#show version + Copyright (c) 1996-2017 Brocade Communications Systems, Inc. All rights reserved. + UNIT 1: compiled on Aug 14 2017 at 06:54:44 labeled as SPS08061a + (24723488 bytes) from Primary SPS08061a.bin + SW: Version 08.0.61aT211 + Compressed Boot-Monitor Image size = 786944, Version:10.1.10T225 (mnz10110) + Compiled on Sun Jun 25 09:25:15 2017 + + HW: Stackable ICX7150-24-POE + ========================================================================== + UNIT 1: SL 1: ICX7150-24P-4X10GR POE 24-port Management Module + Serial #:FEA3217N0LA + Current License: 4X10GR + P-ASIC 0: type B160, rev 11 Chip BCM56160_B0 + ========================================================================== + UNIT 1: SL 2: ICX7150-2X1GC 2-port 2G Module + ========================================================================== + UNIT 1: SL 3: ICX7150-4X10GF 4-port 40G Module + ========================================================================== + 1000 MHz ARM processor ARMv7 88 MHz bus + 8192 KB boot flash memory + 2048 MB code flash memory + 1024 MB DRAM + STACKID 1 system uptime is 1 minute(s) 19 second(s) + The system started at 02:06:21 GMT+00 Wed Jan 05 2000 + + The system : started=cold start + ``` + \ No newline at end of file diff --git a/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/SFP_RUCKUS_Optics_Ruckus_Brocade_ICX.md b/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/SFP_RUCKUS_Optics_Ruckus_Brocade_ICX.md index 62f2078fe..60cc04b8c 100644 --- a/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/SFP_RUCKUS_Optics_Ruckus_Brocade_ICX.md +++ b/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/SFP_RUCKUS_Optics_Ruckus_Brocade_ICX.md @@ -8,6 +8,7 @@ !!! info "" + ## Brocade Optics [RUCKUS® ETHERNET OPTICS](https://www.commscope.com/globalassets/digizuite/61722-ds-ethernet-optics-family.pdf?utm_source=ruckus&utm_medium=redirect) diff --git a/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/drive.mceclip1.png b/docs/Knowledge_Base/Network/Vendor/Ruckus/Switches/drive.mceclip1.png new file mode 100644 index 0000000000000000000000000000000000000000..c01e8c5f2b7551bd000ba339811a434c4117b5c4 GIT binary patch literal 28000 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