Cisco CBS350-8FP-E-2G
Cisco · managed switch, 10 ports, 8 with PoE · Cisco CBS350-8FP-E-2G
what it is
A managed switch from the Cisco Business 350 family — the successor to the Small Business 300 series. The login prompt looks the same as on the SG300, but the web interface, command line and factory accounts are different; settings from an SG300 cannot be carried over directly.
According to the datasheet: eight 10/100/1000 ports with PoE+ sharing a 120 W budget and two combo ports at 1 Gb/s — copper or an SFP transceiver, one or the other, not both at once. The enclosure is 268 mm wide, 185 mm deep and 44 mm high, i.e. narrower than a nineteen-inch rack; rack and wall mounting brackets are included. The power supply is external (the "-E" in the name), passive cooling, no fan. Power draw according to the datasheet: approx. 17 W with no PoE loads, approx. 147 W at full PoE load.
On the front: Reset button, System LED, mini-USB and RJ-45 console, a USB-A port (configuration files, firmware images, log). The command line itself reports the port types: show interfaces status shows gi1–gi8 as 1G-Copper, and gi9–gi10 as 1G-Combo-C. PoE budget in show power inline: 120 W.
Unit tested: 800 MHz CPU, 512 MB RAM, 256 MB flash memory (boot output), operating temperature 43–46°C (show system, show power inline).
firmware: two images
The switch keeps two firmware images — active and backup. show version shows both with version and date; on the unit tested the active one was version 3.2.1.1 from February 2023, and the backup version 3.1.1.7 from August 2021. Switching between images is also possible from the boot menu (the "Image menu" item). Newer releases than the one active on the tested unit exist for this family.
console
Mini-USB console: the computer sees a serial port, 115 200 b/s, 8N1, with speed autodetection — the switch asks you to press Enter twice. The RJ-45 console also runs at 115 200 b/s, not 9600 like the SG300: at 9600 you get occasional garbage and the port looks broken. When both cables are plugged in, mini-USB takes precedence.
password recovery without losing the configuration
With an unknown password you do not have to erase the configuration. It requires the console and a power cycle:
- After the
Loading active imagemessages and the image checksum verification, you getAutoboot in 2 seconds - press RETURN or Esc. to abort and enter prom. - A single Esc at that moment opens the
Startup Menu: [1] Image menu, [2] Restore Factory Defaults, [3] Password Recovery Procedure, [4] Back. Esc sent in bursts throughout boot did not open the menu — the same key exits it once inside. - Item [3] responds "Current password will be ignored!". Then Enter (back to the menu) and Esc — the switch boots without asking for a password, with the configuration preserved, and after
enableimmediately gives the#prompt.
Item [2] restores factory defaults and erases the configuration irreversibly. From the command line the same is done by delete startup-config and reload — reload asks two questions (unsaved changes, restart of the whole system). A factory boot takes approx. 2 minutes, because the switch generates SSH keys (RSA, DSA) and a 2048-bit certificate.
first login
The factory account cisco with password cisco works only once: the switch forces a change of username and password. Password rules, as listed by the device itself:
- at least 8 characters, from 3 of 4 classes (lowercase, uppercase, digits, special characters);
- the same character at most 3 times in a row;
- at most 2 consecutive sequence characters ("abc", "123" and reversed) — a randomly generated password can fail this condition, so it is worth checking before sending;
- no username, manufacturer or product name, including spelled backwards;
- not on the list of leaked passwords.
After the change the cisco account disappears. The new account has privilege 15 — straight to #, without a separate enable.
factory defaults worth disabling
Right after a reset the switch:
- connects to Cisco: a few seconds after obtaining an address the PnP agent contacts
devicehelper.cisco.com(%PNPAGENT-I-PNPSRVRDETECT, retry every 24 hours) and replaces the CA certificate bundle. It is disabled withno pnp enable; - takes time from five servers on the internet:
pool.ntp.org,time-pnp.cisco.comand threetimefreq.bldrdoc.govservers. On a network without internet access they must be removed and your own server specified (sntp unicast client enable,sntp server … poll,clock source sntp); - has Bonjour enabled (
no bonjour enable) and the web panel over HTTP and HTTPS (no ip http server,no ip http secure-server); - has SSH disabled.
Changes are saved with copy running-config startup-config.
SSH
ip ssh server alone is not enough. Without ip ssh password-auth the client logs in with the "none" method, and the switch asks for the password only inside the open channel — like the SG300. With this command normal password login works. The server identifies itself as OpenSSH_7.3p1.RL and — unlike the SG300 — accepts a modern client without enabling legacy algorithms.
SNMPv3: the engineID pitfall
snmp-server user goes through without an error, but the user is not created until the switch has a local engineID. From the factory it has none ("Local SNMP engineID is not configured"). Only a repeated attempt says it plainly: "Non default local engine id value is required before configuring the user table". The order that works:
snmp-server engineID local default— two questions; the second warns that the SNMPv3 database will be erased;snmp-server view WIDOK iso included;snmp-server group GRUPA v3 priv read WIDOK;snmp-server user UŻYTKOWNIK GRUPA v3 auth sha HASŁO priv HASŁO.
The encryption algorithm cannot be selected — the command accepts only the password. show snmp users shows SHA1 and AES-128; a query with DES ends in a timeout. Passwords in show snmp users are displayed in encrypted form.
what we read from it
Over SNMPv3 (authPriv, SHA and AES) the standard branches respond:
- state of each port, speed, traffic on 64-bit counters and error counters (IF-MIB, EtherLike-MIB);
- component inventory (ENTITY-MIB) with model, serial number and firmware version;
- PoE: state, powered device detection, class and priority of each port, plus overload and short-circuit counters; for the whole switch the available power, current consumption and alarm threshold;
- LLDP and CDP neighbors;
- bridge and VLANs — the BRIDGE-MIB table and static VLANs with port membership (Q-BRIDGE);
- interface IP addresses (IP-MIB).
The firmware version is not in sysDescr, which says only "CBS350-8FP-E-2G 8-Port Gigabit PoE Managed Switch". The version is given by entPhysicalSoftwareRev from ENTITY-MIB.
what to watch out for
- The console does not lock out login attempts. After a wrong password it replies
authentication failedand waits for Enter — no delay and no lockout. Physical access to the console means an unlimited number of attempts, so the console needs physical protection. - The interface table contains a pseudo-interface with index 20000 without traffic counters. A monitoring template that assumes counters on every interface gets unsupported items on it.
what we cannot read
The SNMP branches we checked do not contain:
- temperature — the switch reports it on the command line (
show system), but the sensor branches (ENTITY-SENSOR-MIB and the Cisco IOS sensor branch) are empty; - CPU and memory load (HOST-RESOURCES-MIB and the Cisco IOS branches are empty);
- power draw on an individual port — the standard PoE branch gives it only for the whole switch.
The Cisco branches known from Catalyst (environment, CPU, flash, image, configuration, VTP, stack) are not exposed by this model. The Small Business family's own branch (9.6.1) is not covered by the inventory — temperature, CPU and per-port power draw may be there; this is unconfirmed.
The back of the enclosure is not drawn — the manufacturer does not show it straight on. From the datasheet we know only that it has the external power supply jack.
full list of parameters read via SNMP
The list shows WHAT the device exposes — including parameters we do not use ourselves. There are no values here at all: it is a catalog of capabilities, not a reading from anyone's network. It is not a closed list either — explanation below the table.
148 parameters
| parameter | type |
|---|---|
BRIDGE-MIB::dot1dBaseBridgeAddress | binary data |
BRIDGE-MIB::dot1dBaseNumPorts | integer |
BRIDGE-MIB::dot1dBasePort | integer |
BRIDGE-MIB::dot1dBasePortCircuit | OID identifier |
BRIDGE-MIB::dot1dBasePortDelayExceededDiscards | counter |
BRIDGE-MIB::dot1dBasePortIfIndex | integer |
BRIDGE-MIB::dot1dBasePortMtuExceededDiscards | counter |
BRIDGE-MIB::dot1dBaseType | integer |
CISCO-CDP-MIB::cdpCacheAddress | binary data |
CISCO-CDP-MIB::cdpCacheAddressType | integer |
CISCO-CDP-MIB::cdpCacheApplianceID | integer |
CISCO-CDP-MIB::cdpCacheCapabilities | binary data |
CISCO-CDP-MIB::cdpCacheDeviceId | text |
CISCO-CDP-MIB::cdpCacheDevicePort | text |
CISCO-CDP-MIB::cdpCacheDuplex | integer |
CISCO-CDP-MIB::cdpCacheLastChange | other |
CISCO-CDP-MIB::cdpCacheMTU | integer |
CISCO-CDP-MIB::cdpCacheNativeVLAN | integer |
CISCO-CDP-MIB::cdpCachePhysLocation | other |
CISCO-CDP-MIB::cdpCachePlatform | text |
CISCO-CDP-MIB::cdpCachePowerConsumption | integer |
CISCO-CDP-MIB::cdpCachePrimaryMgmtAddr | binary data |
CISCO-CDP-MIB::cdpCachePrimaryMgmtAddrType | integer |
CISCO-CDP-MIB::cdpCacheSecondaryMgmtAddr | other |
CISCO-CDP-MIB::cdpCacheSecondaryMgmtAddrType | integer |
CISCO-CDP-MIB::cdpCacheSysName | other |
CISCO-CDP-MIB::cdpCacheSysObjectID | OID identifier |
CISCO-CDP-MIB::cdpCacheVTPMgmtDomain | other |
CISCO-CDP-MIB::cdpCacheVersion | text |
CISCO-CDP-MIB::cdpCacheVlanID | integer |
ENTITY-MIB::entPhysicalAlias | other |
ENTITY-MIB::entPhysicalAssetID | other |
ENTITY-MIB::entPhysicalClass | integer |
ENTITY-MIB::entPhysicalContainedIn | integer |
ENTITY-MIB::entPhysicalDescr | text |
ENTITY-MIB::entPhysicalFirmwareRev | text |
ENTITY-MIB::entPhysicalHardwareRev | text |
ENTITY-MIB::entPhysicalIsFRU | integer |
ENTITY-MIB::entPhysicalMfgName | text |
ENTITY-MIB::entPhysicalModelName | text |
ENTITY-MIB::entPhysicalName | text |
ENTITY-MIB::entPhysicalParentRelPos | integer |
ENTITY-MIB::entPhysicalSerialNum | text |
ENTITY-MIB::entPhysicalSoftwareRev | text |
ENTITY-MIB::entPhysicalVendorType | OID identifier |
IF-MIB::ifAdminStatus | integer |
IF-MIB::ifAlias | other |
IF-MIB::ifConnectorPresent | integer |
IF-MIB::ifCounterDiscontinuityTime | other |
IF-MIB::ifDescr | text |
IF-MIB::ifHCInBroadcastPkts | counter |
IF-MIB::ifHCInMulticastPkts | counter |
IF-MIB::ifHCInOctets | counter |
IF-MIB::ifHCInUcastPkts | counter |
IF-MIB::ifHCOutBroadcastPkts | counter |
IF-MIB::ifHCOutMulticastPkts | counter |
IF-MIB::ifHCOutOctets | counter |
IF-MIB::ifHCOutUcastPkts | counter |
IF-MIB::ifHighSpeed | integer |
IF-MIB::ifInBroadcastPkts | counter |
IF-MIB::ifInDiscards | counter |
IF-MIB::ifInErrors | counter |
IF-MIB::ifInMulticastPkts | counter |
IF-MIB::ifInNUcastPkts | counter |
IF-MIB::ifInOctets | counter |
IF-MIB::ifInUcastPkts | counter |
IF-MIB::ifInUnknownProtos | counter |
IF-MIB::ifIndex | integer |
IF-MIB::ifLastChange | other |
IF-MIB::ifLinkUpDownTrapEnable | integer |
IF-MIB::ifMtu | integer |
IF-MIB::ifName | text |
IF-MIB::ifOperStatus | integer |
IF-MIB::ifOutBroadcastPkts | counter |
IF-MIB::ifOutDiscards | counter |
IF-MIB::ifOutErrors | counter |
IF-MIB::ifOutMulticastPkts | counter |
IF-MIB::ifOutNUcastPkts | counter |
IF-MIB::ifOutOctets | counter |
IF-MIB::ifOutUcastPkts | counter |
IF-MIB::ifPhysAddress | binary data |
IF-MIB::ifPromiscuousMode | integer |
IF-MIB::ifSpecific | OID identifier |
IF-MIB::ifSpeed | integer |
IF-MIB::ifType | integer |
IP-MIB::ipAdEntAddr | IP address |
IP-MIB::ipAdEntBcastAddr | integer |
IP-MIB::ipAdEntIfIndex | integer |
IP-MIB::ipAdEntNetMask | IP address |
IP-MIB::ipAdEntReasmMaxSize | integer |
POWER-ETHERNET-MIB::pethMainPseConsumptionPower | integer |
POWER-ETHERNET-MIB::pethMainPseOperStatus | integer |
POWER-ETHERNET-MIB::pethMainPsePower | integer |
POWER-ETHERNET-MIB::pethMainPseUsageThreshold | integer |
POWER-ETHERNET-MIB::pethPsePortAdminEnable | integer |
POWER-ETHERNET-MIB::pethPsePortDetectionStatus | integer |
POWER-ETHERNET-MIB::pethPsePortInvalidSignatureCounter | counter |
POWER-ETHERNET-MIB::pethPsePortMPSAbsentCounter | counter |
POWER-ETHERNET-MIB::pethPsePortOverLoadCounter | counter |
POWER-ETHERNET-MIB::pethPsePortPowerClassifications | integer |
POWER-ETHERNET-MIB::pethPsePortPowerDeniedCounter | counter |
POWER-ETHERNET-MIB::pethPsePortPowerPairs | integer |
POWER-ETHERNET-MIB::pethPsePortPowerPairsControlAbility | integer |
POWER-ETHERNET-MIB::pethPsePortPowerPriority | integer |
POWER-ETHERNET-MIB::pethPsePortShortCounter | counter |
POWER-ETHERNET-MIB::pethPsePortType | other |
Q-BRIDGE-MIB::dot1qVlanForbiddenEgressPorts | binary data |
Q-BRIDGE-MIB::dot1qVlanStaticEgressPorts | binary data |
Q-BRIDGE-MIB::dot1qVlanStaticName | other |
Q-BRIDGE-MIB::dot1qVlanStaticRowStatus | integer |
Q-BRIDGE-MIB::dot1qVlanStaticUntaggedPorts | binary data |
SNMPv2-MIB::sysContact | other |
SNMPv2-MIB::sysDescr | text |
SNMPv2-MIB::sysLocation | text |
SNMPv2-MIB::sysName | text |
SNMPv2-MIB::sysObjectID | OID identifier |
SNMPv2-MIB::sysServices | integer |
SNMPv2-MIB::sysUpTime | other |
oid:1.0.8802.1.1.2.1.4.1.1.10 | text |
oid:1.0.8802.1.1.2.1.4.1.1.11 | binary data |
oid:1.0.8802.1.1.2.1.4.1.1.12 | binary data |
oid:1.0.8802.1.1.2.1.4.1.1.4 | integer |
oid:1.0.8802.1.1.2.1.4.1.1.5 | binary data |
oid:1.0.8802.1.1.2.1.4.1.1.6 | integer |
oid:1.0.8802.1.1.2.1.4.1.1.7 | text |
oid:1.0.8802.1.1.2.1.4.1.1.8 | text |
oid:1.0.8802.1.1.2.1.4.1.1.9 | text |
oid:1.3.6.1.2.1.1.8 | other |
oid:1.3.6.1.2.1.1.9.1 | OID identifier |
oid:1.3.6.1.2.1.10.7.2.1.1 | integer |
oid:1.3.6.1.2.1.10.7.2.1.10 | counter |
oid:1.3.6.1.2.1.10.7.2.1.11 | counter |
oid:1.3.6.1.2.1.10.7.2.1.13 | counter |
oid:1.3.6.1.2.1.10.7.2.1.16 | counter |
oid:1.3.6.1.2.1.10.7.2.1.18 | counter |
oid:1.3.6.1.2.1.10.7.2.1.19 | integer |
oid:1.3.6.1.2.1.10.7.2.1.20 | integer |
oid:1.3.6.1.2.1.10.7.2.1.21 | integer |
oid:1.3.6.1.2.1.10.7.2.1.3 | counter |
oid:1.3.6.1.2.1.10.7.2.1.4 | counter |
oid:1.3.6.1.2.1.10.7.2.1.5 | counter |
oid:1.3.6.1.2.1.10.7.2.1.6 | counter |
oid:1.3.6.1.2.1.10.7.2.1.7 | counter |
oid:1.3.6.1.2.1.10.7.2.1.8 | counter |
oid:1.3.6.1.2.1.10.7.2.1.9 | counter |
oid:1.3.6.1.2.1.105.1.1.1.15 | integer |
oid:1.3.6.1.2.1.105.1.1.1.16 | integer |
oid:1.3.6.1.2.1.105.1.1.1.17 | counter |
This is not a closed list. It comes from reading a unit we had access to — it shows what we managed to retrieve, not everything the device can return. A different firmware version, hardware variant or reading path can expose fields that are not here. If you are interested in a specific unit and a specific value — please ask; there is a good chance it can be obtained, even if you do not see it below.
List source: reading of 1 working unit (as of 2026-10-18). The list is the sum of what we observed — more units reveal more parameters, so numbers for different models are not directly comparable.