forwarding audio from a (bhyve) vm

Russell L. Carter rcarter at pinyon.org
Thu Jul 23 00:50:40 UTC 2020


Hi Greg,

sndio, if it can be made to work, also appears perfect.  In summary, I
want to run multiple vm's in a Facebook cast-off server that has 32
threads and 128GB of memory... but no audio hardware.  Adding the hda
device to bhyve doesn't seem to work, I am guessing, because there is
no physical audio hw in the bhyve host.

The latest tarball of sndio compiles and installs cleanly on ancienne
Debian 9.  But what about sound devices?

A couple of questions inline, if possible:

On 2020-07-20 19:27, Greg Veldman wrote:
 > On Mon, Jul 20, 2020 at 04:00:22PM -0700, Russell L. Carter wrote:
 >> On 2020-07-20 15:06, Russell L. Carter wrote:
 >>> Seren looks perfect.?? However it uses alsa to access the "sound card",
 >>> which I see from googling should be achievable in a bhyve vm by
 >>> configuring the HDA emulation. Evidently, after consulting
 >>> https://wiki.freebsd.org/SummerOfCode2016/HDAudioEmulationForBhyve
 >>> and
 >>> 
https://forums.freebsd.org/threads/what-is-the-current-status-of-audio-emulation-in-bhyve.74557/
 >>>
 >>>
 >>> I should be able to achieve this using vm-bhyve by setting
 >>>
 >>> bhyve_options="-s 9,hda,play=/dev/dsp1,rec=/dev/dsp1"
 >>>
 >>> in the vm template file.
 >>
 >> Oh well, the vm fails to start with this template configuration.
 >> I am not sure how to fix it.  There is only one vm running, so
 >> I don't think bhyve should be running out of slots/devices.
 >> There is no audio hardware in the bhyve host... is that a
 >> problem?  I don't want to listen on the bhyve host, I want to
 >> ship the audio over the physical network to another FreeBSD
 >> system.
 >>
 >> Both the bhyve host and the target system are running FreeBSD
 >> 12/stable from the beginning of July.
 >
 > I currently do this with some of my systems, I use sndio and
 > have had no issues at all.  My current setup is all FreeBSD
 > hosts, but sndio runs on GNU/Linux and NetBSD, OpenBSD (in
 > fact it's originally from OpenBSD I believe).
 >
 > On the host you wish to send the audio from:
 >
 > $ grep -i audio .bashrc
 > export AUDIODEVICE="snd at 10.0.2.1/0"

You don't need to start sndiod on the audio server
system for the client system to connect?

 >
 > On the host you wish to hear the audio on:
 >
 > $ grep -i sndio /etc/rc.conf
 > sndiod_enable="YES"
 > sndiod_dev="rsnd/$($SYSCTL -n hw.snd.default_unit)"
 > sndiod_flags="-f ${sndiod_dev} -c 0:7 -j off -s default -m mon -s
 > monitor -L 10.0.2.1"

That looks very good.  My target system has a non-default "default".

Thank you,
Russell


 > $ grep -i snd /etc/sysctl.conf
 > # Default sound device (from /dev/sndstat)
 > hw.snd.default_unit=2
 >
 > See the sndio(7) manpage for setting up the cookie on both
 > hosts to handle authentication.
 >



More information about the freebsd-questions mailing list