Skip to content

Audio / Microphone

Official PiKVM V4 Mini/Plus and PiKVM V3 devices have an exclusive audio transmission feature, including two-way communication with microphone directly in the browser.

The incoming stream is captured from the target host via HDMI, the outgoing stream is transmitted to an emulated USB microphone. This brings the user experience of working with voice applications on the remote host even closer to the local one.

Note

  • Audio does not work with DIY devices, either CSI or USB video dongles.

  • VNC does not support audio, it only works in the Web UI in WebRTC mode.


Speakers (incoming audio)

  • On PiKVM V4 Mini and Plus, this feature is enabled by default, unless you didn't disable it with custom EDID.

  • On PiKVM V3, this is disabled for historical reasons so as not to break old user's configurations that was created before audio support was introduced.

    Enabling audio on PiKVM V3
    1. Make sure that you have not removed the audio jumpers (4) on the V3 HAT board and have not deleted or commented the dtoverlay=tc358743-audio line in /boot/config.txt. Return everything as it was, if you changed it.

    2. Update OS and reboot:

      Updating PiKVM OS

      Tip

      We recommend updating PiKVM OS only if you have physical access to the device, or in the most extreme cases. The update process is very reliable, but there is always a small chance that something may go wrong so reflashing will be required. PiKVM cannot be bricked, but you need physical access to the memory card for this operation.

      To update, run following commands under the root user:

      [root@pikvm ~]# pikvm-update
      

      If you encounter an error like:

      [root@pikvm ~]# pikvm-update
      bash: pikvm-update: command not found
      

      It's most likely you have an old OS release. You can update the OS as follows:

      [root@pikvm ~]# rw
      [root@pikvm ~]# pacman -Syy
      [root@pikvm ~]# pacman -S pikvm-os-updater
      [root@pikvm ~]# pikvm-update
      

      Next time you will be able to use the usual method with pikvm-update.

    3. Enable the Basic Audio support in the EDID in the /etc/kvmd/tc358743-edid.hex and reboot the device again:

      [root@pikvm ~]# rw
      [root@pikvm ~]# kvmd-edidconf --set-audio=yes
      [root@pikvm ~]# reboot
      

The target host determines whether it is possible to output audio via HDMI. Each OS does this in its own way. In general, make sure that the audio output is HDMI in the mixer. PiKVM supports stereo mode with any standard bits and frequencies like 32/44.1/48 kHz with 16/24 bit.

  • Mac OS usually understands the priority of HDMI for audio output on its own, but you can specify this explicitly in the settings.

  • Windows requires explicit specifying of the audio output device.

  • In Linux, everything depends on the distribution you use. In ancient times, the audio required performing a ritual dance under the full Moon. For now, a working Pipewire or Pulseaudio most likely be enough. Just specify HDMI as the audio sink in the mixer.

To receive audio in the PiKVM Web UI, go to the System menu and switch the video mode to WebRTC. If everything is in order, the multimedia section will appear. Set the Multimedia switch on, and and just the volume for non-zero value. The video stream will restart and you should start hearing sounds from the target host.

If the volume slider is set to zero, PiKVM does not accept the audio stream to save traffic, while the target host will still assume that the audio output to HDMI is available.


Microphone (outgoing audio)

PiKVM V3 and V4 is able to emulate a USB microphone on the target host to transmit your speech from the browser to the host.

If you also want enable a webcam for video calls and other applications, after this instruction, please follow here.

USB limitations

Each emulated USB device consumes a limited hardware resource called endpoints. On the default PiKVM, you can add only one or two of additional USB devices depending of its endpoint requirements.

See here to get more information about the endpoints, add devices and flexibly manage the configuration on the fly.

Also note that all USB devices uses the same USB identifiers as the keyboard, mouse and other stuff. You can change everything together, but not separately.

Enabling USB Microphone
  1. Microphone requires speakers support so check the previous paragraph. Also perform OS updating and reboot if you didn't:

    Updating PiKVM OS

    Tip

    We recommend updating PiKVM OS only if you have physical access to the device, or in the most extreme cases. The update process is very reliable, but there is always a small chance that something may go wrong so reflashing will be required. PiKVM cannot be bricked, but you need physical access to the memory card for this operation.

    To update, run following commands under the root user:

    [root@pikvm ~]# pikvm-update
    

    If you encounter an error like:

    [root@pikvm ~]# pikvm-update
    bash: pikvm-update: command not found
    

    It's most likely you have an old OS release. You can update the OS as follows:

    [root@pikvm ~]# rw
    [root@pikvm ~]# pacman -Syy
    [root@pikvm ~]# pacman -S pikvm-os-updater
    [root@pikvm ~]# pikvm-update
    

    Next time you will be able to use the usual method with pikvm-update.

  2. Switch filesystem to RW-mode:

    [root@pikvm ~]# rw
    
  3. Add a config to /etc/kvmd/override.yaml:

    otg:
        devices:
            audio:
                enabled: true
    
  4. Perform reboot:

    [root@pikvm ~]# reboot
    

To receive audio in the PiKVM Web UI, go to the System menu and switch the video mode to WebRTC. Before using the microphone, you need to allow the PiKVM Web UI to access it. Enable Multimedia switch and enable the Microphone switch too. You can also choose a specific device. The settings are saved in the browser's local storage.


Troubleshooting

  • If the browser does not play sound or does not show audio slider, try a different browser and/or incognito mode without extensions. Firefox and Google Chrome works best.

  • Check the log: journalctl -u kvmd-janus.

  • If nothing helped, please report about the problem to our support