Phone as a cameraFree

A phone often makes the better webcam — with a companion app it becomes a camera device that Hologramu sees like any other.

How it works

Hologramu has no phone connection of its own, and needs none. It opens cameras the operating system knows about. An app on the phone plus a small program on the PC together form a virtual camera — from then on the phone sits in the device list like a USB webcam, with everything that comes with it: resolution, frame rate, a place on the stage, merging with further cameras.

So there is nothing to set up inside Hologramu except picking it.

Tip: A phone is strongest as a second camera. Put it off to your side: the webcam in front sets left/right and up/down, the phone from the side sets depth — how far your hand reaches forward. Then drag it to that spot on the stage, see Choosing a camera.

Which app?

RoutePhonePCConnection
DroidCamAndroid, iOSLinux, WindowsUSB or Wi-Fi
Iriun WebcamAndroid, iOSLinux, WindowsWi-Fi
Connected camera (Phone Link)AndroidWindows 11 onlyWi-Fi + Bluetooth
MJPEG stream + ffmpegany streaming appLinux onlyWi-Fi

DroidCam and Iriun are the short route that works on both phone systems and both PC systems. The ffmpeg route needs no third-party PC client, but costs some handwork.

USB beats Wi-Fi. Both work, but over a cable the image is noticeably more direct, it does not break up when someone else in the house starts streaming, and the phone charges along the way. For tracking, delay matters more than resolution.

Linux: the virtual camera deviceLinux

On Linux there has to be a device the PC software can write the phone's image into. That is what the kernel module v4l2loopback does: it creates an extra /dev/video* that feels like a camera to every other program.

bash
# Arch, Manjaro, EndeavourOS
sudo pacman -S v4l2loopback-dkms v4l-utils

# Debian, Ubuntu, Linux Mint, Pop!_OS
sudo apt install v4l2loopback-dkms v4l-utils

# Fedora (RPM Fusion "free" has to be enabled)
sudo dnf install akmod-v4l2loopback v4l-utils

# openSUSE
sudo zypper install v4l2loopback-kmp-default v4l-utils

v4l-utils is not strictly required, but it brings v4l2-ctl — the tool that tells you whether the device is really there.

Caution: The DKMS packages build the module for your running kernel and need its headers for that. Without them the installation stops with a build error. Arch: sudo pacman -S linux-headers (for other kernels accordingly, linux-zen-headers, linux-lts-headers). Debian/Ubuntu: sudo apt install linux-headers-$(uname -r).

Load the module and name the device:

bash
sudo modprobe v4l2loopback video_nr=10 card_label="Phone" exclusive_caps=1

The device is then /dev/video10 and shows up in Hologramu as "Phone". Without video_nr the module picks a free number itself.

To have it there after every boot:

bash
echo v4l2loopback | sudo tee /etc/modules-load.d/v4l2loopback.conf
echo 'options v4l2loopback video_nr=10 card_label="Phone" exclusive_caps=1' \
  | sudo tee /etc/modprobe.d/v4l2loopback.conf

Checking:

bash
lsmod | grep v4l2loopback
v4l2-ctl --list-devices

Note: exclusive_caps=1 means the device only announces itself as a camera once something is actually writing into it. Hologramu hides devices that cannot deliver images — so the virtual device appears in the list only once the connection to the phone is up. The order is therefore: start the phone app, connect the PC program, then pick the camera in Hologramu. Without exclusive_caps=1 it is always in the list, but hands out black frames while nothing is sending.

Connecting the phone over USBLinux

Only needed for the cable route — Wi-Fi needs none of this.

bash
# Android (ADB)
sudo pacman -S android-tools        # Arch
sudo apt install adb                # Debian, Ubuntu
sudo dnf install android-tools      # Fedora
sudo zypper install android-tools   # openSUSE

# iPhone (usbmuxd)
sudo pacman -S usbmuxd              # Arch
sudo apt install usbmuxd            # Debian, Ubuntu
sudo dnf install usbmuxd            # Fedora
sudo zypper install usbmuxd         # openSUSE

On the Android phone this needs the developer options and USB debugging inside them; the first time you plug it in, the phone asks whether to trust the computer. On an iPhone the usual "Trust This Computer" is enough.

Setting up DroidCam

Runs on Android and iOS, connects over cable or Wi-Fi.

  1. Install DroidCam on the phone from the Play Store or App Store.
  2. Get the matching client from dev47apps.com. On Arch it is also available as the AUR package droidcam.
  3. Unpack and install the Linux client:
bash
cd /tmp
unzip droidcam_latest.zip -d droidcam
cd droidcam
sudo ./install-client
  1. DroidCam brings its own loopback module (sudo ./install-video). If you already installed v4l2loopback you do not need it — having both is no problem either, you simply end up with two virtual devices.
  2. Open the app on the phone, start the client on the PC, choose USB or WiFi. Over Wi-Fi the app shows an IP address that you enter on the PC.

Setting up Iriun

Connects over Wi-Fi only, but without typing an address: client and phone find each other on the same network.

  1. Install Iriun Webcam on the phone (Android or iOS).
  2. Get the client from iriun.com — there is a .deb and an .rpm. Install the .deb with sudo apt install ./iriunwebcam-*.deb, which pulls the dependencies along, unlike dpkg -i.
  3. v4l2loopback is a prerequisite, see above.
  4. Put both devices on the same Wi-Fi, open app and client — the connection comes up on its own.

Without a third-party PC client: MJPEG streamLinux

If you would rather not install a proprietary client: many camera apps simply offer the camera stream as a web address — IP Webcam on Android, apps offering MJPEG or RTSP on iOS. The address is shown in the app (e.g. http://192.168.1.42:8080/video). ffmpeg pushes that stream into the virtual device:

bash
ffmpeg -i http://192.168.1.42:8080/video -vf format=yuv420p -f v4l2 /dev/video10

That window has to stay open for as long as you track. Installing ffmpeg:

bash
sudo pacman -S ffmpeg        # Arch
sudo apt install ffmpeg      # Debian, Ubuntu
sudo dnf install ffmpeg      # Fedora (RPM Fusion)
sudo zypper install ffmpeg   # openSUSE (Packman)

Note: ffmpeg does not ship with Hologramu and is only used when the system already has it. You need this installation anyway if you want to record clips with sound in a single file.

WindowsWindows

On Windows there is no module and no package manager in between: the clients from DroidCam, Iriun or Camo register a camera with the system as part of their own installation. After that it stands in Hologramu's device list.

Windows 11 can also do it without extra software: under Bluetooth & devices → Mobile devices in the settings, a paired Android phone can be released as a connected camera. That requires an up-to-date Windows 11, the Link to Windows app on the phone and Bluetooth switched on; the image itself travels over Wi-Fi. There is no iPhone equivalent — there it stays DroidCam, Iriun or Camo.

Picking it in Hologramu

In the avatar under Tracking → Cameras, select the virtual device. It is named the way you named it, or after the client ("DroidCam", "Iriun").

  • Image (resolution / frame rate) — virtual devices often offer only a single format. Leave the setting on Automatic and set the resolution where it is created: in the phone app. 720p is plenty; MediaPipe works on a smaller image internally anyway, and every extra pixel only costs bandwidth.
  • Angle and height — if the phone stands off to the side or on a tripod above you, drag it there on the stage. The tracker then takes that tilt out instead of passing it on to your avatar.
  • Frame rate — more important than resolution. Below roughly 20 frames per second the motion turns visibly sluggish.

When it does not work

SymptomCause
Device missing from the listThe connection to the phone is not up yet (see exclusive_caps=1 above)
Device still missingModule not loaded — check with lsmod, otherwise sudo modprobe v4l2loopback
Gone after a kernel updateRebuild via DKMS: sudo dkms autoinstall, install the headers if needed
Phone and PC do not find each otherDifferent networks, a guest Wi-Fi, or client isolation in the router
Image stutters or lags behind2.4 GHz Wi-Fi, resolution too high — or just connect over USB
Camera stays blackAnother app is holding the phone camera; restart the streaming app

Tip: A phone that streams for an hour gets warm and runs empty. On a cable, both problems solve themselves at once.