This commit is contained in:
Maxim Devaev
2026-08-22 20:57:57 +03:00
parent 2afd640212
commit 03ff587761
13 changed files with 149 additions and 28 deletions

View File

@@ -31,8 +31,10 @@ The website: [pikvm.org](https://pikvm.org). Also check out [the documentation](
PiKVM supports several different hardware configurations, referred to as **platforms**.
All of them uses our common open source software stack.
### PiKVM V3 & V4 - Now with web camera!
* **PiKVM V4** and **V3** are our own **plug-and-play, fully assembled, industrial grade, robust** devices.<br>
Supports **H.264 video & two-way audio with microphone** transmission, **host power management**, **mass-storage emulation** and much more.
Supports **H.264 video, audio, microphone and web camera** transmission, **host power management**, **mass-storage emulation** and much more.
They are really well-made, reliable things which you can use yourself or provide to your clients.
V4 and V3 also have more features than DIY builds.
@@ -101,7 +103,8 @@ All of them uses our common open source software stack.
| **HDMI 1920x1200@60Hz** support<br>for big displays | ✅ | ✅ | | ❌ | | ❌ | ❌ |
| **HDMI 1920x1080@60Hz** support<br>for better BIOS/UEFI compatibility | ✅ | ✅ | | ❌ | | ❌ | ❌ |
| **HDMI audio** capture | ✅ | ✅ | | ✅ | | ❌ | ❌ |
| **Microphone emulation** for two-way audio | ✅ | ✅ | | ✅ | | ❌ | ❌ |
| **Microphone** for two-way audio | ✅ | ✅ | | ✅ | | ❌ | ❌ |
| **Web camera** for video calls | ✅ | ✅ | | ✅ | | ❌ | ❌ |
| **Super fast H.264 & MJPEG video:**<br>up to 1080p 60fps | ✅ | ✅ | | ✅ | | ✅ | ✅ |
||
||

View File

@@ -10,7 +10,10 @@ search:
On the default PiKVM, **you can add only one or two of additional USB devices**
depending of its endpoint requirements.
To get more information about the endpoints, add more devices,
and flexibly manage the configuration on the fly, see **[here](usb.md)**.
This also help you if you encounter a compatibility issue
due to the device being turned on (for example, in UEFI).
[See here](usb.md) 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](id.md)
as the keyboard, mouse and other stuff.
You can change everything together, but not separately.

View File

@@ -1,9 +1,9 @@
---
title: PiKVM V3+ two-way audio
description: How to setup two-way audio on PiKVM V3+
title: PiKVM V4 and V3 two-way audio
description: How to setup two-way audio on PiKVM V4 Mini/Plus and PiKVM V3
---
Official [PiKVM V3](v3.md) and [PiKVM V4 Mini/Plus](v4.md) devices have an exclusive audio transmission feature,
Official [PiKVM V4 Mini/Plus](v4.md) and [PiKVM V3](v3.md) 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.
@@ -56,18 +56,15 @@ PiKVM supports stereo mode with any standard bits and frequencies like 32/44.1/4
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 volume slider will appear. Set the volume to a non-zero value.
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.
<img src="menu_speakers.png" width="350" />
If the volume slider is set to zero, then PiKVM does not accept the audio stream to save traffic,
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.
Besides, when the page is reloaded, the volume slider will be reset to zero.
Saving this setting is not possible due to browser limitation that do not allow web pages to play audio
immediately after opening without user activity to protect against annoying ads.
-----
## Microphone (outgoing audio)
@@ -75,8 +72,8 @@ immediately after opening without user activity to protect against annoying ads.
PiKVM [V3](v3.md) and [V4](v4.md) is able to emulate a USB microphone on the target host to transmit
your speech from the browser to the host.
The microphone uses [the same USB identifiers](id.md) as the keyboard, mouse and other emulated devices.
You can change everything together, but not separately.
If you also want enable a webcam for video calls and other applications,
after this instruction, please follow [here](camera.md).
{!_usb_limits.md!}
@@ -107,16 +104,13 @@ You can change everything together, but not separately.
[root@pikvm ~]# reboot
```
To receive and transmit audio in the PiKVM Web UI, go to the **System** menu and switch the video mode to `WebRTC`.
If everything is in order, the volume slider will appear with additional Microphone switch.
Set the volume to a non-zero value, next switch the mic switch.
Your browser will ask for permission to use the microphone, allow it.
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.
<img src="menu_mic.png" width="350"/>
The switch state will be saved in the browser's local settings.
The microphone signal will not be transmitted if the volume level is zero.
-----
## Troubleshooting

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 103 KiB

113
docs/camera.md Normal file
View File

@@ -0,0 +1,113 @@
---
title: Web Camera on PiKVM V4 and V3
description: How to setup web camera on PiKVM V4 Mini/Plus and PiKVM V3
---
Official [PiKVM V4 Mini/Plus](v4.md) and [PiKVM V3](v3.md) devices have an exclusive webcam feature.
With it, you can transfer an image from your local web camera to the remote host to use it for streaming,
video calls, debugging, and so on.
The host sees the virtual camera as a completely ordinary USB device which doesn't require any special drivers.
The maximum supported resolution at present is 1280x720.
If you also want enable a microphone for video calls and other applications,
after this instruction, please follow [here](audio.md#microphone-outgoing-audio).
!!! warning "Limitations"
By installing the `ucamera` (follows), you agree that it will be used only on official [PiKVM V3](v3.md) and [PiKVM V4](v4.md) devices.
We put a lot of effort into making this feature possible, so we want to keep it exclusive to PiKVM for a certain period.
After that, we will publish the full source code of `ucamera` under GPLv3.
Please note that this feature is in early access. Using the camera may cause PiKVM to fail.
This is not fatal for PiKVM V3 and V4 since they have a robust hardware watchdog
which reboot your device after a fail, but just remember that not everything can work perfectly.
If you encounter a problem, we will be glad to receive your bug report to fix it:
use our [support chat](https://pikvm.org/support) or [GitHub Issues](https://github.com/pikvm/pikvm/issues).
-----
## Enabling the camera
{!_usb_limits.md!}
??? info "A recommended hardware modification for PiKVM V3"
[PiKVM V3](v3.md) is a good old workhorse that was not designed for the kind of computing loads that the camera provides.
It was released many years ago and was made for completely different requirements.
However, we want V3 users to be able to enjoy our latest features as long as possible.
A cooling system fan is installed inside V3, but there is no radiator on the CPU since it was simply not needed.
Using the camera uses a lot of hardware blocks that we haven't used before,
so in order to avoid potential overheating (if the fan is turned off or fails),
we recommend [buying and attaching additional heatsinks](https://www.pishop.us/product/aluminum-heatsink-for-raspberry-pi-4b-3-pack/).
Both PiKVM V4 contains a good heatsink inside, so no modifications are required.
1. Perform OS update:
{!_update_os.md!}
2. Switch filesystem to RW-mode:
```console
[root@pikvm ~]# rw
```
3. Install `ucamera` package:
```console
[root@pikvm ~]# pacman -S ucamera
```
3. Add a config to `/etc/kvmd/override.yaml`:
```yaml
otg:
devices:
camera:
enabled: true
```
5. Add parameter `gpu_freq=700` to `/boot/config.txt` **on a separate line**.
6. Add parameter `isolcpus=3` to `/boot/cmdline.txt` **to the end of existing one-line, separate with a space`.
4. Perform reboot:
```console
[root@pikvm ~]# reboot
```
-----
## Using the camera
To use the camera, you will need Firefox, Chrome, or Safari of the latest version,
operability on old/other browsers is not guaranteed. If you use macOS, you will have to
update macOS entirely to update Safari.
A camera is a device that is completely controlled by the host.
The host tells it when to turn on the stream and what resolution should be used.
To receive audio in the PiKVM Web UI, go to the **System** menu and switch the video mode to `WebRTC`.
Before using the camera, you need to allow the PiKVM Web UI to access it.
Enable **Multimedia** switch and enable the **Camera** switch too. You can also choose a specific device.
The settings are saved in the browser's local storage.
<img src="menu_camera.png" width="350"/>
When the host asks the PiKVM device to provide it with an image, the stream will start.
-----
## Troubleshooting
* If the browser does not play sound or does not show multimedia submenu, try a different browser
and/or incognito mode without extensions. Firefox and Google Chrome works best.
* Check the log: `journalctl -u kvmd-janus` -u `ucamera`.
* If nothing helped, please report about the problem [to our support](https://pikvm.org/support/)

BIN
docs/camera/menu_camera.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@@ -150,7 +150,7 @@ The generally accepted names from the USB specifications are shown too.
| `serial` | `iSerialNumber` to 0x409 | ASCII serial number of the product. |
| `device_version` | `bcdDevice` | Kinda the revision of the device. Assigned automatically. It can be changed to 256, 257, 258 or something like this |
These IDs are also used for the [microphone](audio.md#microphone-outgoing-audio) on PiKVM V4.
These IDs are also used for the [microphone](audio.md#microphone-outgoing-audio) and [camera](camera.md) on PiKVM V3 and V4.
The strings under `otg/drives` and `otg/msd` sections deserve a special description.
They relate to virtual media emulation and are separate parts of the SCSI inquiry string, the drive identifier used by the OS driver.

View File

@@ -32,6 +32,7 @@ Depending on the device, the number of required endpoints varies:
| Keyboard, mouse | 1 for each |
| Mass Storage Drive | 2 for each |
| USB Microphone | 2 |
| USB Web Camera | 2 |
| USB Ethernet, USB Serial | 3 for each |
**In total, PiKVM provides 9 endpoints for USB emulation**, some of which are used by default:
@@ -56,6 +57,9 @@ To configure additional devices, please refer to the corresponding pages:
* [USB Microphone](audio.md) - Two-way audio communication for voice
applications on the target host. Exclusive to [PiKVM V3](v3.md) and [V4 Mini/Plus](v4.md).
* [USB Web Camera](camera.md) - Two-way video with web camera for video
calls from the target host and much more. Exclusive to [PiKVM V3](v3.md) and [V4 Mini/Plus](v4.md).
* [Absolute and relative mouse](mouse.md) - The most convenient type
of mouse is an absolute mouse, but some BIOSes may not understand it.
In this case, the relative one will help you.

View File

@@ -263,6 +263,7 @@ To do that:
- [Harden the remote access](auth.md) by enabling 2FA.
- Configure access to PiKVM from the Internet using [port forwarding](port_forwarding.md) or [Tailscale VPN](tailscale.md).
- Enable a microphone for [two-way audio](audio.md).
- Enable a web camera for [video calls and much more](camera.md).
- [Learn](config.md) how configuration files are structured.
- Read how PiKVM is [identified](id.md) on the target host.

View File

@@ -247,6 +247,7 @@ To do that:
- [Harden the remote access](auth.md) by enabling 2FA.
- Configure access to PiKVM from the Internet using [port forwarding](port_forwarding.md) or [Tailscale VPN](tailscale.md).
- Enable a microphone for [two-way audio](audio.md).
- Enable a web camera for [video calls and much more](camera.md).
- Enable [HDMI pass-through](pass.md) and [USB passthrough](usb_pass.md) on V4 Plus.
- Enable [H.264 60 fps streaming](video.md#boost-pikvm-v4-to-60fps-h264).
- [Learn](config.md) how configuration files are structured.

View File

@@ -103,7 +103,7 @@ with the WebRTC mode, please [check this guide](webrtc_config.md).
* ✅ Lowest latency, [fast as hell](latency.md) with `H.264 gop = 0`.
* ✅ Provides [two-way audio](audio.md) on PikVM [V3](v3.md) and [V4 Plus/Mini](v4.md).
* ✅ Provides [two-way audio](audio.md) and [web camera](camera.md) on PikVM [V3](v3.md) and [V4 Plus/Mini](v4.md).
* ❌ The video may be lost due to a poor connection (like mobile internet, bad Wi-Fi, etc.),
or because of the router settings, when WebRTC is given low priority.
@@ -125,7 +125,7 @@ It also uses H.264 encoding, but streams the video over regular HTTP (WebSocket)
* ✅ The latency is low and stable too.
* ❌ No audio support right now (but it will).
* ❌ No audio support right now (but it will), no camera.
* ❌ Some [older browsers](https://caniuse.com/webcodecs) doesn't have the WebCodes support needed for this mode.
@@ -146,7 +146,7 @@ There is no point in using it now if one of the previous modes is working.
* ✅ Low latency if you have a good network.
* ❌ No audio support.
* ❌ No audio and camera support.
* ❌❌❌ Consumes a HUGE amount of traffic. No Wi-Fi, no mobile, nothing but cable connection will work.

View File

@@ -84,6 +84,7 @@ plugins:
"cheat_sheet.md": "cheatsheet.md"
"override.md": "config.md"
"msd_legacy.md": "msd.md"
"webcam.md": "camera.md"
- glightbox:
touchNavigation: false
loop: false
@@ -141,6 +142,7 @@ nav:
- "USB configuration": usb.md
- "USB passthrough": usb_pass.md
- "Audio / Microphone": audio.md
- "Web camera": camera.md
- "Keyboard & mouse":
- "Mouse modes": mouse.md
- "Mouse jiggler": mouse_jiggler.md