Jump to content
IGNORED

(HQPlayer) Try to run Network Audio Adapter (4.11) on MacOS Catalina (10.15.6) but failed.


steven.y

Recommended Posts

Dear Miska:
I'm trying to run Network Audio Adapter (4.11) on MacOS Catalina (10.15.6) but failed.  I don't see my DAC (ifi i-nano, connected with USB) on HQPlayer 4.6.  Please find a command line output of the networkaudiod below:

 

$ (cd ~/Downloads/networkaudiod-411/; sudo ./networkaudiod)
Password:
[./networkaudiod] (564): networkaudiod Copyright (C) 2011-2020 Jussi Laako / Signalyst. All rights reserved.
[./networkaudiod] (564): create coreaudio engine
[./networkaudiod] (564): Network interfaces:
[./networkaudiod] (564): 	if[en0] ipv4=192.168.1.117 ipv6=fe80::856:3f40:d693:6003%en0 idx=7
[./networkaudiod] (564): 	if[lo0] ipv4=127.0.0.1 ipv6=::1 idx=1
[./networkaudiod] (564): listen discovery on en0
[./networkaudiod] (564): clSocket::SetOption(): setsockopt(..., 41,12, ...): Can't assign requested address
[./networkaudiod] (564): Socket failure, falling back to IPv4-only!
[./networkaudiod] (564): listen discovery on 0.0.0.0

In Output Device Setting menu of HQPlayer, I see Sonore microRendu but not iFi i-nano device on Macbook Pro in "NetworkAudioAdapter" nor "NetworkAudioAdapter IPv6".

- Steven Y.

Link to comment
11 hours ago, Miska said:

Does the networkaudiod output show display information about discovery messages from HQPlayer? I

Negative, the last output from networkaudiod is

[./networkaudiod] (564): listen discovery on 0.0.0.0.

 

To isolate issue, I boot the macbook pro, an NAA device connect with iFi i-nano, to Ubuntu.  Its networkaudiod (version 4.11) works as it intended to be with Ubuntu.

Ubuntu:~$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp6       0      0 [::]:43210              [::]:*                  LISTEN    
tcp6  211400      0 stevenyUbuntu:43210     fe80::497:7f54:6e:59825 ESTABLISHED
udp6       0      0 [::]:43210              [::]:*                            
udp        0      0 0.0.0.0:43210           0.0.0.0:*                          

On the other hand, in a same machine/configurarion, boot to MacOS and networkaudiod fails to be discovered by HQPlayer.

StevenMac:~$ sudo ~/Downloads/networkaudiod-411/networkaudiod
Password:
[/Users/yamd/Downloads/networkaudiod-411/networkaudiod] (431): networkaudiod Copyright (C) 2011-2020 Jussi Laako / Signalyst. All rights reserved.
[/Users/yamd/Downloads/networkaudiod-411/networkaudiod] (431): create coreaudio engine
[/Users/yamd/Downloads/networkaudiod-411/networkaudiod] (431): Network interfaces:
[/Users/yamd/Downloads/networkaudiod-411/networkaudiod] (431): if[en1] ipv4=192.168.1.108 ipv6=fe80::f9:364f:8979:a0e1%en1 idx=9
[/Users/yamd/Downloads/networkaudiod-411/networkaudiod] (431): if[lo0] ipv4=127.0.0.1 ipv6=::1 idx=1
[/Users/yamd/Downloads/networkaudiod-411/networkaudiod] (431): listen discovery on en1
[/Users/yamd/Downloads/networkaudiod-411/networkaudiod] (431): clSocket::SetOption(): setsockopt(..., 41,12, ...): Can't assign requested address
[/Users/yamd/Downloads/networkaudiod-411/networkaudiod] (431): Socket failure, falling back to IPv4-only!
[/Users/yamd/Downloads/networkaudiod-411/networkaudiod] (431): listen discovery on 0.0.0.0

StevenMac:~$ netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    
tcp4       0      0  *.43210                *.*                    LISTEN    
udp4       0      0  *.43210                *.*

It looks like that MacOS version of the networkaudiod fails to bind ipv6 address and also fails to get the broadcast packet with ipv4.

 

- Steven Y.

Link to comment
12 hours ago, Miska said:

One possible reason is that HQPlayer computer has multiple active network interfaces and the discovery messages end up on wrong link.

You are right.  I write tiny test program that send ipv4 broadcast message on udp:43210 and networkaudiod discover the packet.  So the root cause shoud be in the HQPlayer machine (mac mini).  I will investigate further and report it.

 

- Steven Y.

Link to comment

Broadcast is privileged operation and also bad in general (and that's why IPv6 doesn't even support such). So NAA discovery uses multicast packets destined to local network (non-routable) scope.

 

macOS doesn't like multicast bindings to fe80:: IPv6 automatic local addresses, this is why there is automatic IPv4 fallback. If you switch the IPv6 to use for example static IP's in fc00:: prefix it works.

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
On 9/1/2020 at 4:29 PM, Miska said:

If you switch the IPv6 to use for example static IP's in fc00:: prefix it works.

Miska,
I configured NAA machine's ipv6 network interface to "Unique local address", in my case, fd00:1::38f9:d349:f061 prefixlen 64.  Unfortunately, it dose not work and end up "Can't assign requested address" error and "Socket failure, falling back to IPv4-only!".

[networkaudiod-411/networkaudiod] (6184): networkaudiod Copyright (C) 2011-2020 Jussi Laako / Signalyst. All rights reserved.
[networkaudiod-411/networkaudiod] (6184): create coreaudio engine
[networkaudiod-411/networkaudiod] (6184): Network interfaces:
[networkaudiod-411/networkaudiod] (6184): 	if[en0] ipv4=192.168.1.117 ipv6=fd00:1::38f9:d349:f061 idx=6
[networkaudiod-411/networkaudiod] (6184): 	if[lo0] ipv4=127.0.0.1 ipv6=::1 idx=1
[networkaudiod-411/networkaudiod] (6184): listen discovery on en0
[networkaudiod-411/networkaudiod] (6184): clSocket::SetOption(): setsockopt(..., 41,12, ...): Can't assign requested address
[networkaudiod-411/networkaudiod] (6184): Socket failure, falling back to IPv4-only!
[networkaudiod-411/networkaudiod] (6184): listen discovery on 0.0.0.0

As souce code of networkaudiod is not available, I have no clue to solving the issue by myself but I suspect that mreq.ipv6mr_interface args in setsockopt() call is wrong.

Quote

Receiving IPv6 Multicast Datagrams

Before a host can receive IP multicast datagrams, the host must become a member of one, or more IP multicast groups. A process can ask the host to join a multicast group by using the following socket option:

struct ipv6_mreq mreq;
setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, sizeof(mreq))

where mreq is the structure:

struct ipv6_mreq {
    struct in6_addr    ipv6mr_multiaddr;    /* IPv6 multicast addr */
    unsigned int       ipv6mr_interface;    /* interface index */
}

Each membership is associated with a single interface. You can join the same group on more than one interface. Specify ipv6_interface to be 0 to choose the default multicast interface. Specify an interface index for one of the host's interfaces to choose that multicast-capable interface.

(source: https://docs.oracle.com/cd/E19253-01/817-4415/6mjum5spv/index.html)

In my NAA machine, macbook pro, the default multicast interface is "lo0" (loopback interface).  Setting it to default value (zero) end up "Can't assign requested address" error.  It sould be set to "en0", that is, mreq.ipv6mr_interface = if_nametoindex("en0");

I hope this help solving the issue.

- Steven

 

Link to comment
12 hours ago, steven.y said:

I configured NAA machine's ipv6 network interface to "Unique local address", in my case, fd00:1::38f9:d349:f061 prefixlen 64.  Unfortunately, it dose not work and end up "Can't assign requested address" error and "Socket failure, falling back to IPv4-only!".

 

For me, fc00/64 prefix is working fine. But macOS is a bit painful and mysterious about IPv6.

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...