Cisco CL9800 Wireless Controller support


Ok so far i’ve found that LibreNMS support Cisco WLC’s, but the newly introduced Catalyst 9800 Wireless Controllers not. The older Wireless Controllers (such like the 5500 series) were running the AireOS (from the Airespace acquisition almost 15 (!!) years ago.
(source: Introducing the Cisco Catalyst 9800 Wireless Controllers - Wifi Reference)

So the Catalyst 9800 Wireless Controllers are based on IOS-XE. The new Catalysty 9800 code has no relation anymore with Airespace; although i’ve found out it not entirely supports it, some parts of the AIRESPACE-WIRELESS-MIB still work on the CL9800.

So in a former topic i suggested to start working on a new device model; I started with reading Intro - LibreNMS Docs

I pieced this YAML file after reading it LibreNMS Support New OS doc and some comparing with the ciscowlc.yaml file:

os: IOSXE 
text: 'Cisco WLC 9800'
type: wireless
icon: cisco
    - { graph: device_bits, text: 'Device Traffic' }
    - { graph: device_processor, text: 'CPU Usage' }
    - { graph: device_mempool, text: 'Memory Usage' }
    - { graph: device_wireless_ap-count, text: 'Connected APs' }
    - { graph: device_wireless_clients, text: 'Number of Clients' }
mib_dir: cisco
    - sysObjectID:
        - .
	- sysDescr:
            - 'C9800-CL'

for OS: i picked the OS running on it; is this correct what i’ve done ?
for text: similar like above
for type and icon: looks obvious to me
for over: i’ve copied the parts here from the ciscowlc.yaml file; i’m not sure if this is ok and what i should do next with it
for mib_dir: clear to me
for discovery: i doublec checked with a mibbrowser tool if the sysObjectID is correct; and it is
also i noticed the ciscowlc.yaml file utilizes only the sysDescr; so I thought; lets put in 'C9800-CL' according to the LibreNMS docs (Use this in addition to sysObjectID if required. Check that the sysDescr contains one of the strings under this item)

So then i looked at the ciscowlc.php under /opt/librenms/LibreNMS/OS
For the convience; i copied the lines 42 to 64:

public function discoverWirelessClients()
$ssids = $this->getCacheByIndex(‘bsnDot11EssSsid’, ‘AIRESPACE-WIRELESS-MIB’);
$counts = $this->getCacheByIndex(‘bsnDot11EssNumberOfMobileStations’, ‘AIRESPACE-WIRELESS-MIB’);

$sensors = [];
$total_oids = [];
$total = 0;
foreach ($counts as $index => $count) {
    $oid = '.' . $index;
    $total_oids[] = $oid;
    $total += $count;

    $sensors[] = new WirelessSensor(
        'SSID: ' . $ssids[$index],

When i look at line 42 and check the bsnDot11EssSsid in the AIRESPACE-WIRELESS-MIB; it shows 0 when i do a SNMP Get on it; it seems that the new C9800 does not populate this.
Also the SSID’s names are not populated when polled with AIRESPACE-WIRELESS-MIB.


But when i look at the bsnMobileStationTable; i see that it is populated with a client that is really connected. (due to the Christmas Holiday; nobody is in the office; somebody left his device in the building connected to WiFI :slight_smile:)

Also other parts of the AIRESPACE-WIRELESS-MIB are still working, for example the AP table

So i then looked that the ZiP file i pulled from cisco support download and looked at various MIB files, and found out that the CISCO-LWAPP-WLAN-MIB has a SNMP OID that shows the SSID names with a index:

So piecing al this together; what should i do to get the client count and SSID discovery working again for the new C9800 wireless controllers?

Thank you again for reading and replying.

Kinds regards

Well you are on the right track, you just need to do a little more digging to figure out why you can’t get SSID and SSID client count from SNMP. I would think maybe Cisco has another MIB for this since they moved to a new platform? You can also just start walking the entire MIB tree. You might see a OID pop up without a name and the name of the SSID as the value, that would tell you you have a missing mib somewhere.

Other then that, over in yaml is just what graphs show up when you over over the device.

Thank you for reaching out!

I’ve found that the CISCO-LWAPP-WLAN-MIB can show me the SSID names; the CISCO-LWAPP-WLAN-MIB is not ‘out of the box’ delived with LibreNMS. So i should place it in the cisco mib dir.

For the client count; the bsnMobileStationTable of the AIRESPACE-WIRELESS-MIB shows the clients that are connected; it is possible to do some array lookup (for the SSID name) and count those rows ? Or would that be to much complicated ?

Kind regards

There seems to be a few bugs in the 9800 WLC where it doesn’t answer SNMP queries as it should.
Haven’t been able to test the 17.5.x releases though or if they work with the existing code.

I’m running 17.3.3 and has the same issues as you describe above.

Problems with SNMP:

Only ID due too limit…

I own a 9800wlc also and work for a cisco Partner , interesting in helping, I have access and I am willing to help, if there is anything I can do, that beeing said I know programing, however I am more of a troubleshooting guy then a coder :stuck_out_tongue:

1 Like

Any update on this? I Added 2 9800 WLCs to LibreNMS and it seems that it was recognized wrongly as a network device, not as wireless device and only thing related to wireless it can get from the device (after manually changing the type to wireless) is the SSID client cound but even that doesn’t work correctly because the SSIDs do not have names.

Hey all,

I’ve just upgraded from the 5500 to the 9600-CL and as you guys have said limited information being reported in LibreNMS. Anyone had luck or any further attempts to get this further supported? For me AP count is the most important so i can get reports and alarms around this.

according to Monitor Catalyst 9800 WLC via SNMP with OIDs - Cisco
there is no OID for connected APs.

Looks like support for everything missing came in IOS-XE 17.5.x. Anyone would like to take a stab on this? I’ve got WLCs ready.

We observed the same problem and could help with testing.
Just discovered so it should be fixed in the next release.