networkd can't bridge a wlan access point

Bug #2107040 reported by Hadmut Danisch
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
systemd (Ubuntu)
Invalid
Undecided
Unassigned

Bug Description

I'm trying to build a router with ubuntu server 24.04, using a device with some ethernets and a wifi, putting some ethernets and the wifi into one bridge.

But I currently don't see how to make networkd do this.

Example config (that doesn't work):

/etc/netplan/60-bridge-lan.yaml

network:
  version: 2
  renderer: networkd

  ethernets:
    enp4s0:
      dhcp4: no
    enp5s0:
      dhcp4: no

  wifis:
    wlp1s0:
      dhcp4: no
      access-points:
        "hurra":
           mode: ap
           password: something

  bridges:
    lan:
      dhcp4: no
      addresses:
        - "192.168.122.1/24"
        - "fdfc:1234:5678:1234::1/24"
      interfaces:
        - enp4s0
        - enp5s0
        - wlp1s0

doesn't work:

ERROR: wlp1s0: hurra: networkd does not support this wifi mode

removing the wifis section, running the wifi with hostapd, and just list it as regular ethernet, as many howtos out there recommend, like

  ethernets:
    enp4s0:
      dhcp4: no
    enp5s0:
      dhcp4: no
    wlp1s0:
      dhcp4: no

doesn't work either. Error message

2025-04-11T14:11:29.023613+00:00 mini20 systemd-networkd[1281]: wlp1s0: Failed to set master interface: Device does not allow enslaving to a bridge. Operation not supported

which is clearly wrong, since a manual

brctl addif lan wlp1s0

works properly

and removing it from netplan, just listing it in the bridge member list results in

# networkctl
IDX LINK TYPE OPERATIONAL SETUP
  1 lo loopback carrier unmanaged
  2 enp3s0 ether routable configured
  3 enp4s0 ether enslaved configured
  4 enp5s0 ether no-carrier configured
  5 enp6s0 ether off unmanaged
  6 wlp1s0 wlan degraded unmanaged
  7 lan bridge routable configured

man pages systemd.netdev and systemd.network don't help either.

So how is this supposed to work? Just errecting a wifi access point and attaching it to a bridge with systemd tools/ubuntu server?

ProblemType: Bug
DistroRelease: Ubuntu 24.04
Package: systemd 255.4-1ubuntu8.6
ProcVersionSignature: Ubuntu 6.8.0-57.59-generic 6.8.12
Uname: Linux 6.8.0-57-generic x86_64
NonfreeKernelModules: zfs
ApportVersion: 2.28.1-0ubuntu3.5
Architecture: amd64
CasperMD5CheckResult: pass
Date: Fri Apr 11 13:33:18 2025
InstallationDate: Installed on 2025-04-08 (3 days ago)
InstallationMedia: Ubuntu-Server 24.04.2 LTS "Noble Numbat" - Release amd64 (20250216.2)
Lsusb:
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 001 Device 002: ID 05e3:0751 Genesys Logic, Inc. microSD Card Reader
 Bus 001 Device 003: ID 0bda:b85b Realtek Semiconductor Corp. Bluetooth Radio
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Lsusb-t:
 /: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/8p, 480M
     |__ Port 006: Dev 002, If 0, Class=Mass Storage, Driver=usb-storage, 480M
     |__ Port 008: Dev 003, If 0, Class=Wireless, Driver=btusb, 12M
     |__ Port 008: Dev 003, If 1, Class=Wireless, Driver=btusb, 12M
 /: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, 10000M
MachineType: Default string Default string
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-6.8.0-57-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro
SourcePackage: systemd
SystemdFailedUnits:
 Error: command ['systemctl', 'status', '--full', '●'] failed with exit code 4: Invalid unit name "●" escaped as "\xe2\x97\x8f" (maybe you should use systemd-escape?).
 Unit \xe2\x97\x8f.service could not be found.
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 04/17/2023
dmi.bios.release: 5.19
dmi.bios.vendor: American Megatrends International, LLC.
dmi.bios.version: JK4LV107
dmi.board.asset.tag: Default string
dmi.board.name: Default string
dmi.board.vendor: Default string
dmi.board.version: Default string
dmi.chassis.asset.tag: Default string
dmi.chassis.type: 3
dmi.chassis.vendor: Default string
dmi.chassis.version: Default string
dmi.modalias: dmi:bvnAmericanMegatrendsInternational,LLC.:bvrJK4LV107:bd04/17/2023:br5.19:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnDefaultstring:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:skuDefaultstring:
dmi.product.family: Default string
dmi.product.name: Default string
dmi.product.sku: Default string
dmi.product.version: Default string
dmi.sys.vendor: Default string

Revision history for this message
Hadmut Danisch (hadmut) wrote :
Revision history for this message
Nick Rosbrook (enr0n) wrote :

I saw your thread on systemd-devel, and I think that's the more appropriate place for a question like this. I think this falls a bit outside the scope of a bug report for Ubuntu's sake.

If you find that in fact something needs backporting to support your use case, please let us know. But as far as "figuring out how to do this", I think support forums/mailing lists are more appropriate.

Changed in systemd (Ubuntu):
status: New → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.