[BUG] iOS iPhone/iPad heats up and battery drains fast when using webtop on iPhone/iPad
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 42/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Active
- Tech stack
- docker, docker-compose, ios
- Domain
- backend, mobile-dev, performance
Research direction
Start with the provided docker-compose.yml and reproduce the issue on an iPhone or iPad for 30 minutes. Compare the reported client behavior with the container logs, especially the VAAPI H264 encoder and zero-copy stream settings, and investigate whether the client decodes the stream with hardware acceleration. Done means identifying the cause and confirming a fix or documented limitation with a repeatable battery and temperature comparison.
Written by the indexing model from the issue text.
Description
Is there an existing issue for this?
- I have searched the existing issues
Current Behavior
This is not new but I've had this issue before and continue to have it, my iPhone gets really warm and battery drains fast when connected to webtop. Is the client side gpu acclerated?
I have the container GPU accelerated and in the firefox and chromium browsers I'm showing it's all hardware accelerated. Encoder is set to x264enc and default settings everywhere else in the side panel.
Expected Behavior
Because the encoder is set to x264enc, it should be hardware accelrated by the iPhone so the phone doesn't heat up. I suspect it's using CPU to decode the stream vs using the GPU.
Steps To Reproduce
Vanilla docker-compose config and attempt to connect with iPhone or iPad and watch for 30 mins, observe the battery drain and the back side of the device is warm.
If I want a long h264 encoded video for example with vlc player app on the phone, or if I stream netflix, etc, phone is cool to the touch and battery lasts a long time.
Environment
- OS: Ubuntu 24.04
- How docker service was installed: Official Docs
CPU architecture
x86-64
Docker creation
docker-compose.yml
services:
webtop:
image: linuxserver/webtop:ubuntu-xfce
container_name: webtop01
environment:
- DRINODE=/dev/dri/renderD128
- DRI_NODE=/dev/dri/renderD128
- PIXELFLUX_WAYLAND=true
- PUID=1000
- PGID=1000
- TZ=America/New_York
- SUBFOLDER=/
- TITLE=Webtop
volumes:
- webtop_config:/config
ports:
- 3001:3001
devices:
- /dev/dri:/dev/dri
shm_size: "2gb"
deploy:
resources:
limits:
memory: 4GB
restart: unless-stopped
networks:
z_vlan6ipvlan:
ipv4_address: 192.168.6.33
dns:
- 192.168.6.1
networks:
z_vlan6ipvlan:
external: true
volumes:
webtop_config:
Container logs
INFO:data_websocket:Legacy client ('127.0.0.1', 34878) connected. Role: controller, Slot: None
INFO:data_websocket:Data WebSocket connected from ('127.0.0.1', 34878)
INFO:data_websocket:Sending last known cursor to new client ('127.0.0.1', 34878)
INFO:data_websocket:Attempting to establish PulseAudio connection...
INFO:data_websocket:PulseAudio connection established.
INFO:data_websocket:Registering new client for display: primary
INFO:data_websocket:Applying and sanitizing client settings for 'primary' (initial=True)
INFO:data_websocket:DPI changed from None to 96. Applying system-level change.
INFO:data_websocket:Wayland Settings: Executing 'wlr-randr --output WL-1 --scale 1.0' on wayland-0
INFO:data_websocket:Initial setup or dimensional change detected for 'primary'. Performing full display reconfiguration.
INFO:data_websocket:Starting display reconfiguration...
INFO:data_websocket:Calculating new extended desktop layout from ALL clients...
INFO:data_websocket:Aligned total width from 1762 to 1768 for xrandr.
INFO:data_websocket:Layout calculated: Total Size=1768x1060. Layouts: {'primary': {'x': 0, 'y': 0, 'w': 1762, 'h': 1060}}
INFO:data_websocket:Starting separate capture instances for each ACTIVE display region...
INFO:data_websocket:Client 'primary' is active. Starting its capture.
INFO:data_websocket:Preparing to start capture for display='primary': Res=1762x1060, Offset=0x0
INFO:main:Parsed DRI node '/dev/dri/renderD128' to index 0.
INFO:data_websocket:Registered Wayland cursor callback for 'primary'
INFO:data_websocket:Video chunk sender started for display 'primary'.
[Wayland] Encode Node Index: 0 | Driver: ../../../bus/pci/drivers/i915
[Wayland] Initializing Unified VAAPI Encoder...
INFO:data_websocket:SUCCESS: Capture started for 'primary'.
INFO:data_websocket:Broadcasting primary stream resolution to all clients: {"type": "stream_resolution", "width": 1762, "height": 1060}
INFO:data_websocket:Broadcasting display config update: DISPLAY_CONFIG_UPDATE,{"type": "display_config_update", "displays": ["primary"]}
INFO:data_websocket:Display reconfiguration finished successfully.
INFO:data_websocket:Reconfiguration process complete (state unlocked).
INFO:data_websocket:Initial client settings message processed by ws_handler.
INFO:data_websocket:Initial setup: Primary client connected, audio not active, attempting start.
INFO:data_websocket:Starting pcmflux audio pipeline...
INFO:data_websocket:pcmflux settings: device='output.monitor', bitrate=320000, channels=2
[pcmflux] Attempting to connect to PulseAudio device: output.monitor with latency: 10ms
INFO:data_websocket:pcmflux audio capture started successfully.
INFO:data_websocket:pcmflux audio chunk broadcasting task started.
[pcmflux] SUCCESS: Connected to PulseAudio.
[pcmflux] SUCCESS: Opus encoder created.
[pcmflux] Capture loop started. Device: output.monitor, Rate: 48000, Channels: 2, Bitrate: 320 kbps, VBR: On, Silence Gate: Off, Debug Logging: Off, PCM Chunk: 3840 bytes
INFO:data_websocket:Received redundant resize request for primary (1762x1060). No action taken.
INFO:data_websocket:Received START_AUDIO command from client for server-to-client audio.
INFO:data_websocket:START_AUDIO: pcmflux audio pipeline already active.
[Wayland] VAAPI Encoder initialized successfully.
[Wayland] Decision: Zero-Copy path active.
Stream settings active -> Res: 1762x1060 | FPS: 60.0 | Stripes: 1 | Mode: H264 (VAAPI) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f
[pcmflux] First non-silent audio chunk detected! Encoding...
- Dominant language
- Shell
- Stars
- 4.4k
- Forks
- 377
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from linuxserver/docker-webtop
-
no-issue-activity
Difficulty 4/5 3-5 days Newbie friendliness 45/100
linuxserver/docker-webtop#425 · 9 comments ·
-
no-issue-activity
Difficulty 3/5 1-2 days Newbie friendliness 45/100
linuxserver/docker-webtop#420 · 6 comments ·
-
work-in-progress
linuxserver/docker-webtop#417 · 3 comments · 3 reactions · 1 assignee ·
-
work-in-progress
linuxserver/docker-webtop#394 · 2 comments · 1 assignee ·
All issues in linuxserver/docker-webtop
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
danielmiessler/LifeOS#2218 ·
-
docs(agents): strengthen the no-backslash-escaped-backticks rule with an issue-creation example Open
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
package-update
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
oSoWoSo/vOid_Community_repOsitory#148 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
chore
Difficulty 1/5 Under an hour Newbie friendliness 91/100
alunduil/alunduil-chezmoi#792 ·