Muvirt network issues

Hello forum,

After it had been sitting on my shelf for a while I decided to press it back in to service. I instaleld muvirt via the baremetal appliance store.

I created a few vms from the appliance store. They are however not starting.

I create the following network config:

On eth8 I have two vlean devices eth8.100 and eth8.101

On these I created bridges: br100 and br101

And attached to these I create interfaces named VLAN100 and VLAN101.

I define a VM, and attach it to VLAN100. When I start I see the. following error in the logs:

Sat Feb 21 12:39:04 2026 daemon.info muvirt-provision[21167]: Starting VM ubuntujammy
Sat Feb 21 12:39:04 2026 daemon.info virt: starting vm instance ubuntujammy section ubuntujammy type aarch64 machine virt,gic-version=3
Sat Feb 21 12:39:04 2026 daemon.info virt: using QEMU qemu-system-aarch64
Sat Feb 21 12:39:04 2026 daemon.info muvirt-provision[21167]: Disk 0: /dev/mapper/vmdata-ubuntujammy,serial=188494F3
Sat Feb 21 12:39:04 2026 daemon.info muvirt-provision[21167]: Network 0: VLAN100
Sat Feb 21 12:39:04 2026 daemon.info muvirt-provision[21167]: MAC: 52:54:00:0c:a5:f4
Sat Feb 21 12:39:04 2026 daemon.err qemu-system-aarch64[21397]: qemu-system-aarch64: -chardev socket,server,nowait,path=/tmp/qemu-qga-ubuntujammy,id=qga0: warning: short-form boolean option ‘server’ deprecated
Sat Feb 21 12:39:04 2026 daemon.err qemu-system-aarch64[21397]: Please use server=on instead
Sat Feb 21 12:39:04 2026 daemon.err qemu-system-aarch64[21397]: qemu-system-aarch64: -chardev socket,server,nowait,path=/tmp/qemu-qga-ubuntujammy,id=qga0: warning: short-form boolean option ‘nowait’ deprecated
Sat Feb 21 12:39:04 2026 daemon.err qemu-system-aarch64[21397]: Please use wait=off instead
Sat Feb 21 12:39:04 2026 daemon.err qemu-system-aarch64[21397]: WARNING: Image format was not specified for ‘/dev/mapper/vmdata-ubuntujammy’ and probing guessed raw.
Sat Feb 21 12:39:04 2026 daemon.err qemu-system-aarch64[21397]: Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
Sat Feb 21 12:39:04 2026 daemon.err qemu-system-aarch64[21397]: Specify the ‘raw’ format explicitly to remove the restrictions.
Sat Feb 21 12:39:04 2026 daemon.info ModemManager[21437]: hotplug: add network interface tap0: event processed
Sat Feb 21 12:39:04 2026 daemon.err qemu-system-aarch64[21397]: failed to get mtu of bridge `br-VLAN100’: No such device
Sat Feb 21 12:39:04 2026 daemon.info : 11[KNL] interface tap0 deleted
Sat Feb 21 12:39:04 2026 daemon.info ModemManager[21461]: hotplug: remove network interface tap0: event processed
Sat Feb 21 12:39:04 2026 daemon.err qemu-system-aarch64[21397]: qemu-system-aarch64: -netdev tap,id=VLAN1000,helper=/usr/lib/qemu-bridge-helper --br=**br-VLAN100,**vhost=on: bridge helper failed
Sat Feb 21 12:39:09 2026 daemon.info muvirt-provision[21167]: vm
Sat Feb 21 12:39:09 2026 user.notice muvirt-provision: [ubuntujammy] First time boot failed to start qemu, check system log for details
Sat Feb 21 12:39:09 2026 daemon.err muvirt-provision[21167]: muvirt-provision: [ubuntujammy] First time boot failed to start qemu, check system log for details
Sat Feb 21 12:39:09 2026 daemon.info muvirt-provision[21167]: vm
Sat Feb 21 12:39:09 2026 user.notice muvirt-provision: [ubuntujammy] First VM boot failed
Sat Feb 21 12:39:09 2026 daemon.err muvirt-provision[21167]: muvirt-provision: [ubuntujammy] First VM boot failed

This looks as if the correct bridge is not found. But how do I configure the VM with the correct bridge?

notice how it is looking for a bridge named br-VLAN100, which does not exist…

So I redid the network so it now interface is called 100 which leads to the vm wanting to connect to br-100, which exists…

Error now is:


Sat Feb 21 13:02:22 2026 daemon.info virt: starting vm instance ubuntujammy section ubuntujammy type aarch64 machine virt,gic-version=3
Sat Feb 21 13:02:22 2026 daemon.info virt: using QEMU qemu-system-aarch64
Sat Feb 21 13:02:22 2026 daemon.err qemu-system-aarch64[25692]: qemu-system-aarch64: -chardev socket,server,nowait,path=/tmp/qemu-qga-ubuntujammy,id=qga0: warning: short-form boolean option 'server' deprecated
Sat Feb 21 13:02:22 2026 daemon.err qemu-system-aarch64[25692]: Please use server=on instead
Sat Feb 21 13:02:22 2026 daemon.err qemu-system-aarch64[25692]: qemu-system-aarch64: -chardev socket,server,nowait,path=/tmp/qemu-qga-ubuntujammy,id=qga0: warning: short-form boolean option 'nowait' deprecated
Sat Feb 21 13:02:22 2026 daemon.err qemu-system-aarch64[25692]: Please use wait=off instead
Sat Feb 21 13:02:22 2026 daemon.err qemu-system-aarch64[25692]: qemu-system-aarch64: -netdev tap,id=1000,helper=/usr/lib/qemu-bridge-helper --br=br-100,vhost=on: Parameter 'id' expects an identifier
Sat Feb 21 13:02:22 2026 daemon.err qemu-system-aarch64[25692]: Identifiers consist of letters, digits, '-', '.', '_', starting with a letter.

muvirt assumes network bridges are named with a br- prefix and that they have a Layer 3 configuration in UCI.

This was a hack to keep existing setups working when OpenWrt introduced the concept of Layer 2 bridge devices (config device) instead of the old combined setup (config interface).

To make this setup work:

  1. The UCI name option on the bridge device (Layer 2) must be in the format of “br-X”
  2. There needs to be a Layer 3 interface (config interface) where the device parameter is br-X
    If you don’t want the host to get an IP address on this interface, set the proto(col) to none (“Unmanaged Interface” in LuCI)

Here is an example from /etc/config/interfaces:

config device
        option type 'bridge'
        option name 'br-network200'
        list ports 'eth1.200'
        option bridge_empty '1'

config interface 'network200'
        option proto 'static'
        option device 'br-network200'
        option ipaddr '192.168.200.1'
        option netmask '255.255.255.0'

Ideally it should look for a Layer 2 (config device) instead of assuming there will be a br- interface available. I’ll take a look at this when I update muvirt to OpenWrt 25.10.

I’ve never comfigured the device by editing confif files. I always went via the gui. I tried editing the config file, but that does not appear to do anything. Is there something obvious I overlooked here?

No problem, here is what it should look like in the web interface (LuCI):
In Network → Interfaces, in the devices tab

You won’t be able to change the name of an existing bridge online (this can only be done via editing the configuration file)

If you create a new bridge device, this is how you should set it up:

  • Device name must start with br-
  • ‘Bring up empty bridge’ is important when VMs are attached, this is so OpenWrt’s network system will always create the bridge, even if the physical network devices attached to it aren’t active

Then go to the normal interfaces screen (Network->Interfaces) and create a new interface that uses the new bridge device.
The “name” here does not matter, as long as the device in the dropdown below starts with br-.

Thanks a lot. That worked…