ONVIF - themactep/thingino-firmware GitHub Wiki
ONVIF protocol in Thingino is handled by thingino-onvif package, a fork of onvif_simple_server by @roleo, with changes to better suite the Thingino firmware specific needs.
The server consists of three major components:
- wsd_simple_server - a daemon that replies to discovery on port 3702.
- onvif_notify_server - a daemon that handles events.
- onvif_simple_server handles all other responses. This one is a CGI application, not a daemon.
Configuration
The /etc/onvif.json configuration file is dynamically populated during firmware start to contain information specific to the actual device, its hardware and the firmware build. It is preset to handle most cases, but can be further customized to meet specific needs.
Development
Test the server with the "official" ONVIF tools:
Protocol
ONVIF requests that must be accessible without authentication are those in the PRE_AUTH access class, as specified in the ONVIF Core Specification. These enable initial device discovery and basic queries without credentials, ensuring compatibility and security for other operations.
Device Service (tds:Device)
- GetWsdlUrl: Retrieves the WSDL URL for service definitions.
- GetServices: Returns a list of available services and their capabilities.
- GetServiceCapabilities: Provides capabilities of the device service.
- GetCapabilities: Returns base device capabilities (backward-compatible).
- GetHostname: Retrieves the device's hostname configuration.
- GetSystemDateAndTime: Gets the current system date and time.
- GetEndpointReference: Returns the endpoint reference for authentication setup.
Event Service (tev:Events)
- GetServiceCapabilities: Provides capabilities of the event service.
These are the only methods explicitly required to support unauthenticated access per the specification.