You are not logged in.
I have a KORG Wavestate MkII synthesizer. It has a USB port which provides a MIDI IN/OUT pair and a USB Ethernet connection.
lsusb
...
Bus 005 Device 003: ID 0944:0f0f KORG, Inc. wavestate mkII
...Running lsusb in verbose mode I can see the CDC NCM interface of the device. The appropriate kernel modules are also loaded correctly.
lsmod | grep cdc
cdc_mbim 20480 0
cdc_wdm 36864 1 cdc_mbim
cdc_ncm 53248 1 cdc_mbim
cdc_ether 24576 1 cdc_ncm
usbnet 65536 3 cdc_mbim,cdc_ncm,cdc_etherIt shows up as a network device no problem.
ip link
...
7: wavestate: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether [***MAC ADDRESS HERE***] brd ff:ff:ff:ff:ff:ff
...(I have created a link file for systemd to rename the device to wavestate)
Internally the Wavestate is a Raspberry Pi Compute Module and it runs a DHCP server that is meant to be discoverable via mDNS and is supposed to provide an IP address for it. However, I have tried over and over again (been at this for two days now) and I cannot get NetworkManager to get an IP address from this thing. I know it works because I can connect just fine via a VM/Windows 10. I assume I am meant to be getting NetworkManager to "connect" to it as that 's the only way I am aware of that a network device on my machine would get an IP address. All I get from NetworkManager is a whole bunch of "IP configuration was unavailable" messages and journalctl shows logs are being littered with:
May 31 07:09:01 [hostname] NetworkManager[67133]: <warn> [1780175341.1120] device (wavestate): set-link: failure to set link negotiation
May 31 07:09:01 [hostname] NetworkManager[67133]: <info> [1780175341.1120] device (wavestate): state change: prepare -> config (reason 'none', managed-type: 'full')
May 31 07:09:01 [hostname] NetworkManager[67133]: <info> [1780175341.1224] device (wavestate): state change: config -> ip-config (reason 'none', managed-type: 'full')
May 31 07:09:01 [hostname] NetworkManager[67133]: <info> [1780175341.1226] dhcp4 (wavestate): activation: beginning transaction (timeout in 45 seconds)I am running KDE Plasma and using the firewall section in the Settings app I have added mdns (UDP 5353) and also a custom service covering TCP ports 50000 and 50001 as the manual mentions these are required. I also tried disabling the firewall completely but that made no difference.
I installed Avahi and via it can see that no services are being detected from the synth at all. Running avahi-browse I can see my printer, iPad, router, and kdeconnect. No sign of the synth, no mention of it all.
I simply don't know enough about networking to have any idea why this is happening or even how to troubleshoot the problem. I have done my best and searched and searched, tried many things related to mdns configuration to no avail hence reaching out here. As far as I can tell mDNS is simply meant to work and not be complicated at all. Yet here I am pulling my hair out. Is anyone able to shed some light here?
Last edited by AYANE-69 (2026-05-31 23:30:48)
Offline
it runs a DHCP server that is meant to be discoverable via mDNS
I know it works because I can connect just fine via a VM/Windows 10.
?
mDNS requires an underlying lease and unless you're forwarding the device, hiding it from the host, VMs will use a virtual network devices that depends on the host network to work.
sudo nmap --script broadcast-dhcp-discover
ip a # the full output, you only need to obfuscate WAN IPv6 addresses (after the second block)Also for a sanity check please post the output of
find /etc/systemd -type l -exec test -f {} \; -print | awk -F'/' '{ printf ("%-40s | %s\n", $(NF-0), $(NF-1)) }' | sort -fI am running KDE Plasma and using the firewall section in the Settings app I have added
DHCP hinges on UDP 67 & 68
Offline
Thank you for the reply. To quote myself:
I simply don't know enough about networking to have any idea why this is happening or even how to troubleshoot the problem.Not really a surprise that I am clearly misunderstanding some fundamentals of this subject. Anyway, here's the information you requested:
sudo nmap --script broadcast-dhcp-discover
Starting Nmap 7.99 ( https://nmap.org ) at 2026-05-31 20:11 +1000
Pre-scan script results:
| broadcast-dhcp-discover:
| Response 1 of 1:
| Interface: enp39s0
| IP Offered: 192.168.0.185
| DHCP Message Type: DHCPOFFER
| Server Identifier: 192.168.0.1
| IP Address Lease Time: 1d00h00m00s
| Renewal Time Value: 12h00m00s
| Rebinding Time Value: 21h00m00s
| Subnet Mask: 255.255.255.0
| Broadcast Address: 192.168.0.255
| Domain Name Server: 192.168.0.1
|_ Router: 192.168.0.1
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 10.09 secondsip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp39s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 2c:f0:5d:25:b4:82 brd ff:ff:ff:ff:ff:ff
altname enx2cf05d25b482
inet [** IPv4 ADDRESS **] brd [** IPv4 ADDRESS **] scope global dynamic noprefixroute enp39s0
valid_lft 86246sec preferred_lft 86246sec
inet6 [** IPV6 ADDRESS **] scope global dynamic mngtmpaddr noprefixroute
valid_lft 598sec preferred_lft 598sec
inet6 [** IPV6 ADDRESS **] scope global temporary dynamic
valid_lft 598sec preferred_lft 598sec
inet6 [** IPV6 ADDRESS **] scope link noprefixroute
valid_lft forever preferred_lft forever
3: wavestate: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0b:87:8b:5f:01 brd ff:ff:ff:ff:ff:ff
4: wlo1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 22:bb:ec:df:91:22 brd ff:ff:ff:ff:ff:ff permaddr ac:67:5d:44:20:5f
altname wlp40s0
altname wlxac675d44205f
5: wgpia0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1227 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet [** IPv4 ADDRESS **] scope global wgpia0
valid_lft forever preferred_lft foreverfind /etc/systemd -type l -exec test -f {} \; -print | awk -F'/' '{ printf ("%-40s | %s\n", $(NF-0), $(NF-1)) }' | sort -f
autovt@.service | system
avahi-daemon.service | multi-user.target.wants
avahi-daemon.socket | sockets.target.wants
bluetooth.service | bluetooth.target.wants
btrbk-15m@user.timer | timers.target.wants
cachyos-rate-mirrors.timer | timers.target.wants
cronie.service | multi-user.target.wants
cups.path | multi-user.target.wants
cups.service | multi-user.target.wants
cups.service | printer.target.wants
cups.socket | sockets.target.wants
dbus-org.bluez.service | system
dbus-org.fedoraproject.FirewallD1.service | system
dbus-org.freedesktop.Avahi.service | system
dbus-org.freedesktop.nm-dispatcher.service | system
dbus-org.freedesktop.resolve1.service | system
dbus-org.freedesktop.timesync1.service | system
display-manager.service | system
docker.socket | sockets.target.wants
firewalld.service | multi-user.target.wants
fstrim.timer | timers.target.wants
getty@tty1.service | getty.target.wants
gpm.service | multi-user.target.wants
libvirtd-admin.socket | sockets.target.wants
libvirtd-ro.socket | sockets.target.wants
libvirtd.socket | sockets.target.wants
lm_sensors.service | multi-user.target.wants
logid.service | graphical.target.wants
logrotate.timer | timers.target.wants
NetworkManager.service | multi-user.target.wants
NetworkManager-wait-online.service | network-online.target.wants
p11-kit-server.socket | sockets.target.wants
piavpn.service | multi-user.target.wants
pipewire-pulse.socket | sockets.target.wants
pipewire-session-manager.service | user
pipewire.socket | sockets.target.wants
remote-fs.target | multi-user.target.wants
systemd-resolved.service | sysinit.target.wants
systemd-timesyncd.service | sysinit.target.wants
systemd-tmpfiles-clean.timer | timers.target.wants
systemd-tmpfiles-setup.service | basic.target.wants
teamspeak3-server.service | multi-user.target.wants
virtlogd-admin.socket | sockets.target.wants
virtlogd.socket | sockets.target.wants
wireplumber.service | pipewire.service.wants
xdg-user-dirs.service | graphical-session-pre.target.wantsIt might be helpful if I state that I was using this reddit post as a guide to try and get this setup on my system. It is a person outlining what they did to get the synth's utility software working under linux. As I stated in my response to the post I managed to get the software itself working fine, the issue I have is the USB ethernet connection to the device in the first place which he glosses over as though it is just meant to work. They do mention something about having to create manual routes for something but this all seems to be post getting an IP address in the first place. Also once you start talking manual routes and firewalls my knowledge holes in this area become very apparent.
Re-reading the post I mentioned above I can see that I erroneously thought they meant that the DHCP server on the synth was discoverable by mDNS. So that means, if I am not mistaken again, that the DHCP server it provides should simply be visible on the "wavestate" interface and should provide the IP address it needs you to use when queried? However, it currently appears to not be visible according to nmap, if I understand the output correctly. So how do I get it to be visible?
I have additionally tried installing dhcpcd and telling NetworkManager to use that instead, no change. I also tried setting up a dhcpcd@wavestate.service and that achieved nothing either. So I removed dhcpcd and set NetworkManager back to using its internal DHCP client.
When I said that in a VM with Windows it works this is what I mean. You can see that Windows has picked up the device and successfully retrieved an IP address:
Offline
There's a dhcp server and you're getting a lease on it via enp39s0 (there's btw. absolutely no reason to obfuscate IPv4 addresses)
The windows dialog says "no network access" for the device, the "Ethernet 2" output of ipconfig only has https://en.wikipedia.org/wiki/Link-local_address (no need to obfuscate those either)
Bottom line is that it doesn't work on windows either (but gets assigned LLAs)
sudo nmap -e wavestate --script broadcast-dhcp-discoverStop firewalld, docker, piavpn, libvirt, systemd-resolved and ever NM service.
Then try to get a lease using either dhcpcd or dhclient w/ debug enabled, eg. "dhcpcd -dB wavestate"
cachyos-rate-mirrors.timer | timers.target.wants
Offline
I stopped all the service mentioned and also cleared the nftables ruleset (my backend for firewalld) to be sure there is no firewall then ran the command:
sudo dhcpcd -dB wavestate
dhcpcd-10.3.2 starting
spawned privileged proxy on PID 23894
spawned network proxy on PID 23895
spawned controller proxy on PID 23896
DUID 00:01:00:01:31:ae:d8:e5:2c:f0:5d:25:b4:82
wavestate: executing: /usr/lib/dhcpcd/dhcpcd-run-hooks PREINIT
wavestate: executing: /usr/lib/dhcpcd/dhcpcd-run-hooks CARRIER
wavestate: IAID 87:8b:5f:01
wavestate: adding address fe80::5df1:86ce:abf0:faf5
wavestate: pltime infinity, vltime infinity
ipv6_addaddr1: Permission denied
wavestate: delaying IPv6 Router Solicitation for LL address
wavestate: delaying IPv4 for 0.1 seconds
wavestate: reading lease: /var/lib/dhcpcd/wavestate.lease
wavestate: soliciting a DHCP lease
wavestate: sending DISCOVER (xid 0xe3c689e0), next in 4.4 seconds
wavestate: spawned BPF BOOTP on PID 23904
wavestate: sending DISCOVER (xid 0xe3c689e0), next in 7.6 seconds
wavestate: process BPF BOOTP already started on pid 23904
wavestate: sending DISCOVER (xid 0xe3c689e0), next in 15.9 seconds
wavestate: process BPF BOOTP already started on pid 23904
wavestate: sending DISCOVER (xid 0xe3c689e0), next in 31.6 seconds
wavestate: process BPF BOOTP already started on pid 23904
wavestate: sending DISCOVER (xid 0xe3c689e0), next in 63.8 seconds
wavestate: process BPF BOOTP already started on pid 23904
^Creceived SIGINT, stopping
wavestate: removing interface
wavestate: executing: /usr/lib/dhcpcd/dhcpcd-run-hooks STOPPED
wavestate: BPF BOOTP exited from PID 23904
wavestate: network proxy exited from PID 23895
wavestate: control proxy exited from PID 23896
dhcpcd exited
wavestate: privileged proxy will exit from PID 23894I stopped it with Ctrl-C as it was clearly just trying fruitlessly over and over again.
BTW When I said it works in Windows under a VM I mean that literally. I can pass through the USB device to the VM, open the KORG Editor software and successfully connect to the synth and control it. Under linux I can get the software to run but it never finds the device. The reddit post I shared is from someone who has gotten it to work under linux so it must be possible. However, all I have to go on is their post as KORG doesn't provide any technical detail about how this whole connection works short of saying in its manual:
"Make sure that the required network ports are not blocked by a software firewall
When communicating with the wavestate over USB, the Editor/Librarian uses TCP ports 50000 and 50001, and Bonjour uses UDP port 5353. These won’t be affected by an external firewall in a separate server or router, but can be blocked by a software firewall running on the same computer."
In the windows screenshot I provided it says the IPv6 has "no network access" but IPv4 just says "no internet access", which makes sense, but it has successfully gained an IPv4 address, not something I have achieved in linux.
Offline
but it has successfully gained an IPv4 address
As mentioned, 169.254.100.14 is a link local address - that was not obtained via dhcpcd. If you add ipv4.link-local=3 to the NM profile you should™ get that, too.
The script in the reddit threads does nothing like that, it routes mdns broadcasts over a specific NIC and then runs some windows binary.
nb. that you'd have to adjust NCM_IFACE="enxXXXXXXXXXXXX" to NCM_IFACE="wavestate"
The wavestate runs a DHCP server on its USB side. Linux gets an address typically in 192.168.100.0/24. Verify an address was assigned:
Does anything respond to nmap when running a broadcast-dhcp-discover explicitly on that NIC (command in #4)?
There's a chance that this is nonsense and the actual IP is the LLA and (notably if things work on wine w/ it) that's also completely sufficient for the mdns setup (which will establish the actual service)
Edit: https://man.archlinux.org/man/dhcpcd.8. … figuration
How long did you wait before you killed dhcpcd (10s, 1 minute, 5 minutes, 1h)?
Last edited by seth (2026-05-31 19:56:38)
Offline
To answer your question I let the dhcpcd command run for about a minute.
The windows binary being run is the program that interfaces with the synth for remote control editing, patch management etc. That part I can get running fine. It's just the getting it to connect to the synth part that is a problem.
So I have made some kind of progress. I saw someone mention somewhere that they were trying to get a Raspberry Pi connected to something related to avahi and that they mentioned the Pi only seemed to be broadcasting mDNS via IPv6. So I enabled IPv6 on the connection which got me an IPv6 LLA and then ran avahi-browse:
avahi-browse -a
+ wavestate IPv6 _070f169b_4b22_4e18_aa14_1e5967c78b63_ _kdeconnect._udp local
+ wavestate IPv6 wavestate mkII 1 _korg-synth._tcp local
- wavestate IPv6 wavestate mkII 1 _korg-synth._tcp local
- wavestate IPv6 _070f169b_4b22_4e18_aa14_1e5967c78b63_ _kdeconnect._udp localWell that's something and the closest I've seen to progress yet. Still can't connect to it though ![]()
I also ran the resolve option and saw this:
+ wavestate IPv6 wavestate mkII 1 _korg-synth._tcp local
= wavestate IPv6 wavestate mkII 1 _korg-synth._tcp local
hostname = [wavestatemkII1.local]
address = [fe80::147a:7ff:fe0b:20c2]
port = [50000]
txt = []So there I see port 50000 which matches at least one of the ports mentioned in the manual and _korg-synth._tcp was mentioned in that reddit post in relation to mDNS. This at least feels like progress.
Does anything respond to nmap when running a broadcast-dhcp-discover explicitly on that NIC (command in #4)?
I believe I tried that but will try again regardless.
sudo nmap -e wavestate --script broadcast-dhcp-discover
Starting Nmap 7.99 ( https://nmap.org ) at 2026-06-01 09:03 +1000
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 10.06 secondsI have decided to post all of the original massage I was going to send above for the sake of record for anyone else that comes across this. However, the problem is solved.
![]()
I set NetworkManger to link-local mode for the connection and saw "inet 169.254.163.213/16" assigned as IPv4 LLA when running ip addr. Then ran the program via wine and voila! Done. It works!!!
Thank you seth for your patience and help.
So the final configuration for the NetworkManager connection was to restrict the connection to just the wavestate device, set IPv4 to link-local and IPv6 to automatic. My final /etc/NetworkManager/system-connections/Wavestate.nmconnection file ended up with the following contents:
[connection]
id=Wavestate
uuid=***ALARGEUUIDGENERATEDBYTHEPLASMACONFIGAPPLET***
type=ethernet
metered=2
[ethernet]
auto-negotiate=true
mac-address=***YOUR::WAVESTATE'S::MAC::ADDRESS::HERE***
[ipv4]
method=link-local
[ipv6]
addr-gen-mode=stable-privacy
method=auto
[proxy]Offline