mirror of
https://github.com/pikvm/pikvm.git
synced 2026-09-03 07:17:37 +08:00
camera
This commit is contained in:
@@ -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 | ✅ | ✅ | | ✅ | | ✅ | ✅ |
|
||||
||
|
||||
||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
113
docs/camera.md
Normal 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
BIN
docs/camera/menu_camera.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 103 KiB |
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user