top of page

How to Set Up a Cisco 9800-CL Wireless Controller on Proxmox Without Losing Your Mind

2 days ago

3 min read

3

239

0

If you’ve ever tried getting a Cisco Catalyst 9800-CL running on Proxmox, you already know what happens: nothing works, every blog you find is half-wrong, Cisco’s documentation contradicts itself, and you start questioning every career decision you’ve made since high school.


So here’s the real guide, the one I wish existed before I wasted an afternoon fighting UEFI, corrupt ISOs, and “why the hell is this bootloader frozen?” moments. This is the setup that actually works.



Step 1: Get the Right Image



There’s only one correct image for virtualizing a 9800:

C9800-CL-universalk9.xx.xx.xx.(iso|ova|qcow2)

If your file looks like this:

MFG_CTVM_8_10_xxx.iso

That’s not a 9800.

That’s the old AireOS vWLC. Wrong generation, wrong product, won’t behave like a 9800 no matter how hard you yell at it.


For Proxmox, the QCOW2 is the easiest, but if you want to install from scratch, the ISO works fine once you stop forcing it to UEFI-boot. For this, I used the ISO because that's what Proxmox likes the most.


Step 2: Create the VM (The Only Working Settings)


Proxmox’s defaults will absolutely tank this install. Here’s the config that doesn’t.


VM Settings That Work


  • BIOS: SeaBIOS

    (Yes, really. The ISO is NOT UEFI-bootable, and Cisco doesn’t warn you.)

  • Machine: q35

  • CPU: host, 4 cores

  • RAM: 16GB (minimum)

  • Hard Disk: 64GB, SCSI, virtio-scsi-pci

  • NICs:

    • net0: vmxnet3

    • net1: vmxnet3


  • CD-ROM: attach the ISO as IDE or SATA

    (Do NOT attach it as SCSI.)


Example Proxmox CLI Setup


qm create 103 \
  --name C9800-CL \
  --memory 16384 \
  --cores 4 \
  --cpu host \
  --machine q35 \
  --bios seabios \
  --scsihw virtio-scsi-pci

Add your 64GB disk:

qm set 103 --scsi0 local-lvm:vm-103-disk-1

Add NICs:

qm set 103 --net0 vmxnet3,bridge=vmbr0
qm set 103 --net1 vmxnet3,bridge=vmbr0

Attach the ISO:

qm set 103 --ide2 local:iso/C9800-CL-universalk9.iso,media=cdrom

Set boot order:

qm set 103 --boot order=ide2

Step 3: Fix the “It Looks Frozen” Problem


The ISO boots, then suddenly stops updating the screen. It looks dead.


It’s not.

The installer switches over to serial console mid-boot.


That’s why your Proxmox display freezes at:

IOSXEBOOT-4-BOOT_CDROM: Using Serial console

You simply aren’t looking at the right console anymore.


Fix:

qm set 103 --serial0 socket

Then in the Proxmox UI:


Console → Serial0


And boom the installer continues.



Step 4: Run the Setup Wizard


Eventually you hit the initial setup prompts.


Use:


  • Management interface: GigabitEthernet1

  • IP address: any unused IP on your LAN

  • Subnet: whatever matches your network

  • Default route:


Destination prefix: 0.0.0.0/0
Next hop: <your-gateway>

Example:

0.0.0.0/0
192.168.1.1

You’ll be asked to create a username and password.

There’s no default. You set it now.


Step 5: Save and Reboot


Once the wizard finishes, the controller boots into IOS-XE normally.

You should be able to hit the GUI at:

https://<your-management-ip>

Use the credentials you created.


If it fails, check your NIC bridging in Proxmox or firewall rules.


ree

Common Failure Points (And Why They Happen)


1. “Access Denied” or “failed to load Boot0002”


Your ISO is UEFI-incompatible and you’re using OVMF.

Switch to SeaBIOS.


2. The installer freezes


It didn’t freeze — it switched to serial.


3. Disk too small


Anything under 32GB fails silently.


4. Wrong NIC type


Use vmxnet3 or you’ll have chaos later.


5. Wrong ISO


If it doesn’t start with C9800-CL, it’s not the right product.


Final Thoughts


Setting up a 9800-CL on Proxmox shouldn’t be this painful, but here we are.

Once it’s up, though, it runs great. Fast, clean, stable, and perfect for lab work.


If you want to take it further, you can:


  • Convert it to QCOW2 later

  • Add more NICs

  • Cluster multiple controllers

  • Connect APs and build a real home lab

  • Automate the whole config with Python/Ansible


But first: just get the damn thing to boot.


If this saved you a headache, good, that was the point.

2 days ago

3 min read

3

239

0

Related Posts

Comments

Share Your ThoughtsBe the first to write a comment.

Follow Me Nerds!

  • TikTok
  • Instagram
  • X
  • Youtube
  • LinkedIn

© 2024 by Kevin | Network Engineer

bottom of page