My onvif integration with icsee camera mainstream in glance image card is freeze

Into:

Nothing is as beautiful in the eyes of a suffering Brazilian as a ‘less than $20 bucks xing-ling onvif IP camera’.
- Andre Myszko, February 7, 2025

I dicided to open this topic to get help and help people that are trying to use ICsee cameras with onvif in home assistant (HAOS mode)

last discover:
OW thanks God… I received this error in HAOS > System > Logs:
TRYING OVER TCP:


** TRYING OVER HTTP:

I looks like a ‘HTTP_UNAUTHORIZED, Server returned 401 Unauthorized’ type of error, is there some one that can help me with that?

Overview:

Everything is working fine, the only problem is that the HAOS frontend display the camera image mainstream freezed just like a snapshot. Also the PTZ is already working (PAN and TILT only but that is ok… when I move the axis the camera moves in ICsee mobile app and no erros are shown in home assistant web browser console/network)

  • Checking the network on the page I find this:

  • looks like ‘ha-hls-player.ts:140’ can not fetch the request or something…
  • no sure about what this ‘undefined’ register is… :,c

Here is the component YAML:

camera_view: live
type: picture-glance
title: lugandcam
image: camera.lugandcam_mainstream
camera_image: camera.lugandcam_mainstream
grid_options:
  columns: 16
  rows: 4
entities:
  - entity: camera.lugandcam_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.lugandcam_mainstream
        zoom: ZOOM_IN
        speed: 1
        distance: 0.3
        move_mode: ContinuousMove
    name: Zoom In
    icon: mdi:magnify-plus
  - entity: camera.lugandcam_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.lugandcam_mainstream
        zoom: ZOOM_OUT
        speed: 1
        distance: 0.3
        move_mode: ContinuousMove
    name: Zoom Out
    icon: mdi:magnify-minus
  - entity: camera.lugandcam_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.lugandcam_mainstream
        pan: LEFT
        speed: 1
        distance: 0.3
        move_mode: ContinuousMove
    name: Pan Left
    icon: mdi:arrow-left
  - entity: camera.lugandcam_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.lugandcam_mainstream
        tilt: UP
        speed: 1
        distance: 0.3
        move_mode: ContinuousMove
    name: Tilt Up
    icon: mdi:arrow-up
  - entity: camera.lugandcam_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.lugandcam_mainstream
        tilt: DOWN
        speed: 1
        distance: 0.3
        move_mode: ContinuousMove
    name: Tilt Down
    icon: mdi:arrow-down
  - entity: camera.lugandcam_mainstream
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        entity_id: camera.lugandcam_mainstream
        pan: RIGHT
        speed: 1
        distance: 0.3
        move_mode: ContinuousMove
    name: Pan Right
    icon: mdi:arrow-right

Environament:

  • Raspberry Pi 5 4GB
  • SSD card 128GB SanDisk
  • HAOS (Ethernet cable direct to local network)
  • Wifi Signal Repeater 2.4g (no router, same gateway provided by main network where my de pc and camera are connected)
  • Icsee camera (wifi connection)

Used IPs: (used nmap and ‘ip route’ to find the info, ipconfig for win vm)

  • IP gateway: 192.168.X.A
  • IP repeater: 192.168.X.B
  • IP haos: 192.168.X.C
  • IP my linux notebook: 192.168.X.D
  • IP icsee camera: 192.168.X.E
  • IP kvm windows: 192.168.Y.A
  • IP mask: 255.255.255.0

Icsee camera config and steps:

  • step 1:
    Connected via Wifi using the mobile app (ip provided inside my subnet range: IP: 192.168.X.E) and updated the camera name and password for login

  • step 2:
    Creation of a kvm windows and downloaded the camera desktop app ‘VideoPlayTool’ so I can manage ‘Remote settings’.

  • step 3:
    Using the ‘Video Play Tool’ I:

    • Activated the option ‘System > Network > Onvif Check’
    • Disabled ‘Network > DHCP’ connection and provided the static values for:
      IP Addres(Icsee Camera IP)
      Subnet Mask(255.255.255.0)
      Internet GateWay (Home Network Gateway).
      PS.: I’v tried with DHCP enable with same results…
  • step 4:
    I enabled the IP ‘white list’ and added my:

    • network gateway IP
    • my notebook IP
    • my haos IP
      Ps.: Tried without enableing IP filter with same results…
  • Other infos NetService/Network:

    • Network ports:
      media port: 34567
      http port: 80
      Onvif port: 8899

    • RTSP: enabled on port 554

    • Wifi: Enabled (with DHCP disabled static values provided just like the network)

    • NTP enabled (default)

    • UPNP disabled (default)

    • FTP disabled (default)

  • System > Camera params:

Here is the Onvif integration camera diagnouse:

	
home_assistant	
installation_type	"Home Assistant OS"
version	"2025.2.0"
dev	false
hassio	true
virtualenv	false
python_version	"3.13.1"
docker	true
arch	"aarch64"
timezone	"America/Sao_Paulo"
os_name	"Linux"
os_version	"6.6.62-haos-raspi"
supervisor	"2025.02.0"
host_os	"Home Assistant OS 14.2"
docker_version	"27.2.0"
chassis	"embedded"
run_as_root	true
custom_components	
icsee_ptz	
documentation	"https://github.com/dbuezas/icsee-ptz"
version	"4.0.2"
requirements	
0	"python-dvr"
1	"getmac==0.8.2"
hacs	
documentation	"https://hacs.xyz/docs/use/"
version	"2.0.5"
requirements	
0	"aiogithubapi>=22.10.1"
integration_manifest	
domain	"onvif"
name	"ONVIF"
codeowners	
0	"hunterjm"
1	"jterrace"
config_flow	true
dependencies	
0	"ffmpeg"
dhcp	
0	
registered_devices	true
documentation	"https://www.home-assistant.io/integrations/onvif"
iot_class	"local_push"
loggers	
0	"onvif"
1	"wsdiscovery"
2	"zeep"
requirements	
0	"onvif-zeep-async==3.2.5"
1	"WSDiscovery==2.1.2"
is_built_in	true
overwrites_built_in	false
setup_times	
null	
setup	0.00002959195990115404
01JKF70NW91D75FFMD9PGMNER0	
wait_import_platforms	-1.875660082034301
wait_base_component	-0.0006038150168024004
config_entry_setup	4.25429453101242
data	
config	
created_at	"2025-02-07T03:24:51.977671+00:00"
data	
host	"**REDACTED**"
name	"lugandcam"
password	"**REDACTED**"
port	8899
snapshot_auth	"digest"
username	"**REDACTED**"
discovery_keys	{}
disabled_by	null
domain	"onvif"
entry_id	"I removed from diagnouse cus i do not know wtf this ID is capable of"
minor_version	1
modified_at	"2025-02-07T03:24:53.282341+00:00"
options	
enable_webhooks	true
extra_arguments	"-pred 1"
rtsp_transport	"tcp"
pref_disable_new_entities	false
pref_disable_polling	false
source	"user"
title	"lugandcam - 00:13:00:46:19:42"
unique_id	"00:13:00:46:19:42"
version	1
device	
info	
manufacturer	"H264"
model	"XM533_X3-WQ-B_8M"
fw_version	"V5.01.R02.000847FB.10010.346924.S.ONVIF 21.06"
serial_number	"removed from diagnouse"
mac	"removed from diagnouse"
capabilities	
snapshot	true
events	true
ptz	true
imaging	true
profiles	
0	
index	0
token	"000"
name	"mainStream"
video	
encoding	"H264"
resolution	
width	2304
height	1296
ptz	
continuous	true
relative	true
absolute	true
presets	
0	"1"
video_source_token	"V_SRC_000"
1	
index	1
token	"001"
name	"subStream"
video	
encoding	"H264"
resolution	
width	704
height	576
ptz	
continuous	true
relative	true
absolute	true
presets	
0	"1"
video_source_token	"V_SRC_000"
services	
('devicemgmt', None)	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/devicemgmt.wsdl"
('media', None)	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/media.wsdl"
('imaging', None)	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/imaging.wsdl"
('ptz', None)	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/ptz.wsdl"
('events', None)	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/events.wsdl"
('notification', None)	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/events.wsdl"
('subscription', 'PullPointSubscription')	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/events.wsdl"
('pullpoint', 'PullPointSubscription')	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/events.wsdl"
('pullpoint', 'NotificationConsumer')	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/events.wsdl"
('subscription', 'NotificationConsumer')	"/usr/local/lib/python3.13/site-packages/onvif/wsdl/events.wsdl"
xaddrs	
http://www.onvif.org/ver20/analytics/wsdl	"http://192.168.X.X:8899/onvif/analytics_service"
http://www.onvif.org/ver10/events/wsdl	"http://192.168.X.X:8899/onvif/event_service"
http://www.onvif.org/ver20/imaging/wsdl	"http://192.168.X.X:8899/onvif/image_service"
http://www.onvif.org/ver10/media/wsdl	"http://192.168.X.X:8899/onvif/media_service"
http://www.onvif.org/ver20/ptz/wsdl	"http://192.168.X.X:8899/onvif/ptz_service"
http://www.onvif.org/ver10/events/wsdl/PullPointSubscription	"http://192.168.X.X:8899/event_service/0"
http://www.onvif.org/ver10/events/wsdl/NotificationConsumer	"http://192.168.X.X:8899/event_service/0"
events	
webhook_manager_state	
__type	"<enum 'WebHookManagerState'>"
repr	"<WebHookManagerState.STARTED: 1>"
pullpoint_manager_state	
__type	"<enum 'PullPointManagerState'>"
repr	"<PullPointManagerState.STARTED: 1>"

Ps.:

Please can anybody relate a solution for this issue, any informations?
Thanks people! :baby:

any update on this?

Nothing yet, I ended up stopping to explore further, I managed to put 3 cameras of the ICsee brand simultaneously in Home Assistant, but the recording freezes or extremely slow, let’s say with an acceptable result for one camera, when we put multiple cameras we have the screen freezes or they are not rendered, it seems to be an authorization problem, but studying a little more I realized that it could be several things…
it could be a problem of the camera’s firmware configuration, it could be a problem of video stream since I’m running HAOS on a Raspberry with a memory card, it could be incompatibility with Linux since the program only runs on Windows, maybe even with ONVIF this is a problem, it’s hard for me to say with my experience…
I believe that a really smart guy could diagnose it

new update people!
in the new versions of HAOS, the ONVIF integrations is better.
if you have any camera (in my case the ICsee one) that provider ONVIF connection it is plug and play… just like that…

You only need to check if the camera’s onvif connective is active… and if the camera is in the same networkt that HAOS. knowing the camera’s IP you only need to select the autodetected camera in the ONVIF home assistant integration, it will ask for a entity name, user and password(in my case ICsee app camera user and password, that I can check in the ICsee app ‘camera info’), set it up and click add… all entitys are discovered automaticly! AMAZING!

ps.: you need to configure PTZ manualy via .yaml, but that is ok.
ps.: you enable substream and watch in real time in the dashboard.

My setup resume:
my os: Linux Ubuntu
camera: ICsee (360º PTZ)
quantity: 2 cameras
OS: HAOS (local and nabukasa)
integration: ONVIF
dashboard component: picture glance
HAOS manualy configuration: NONE
plug and play: YES