GS305EP

GS305EP switch

GS305EP

12345PoE (4)no PoE (1)
Port map as the library addresses these ports — schematic, not a faceplate layout.

A 5-port Plus switch with PoE on 4 ports. No SNMP; managed over NSDP and the web UI.

At a glance

Field

Value

Registry key

gs305ep

Product name

GS305EP

Class

plus

Ports

5

PoE (PSE) ports

4

Backends

NSDP, HTTP

SNMP vendor subtree

none (standard MIBs only)

MAC/FDB table

no

Not captured from hardware. This is the one model here with no device capture and no live run: every unit in this fleet (10.1.5.28-.30) was powered off when the attempt was made. What it is grounded in is two independent implementations that drive these switches — py_netgear_plus for the merge-hash login and the PoE/VLAN CGI paths, and netgear-smp-vlan for the 8021qCf.cgi/8021qMembe.cgi/portPVID.cgi field shapes and the 1=untagged/2=tagged/3=excluded wire codes, observed on a GS105PE.

So the page shapes are grounded, but the values are not: the mock seed is hand-invented (seed_gs305ep() says so) and the web-UI fixtures under tests/fixtures/http/gs305ep_*.html each carry an UNVERIFIED-pending-capture: synthetic marker. Treat behaviour recorded here as the documented shape, not as observed values — and see GS105PE, whose read paths turned out NOT to be shareable with this model even though the two do share a login scheme.

Seed: seed_gs305ep().

What works, over which protocol

Operation

What it does

NSDP

HTTP

get_ports

Per-port link/admin status

✓

✓

get_stats

Per-port octet/packet counters

✓

✓

get_vlans

VLAN list with tagged/untagged members

✓

✓

get_pvids

Per-port PVID

✓

✓

get_lldp

LLDP neighbour table

— [gs305ep-1]

— [gs305ep-2]

get_macs

MAC/FDB forwarding table

— [gs305ep-3]

— [gs305ep-4]

get_poe

Per-port PoE status and power draw

— [gs305ep-5]

✓

get_sensors

Fan/PSU/temperature sensors

— [gs305ep-6]

— [gs305ep-7]

get_mgmt_ip

Management IP configuration

✓

— [gs305ep-8]

get_hostname

The switch’s host name

✓

— [gs305ep-9]

get_users

Local login accounts and their access level

— [gs305ep-10]

— [gs305ep-11]

get_services

Which management services (http/https/telnet/ssh) are enabled

— [gs305ep-12]

— [gs305ep-13]

get_syslog

Remote-logging configuration and collectors

— [gs305ep-14]

— [gs305ep-15]

nsdp_device

Full NSDP device record

✓

— [gs305ep-16]

set_port_enabled

Bring a port up or down

— [gs305ep-17]

— [gs305ep-18]

set_poe

Enable or disable PoE on a port

— [gs305ep-19]

✓

cycle_poe

Power-cycle a PoE port

— [gs305ep-19]

✓

clear_poe_fault

Clear a latched PoE fault

— [gs305ep-19]

✓

set_port_description

Set or clear a port’s description

✓

— [gs305ep-20]

set_port_speed

Force a port’s speed/duplex, or restore auto-negotiation

— [gs305ep-21]

— [gs305ep-22]

set_flow_control

Turn IEEE 802.3x flow control on or off for a port

— [gs305ep-23]

— [gs305ep-23]

set_pvid

Set a port’s PVID

✓

✓

set_vlan_membership

Set a port tagged/untagged/excluded on a VLAN

✓

✓

create_vlan

Create a VLAN

✓

✓

delete_vlan

Delete a VLAN

✓

✓

set_mgmt_ip

Set the management IP/mask/gateway

✓

— [gs305ep-24]

set_hostname

Set the switch’s host name

✓

— [gs305ep-25]

set_syslog_enabled

Turn remote logging on or off

— [gs305ep-26]

— [gs305ep-26]

add_syslog_collector

Add a remote syslog collector

— [gs305ep-27]

— [gs305ep-27]

remove_syslog_collector

Remove a remote syslog collector

— [gs305ep-28]

— [gs305ep-29]

upload_certificate

Upload an HTTPS certificate over the web UI

— [gs305ep-30]

— [gs305ep-31]

upload_certificate_scp

Deploy an HTTPS certificate via FASTPATH copy scp://

— [gs305ep-32]

— [gs305ep-32]

[gs305ep-1]

NSDP has no LLDP neighbour tag (measured by an exhaustive NSDP tag sweep of a real GS110EMX (10.1.5.25, firmware 1.0.2.8, 2026-07-30) covering every tag in the 16-bit space; see nsdp_read.py for the full tag inventory)

[gs305ep-2]

model ‘gs305ep’ web UI has no page for get_lldp (LLDP neighbour table)

[gs305ep-3]

NSDP has no MAC/FDB table tag (measured by an exhaustive NSDP tag sweep of a real GS110EMX (10.1.5.25, firmware 1.0.2.8, 2026-07-30) covering every tag in the 16-bit space; see nsdp_read.py for the full tag inventory)

[gs305ep-4]

model ‘gs305ep’ web UI has no page for get_macs (MAC/FDB forwarding table)

[gs305ep-5]

NSDP has no PoE status tag (measured by an exhaustive NSDP tag sweep of a real GS110EMX (10.1.5.25, firmware 1.0.2.8, 2026-07-30) covering every tag in the 16-bit space; see nsdp_read.py for the full tag inventory); use the HTTP backend for PoE

[gs305ep-6]

NSDP has no environmental-sensor tag (measured by an exhaustive NSDP tag sweep of a real GS110EMX (10.1.5.25, firmware 1.0.2.8, 2026-07-30) covering every tag in the 16-bit space; see nsdp_read.py for the full tag inventory)

[gs305ep-7]

model ‘gs305ep’ web UI has no page for get_sensors (Fan/PSU/temperature sensors)

[gs305ep-8]

model ‘gs305ep’ web UI has no page for get_mgmt_ip (Management IP configuration)

[gs305ep-9]

model ‘gs305ep’ web UI has no page for get_hostname (The switch’s host name)

[gs305ep-10]

get_users is served only over CONSOLE, HTTP, SSH, TELNET

[gs305ep-11]

model ‘gs305ep’ web UI has no page for get_users (Local login accounts and their access level)

[gs305ep-12]

get_services is served only over CONSOLE, HTTP, SSH, TELNET

[gs305ep-13]

model ‘gs305ep’ web UI has no page for get_services (Which management services (http/https/telnet/ssh) are enabled)

[gs305ep-14]

get_syslog is served only over CONSOLE, HTTP, SNMP, SSH, TELNET

[gs305ep-15]

model ‘gs305ep’ web UI has no page for get_syslog (Remote-logging configuration and collectors)

[gs305ep-16]

nsdp_device is served only over NSDP

[gs305ep-17]

per-port admin-enable over NSDP is UNPROVEN on these Plus models: the measured tag inventory (GS110EMX fw 1.0.2.8) has two candidate per-port config tags (0x0800, 0x9400) whose semantics were never settled – no write has been attempted against either, and a wrong guess can drop the port’s link. Use the HTTP backend, whose port-settings page IS grounded

[gs305ep-18]

model ‘gs305ep’ web UI has no page for set_port_enabled (Bring a port up or down)

[gs305ep-19] (1,2,3)

NSDP has no PoE control tag (measured by an exhaustive tag sweep of a real GS110EMX, 10.1.5.25 fw 1.0.2.8, 2026-07-30 – see nsdp_read._SWEEP); use the HTTP backend for PoE

[gs305ep-20]

model ‘gs305ep’ web UI has no page for set_port_description (Set or clear a port’s description)

[gs305ep-21]

set_port_speed is served only over CONSOLE, HTTP, SSH, TELNET

[gs305ep-22]

model ‘gs305ep’ web UI has no page for set_port_speed (Force a port’s speed/duplex, or restore auto-negotiation)

[gs305ep-23] (1,2)

set_flow_control is served only over CONSOLE, SSH, TELNET

[gs305ep-24]

model ‘gs305ep’ web UI has no page for set_mgmt_ip (Set the management IP/mask/gateway)

[gs305ep-25]

model ‘gs305ep’ web UI has no page for set_hostname (Set the switch’s host name)

[gs305ep-26] (1,2)

set_syslog_enabled is served only over CONSOLE, SNMP, SSH, TELNET

[gs305ep-27] (1,2)

add_syslog_collector is served only over CONSOLE, SSH, TELNET

[gs305ep-28]

remove_syslog_collector is served only over CONSOLE, HTTP, SNMP, SSH, TELNET

[gs305ep-29]

model ‘gs305ep’ web UI has no page for remove_syslog_collector (Remove a remote syslog collector)

[gs305ep-30]

upload_certificate is served only over HTTP

[gs305ep-31]

model ‘gs305ep’ web UI has no page for upload_certificate (Upload an HTTPS certificate over the web UI)

[gs305ep-32] (1,2)

upload_certificate_scp is served only over CONSOLE, SSH, TELNET

Measured behaviour

PoE is reachable over the web UI only. The hardware is there, and both PoE status and configuration are available — but NSDP has no PoE tag at all, which makes this model the clearest argument for naming a backend:

switch.get_poe()                      # UnsupportedCapabilityError
switch.get_poe(backend=Backend.HTTP)  # works
await switch.get_poe()                      # UnsupportedCapabilityError
await switch.get_poe(backend=Backend.HTTP)  # works

The default backend for a Plus switch is NSDP, so the first call resolves there and refuses rather than quietly answering over HTTP. The error names the alternative — see Concepts.

Its web UI uses the ``MERGE_HASH_CGI`` scheme, the same one as the GS105PE: the login page carries a nonce, the password is hashed together with it, and the result is posted to a .cgi endpoint.

The management IP is readable over NSDP but not over its web UI, which ships no page carrying it — one of the backend-parity gaps listed in Support matrix.

Protocols