Skip to content

[BUG] iOS iPhone/iPad heats up and battery drains fast when using webtop on iPhone/iPad #428

@MxD-js

Description

@MxD-js

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...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Issues

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions