Skip to content

UniFi OS fails to start on Synology when using dedicated PCIe NIC (MAC not in /proc/cmdline) #118

Description

@InvisibleKnight

When running this UniFi OS container on Synology DSM systems that use a dedicated PCIe network interface, UniFi OS fails to start with an “Invalid MAC address” error.

The failure appears to be caused by Synology DSM not including PCIe NIC MAC addresses in /proc/cmdline under macs=, while UniFi OS requires the active interface MAC to be present there.

As a result, UniFi OS never finishes starting and no UniFi services bind to their expected ports.

Environment

  • Host OS: DSM 7.3.2-86009 Update 3 (x86_64)
  • Hardware: DS1621+ with additional PCIe NIC
  • Docker: Synology Docker package
  • Container: unifi-os-server (latest at time of writing)
  • Network: Container uses the PCIe NIC interface

Observed Behavior

  • Container starts
  • nginx starts successfully
  • unifi-core.service never reaches active state
  • No UniFi ports are opened (8443, 8080, 3478, etc.)
  • UniFi UI is inaccessible

Service Status

ash-4.4# docker exec -it unifi-os-server bash
root@NAS:/# systemctl status unifi-core
● unifi-core.service - UniFi Core
     Loaded: loaded (/lib/systemd/system/unifi-core.service; enabled; vendor preset: enabled)
    Drop-In: /lib/systemd/system/unifi-core.service.d
             └─cap.conf, memory.conf
     Active: activating (start) since Tue 2026-05-26 11:29:41 UTC; 3s ago
    Process: 9225 ExecStartPre=/usr/share/unifi-core/app/hooks/pre-start (code=exited, status=0/SUCCESS)
   Main PID: 9252 (MainThread)
     Memory: 115.0M (max: 1.0G swap max: 200.0M)
     CGroup: /docker/b513743ddf14f8a033364f3f871346448928ef43a1c8ea46fc98be6cdd80ef37/system.slice/unifi-core.service
             └─9252 /usr/bin/node24 --expose-gc --max-old-space-size=300 --openssl-legacy-provider --no-network-family-autoselection --dns-result-order=ipv4first /usr/share/unifi-core/app/service.js

May 26 11:29:43 NAS node24[9252]:     at file:///usr/share/unifi-core/app/service.js:4:311
May 26 11:29:43 NAS node24[9252]:     at Array.forEach (<anonymous>)
May 26 11:29:43 NAS node24[9252]:     at N1 (file:///usr/share/unifi-core/app/service.js:4:4)
May 26 11:29:43 NAS node24[9252]:     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
May 26 11:29:43 NAS node24[9252]:     at async file:///usr/share/unifi-core/app/service.js:4:966 Error: Invalid MAC address:
May 26 11:29:43 NAS node24[9252]:     at file:///usr/share/unifi-core/app/service.js:4:311
May 26 11:29:43 NAS node24[9252]:     at Array.forEach (<anonymous>)
May 26 11:29:43 NAS node24[9252]:     at N1 (file:///usr/share/unifi-core/app/service.js:4:4)
May 26 11:29:43 NAS node24[9252]:     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
May 26 11:29:43 NAS node24[9252]:     at async file:///usr/share/unifi-core/app/service.js:4:966

Container logs

Setting UOS_SERVER_VERSION to 5.0.8
Setting FIRMWARE_PLATFORM to linux-x64
Setting HARDWARE_PLATFORM to synology
Synology patches applied!
Setting UOS_SYSTEM_IP to 192.168.x.x

/proc/cmdline

root=/dev/md0 netif_num=4 syno_hw_version=DSXXXX
macs=*55,*56,*57,*58

The macs= list only contains onboard NIC MAC addresses
The PCIe NIC MAC (*45) is missing

Port Check

No UniFi ports are listening:

netstat -tulnp | grep -E '8443|11443|8080|3478|10003'
# (no output)

nginx ports are listening:

tcp 0 0 0.0.0.0:443 LISTEN nginx
tcp 0 0 0.0.0.0:80  LISTEN nginx

Analysis
It appears UniFi OS validates the active network interface MAC against the macs= kernel parameter.
On Synology DSM, PCIe NIC MAC addresses are not added to /proc/cmdline, which causes UniFi OS to reject the interface and abort startup.

Because /proc/cmdline is kernel-provided and read-only, this cannot be modified from inside the container.

Request

Would it be possible to find a way to:

  • override MAC validation, or
  • fallback logic (If MAC invalid: → pick next UP interface), or
  • manually specify an allowed MAC address (-e UOS_SYSTEM_MAC), or
  • skip /proc/cmdline MAC checks on Synology, or
  • bind UniFi OS to a specific interface (-e UOS_BIND_INTERFACE)

I understand this may not be feasible due to UniFi OS internals, but I wanted to document the issue clearly in case a workaround exists or can be added conditionally for Synology hosts.

I'm unfortunately not able to test if it works with onboard NIC but it should.

Tried workaround
I tried spoofing the dedicated NIC MAC address via ip link set dev eth4 address *59 to one present in /proc/cmdline but it did not work

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions