Link Local IP Network Configuration - PC
Recall that the Zivid SDK looks at Cameras.yml
to find cameras, see Zivid Two Network Configuration.
There are two options to make a camera available to the Zivid SDK.
You can list all the IP addresses that may be assigned in link local mode. The available range is so large that it does not make sense to list them all in the
Cameras.yml
file.You can list the hostnames assigned to the connected cameras. The hostname is by default
zivid-<serial number>
(e.g.zivid-2022C0DE
). You can also assign a custom hostname when you enable DHCP mode on the camera, see DHCP or Link Local IP Network Configuration - Camera.
In the following guide we will only focus on hostname.
Warning
Before you obtain a link-local IP address for your PC, make sure the camera is configured for link-local IP address, see DHCP or Link Local IP Network Configuration - Camera.
Identify network interface name
C:\> netsh interface ip show config Configuration for interface "Ethernet 2" DHCP enabled: Yes InterfaceMetric: 5 DNS servers configured through DHCP: None Register with which suffix: Primary only WINS servers configured through DHCP: None Configuration for interface "WiFi" DHCP enabled: Yes IP Address: 192.168.0.4 Subnet Prefix: 192.168.0.0/24 (mask 255.255.255.0) Default Gateway: 192.168.0.1 Gateway Metric: 0 InterfaceMetric: 35 DNS servers configured through DHCP: 192.168.0.1 Register with which suffix: Primary only WINS servers configured through DHCP: None
$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether e8:6a:64:d3:52:51 brd ff:ff:ff:ff:ff:ff altname enp0s31f6 3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 98:2c:bc:af:a5:19 brd ff:ff:ff:ff:ff:ff inet 192.168.2.165/20 brd 192.168.15.255 scope global dynamic noprefixroute wlp2s0 valid_lft 85346sec preferred_lft 85346sec inet6 fe80::e2b2:f4ff:e2f:b629/64 scope link noprefixroute valid_lft forever preferred_lft forever
Obtain link-local IP address
Windows has an Automatic Private IP Addressing (APIPA) feature. This feature is enabled by default, and includes an implementation of NetBIOS Naming Service (WINS). In order to trigger this feature the network interface must be configured for DHCP.
C:\> netsh interface ip set address "Ethernet 2" dhcp
Then make sure that you release any assigned IP addresses, just in case a DHCP server was available at one point.
C:\> ipconfig /release
It is possible to configure Link-Local via netplan. First we verify existing configurations.
$ ls /etc/netplan/ 01-network-manager-all.yaml
In our case we add a new configuration for our interface.
$ sudo nano /etc/netplan/99_config.yaml
network: version: 2 renderer: networkd ethernets: eno1: link-local: [ipv4]
$ sudo netplan apply
Enable NetBIOS Naming Service service
The APIPA feature includes an implementation of NetBIOS Naming Service (WINS), it is enabled by default.
On Ubuntu we need to enable NetBIOS Naming Service manually.
$ sudo apt install winbind libnss-winbind
This will install and start a winbind service.
$ systemctl status winbind ● winbind.service - Samba Winbind Daemon Loaded: loaded (/lib/systemd/system/winbind.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-03-30 14:41:26 CEST; 4min 19s ago Docs: man:winbindd(8) man:samba(7) man:smb.conf(5) Main PID: 6248 (winbindd) Status: "winbindd: ready to serve connections..." Tasks: 2 (limit: 9322) Memory: 3.8M CGroup: /system.slice/winbind.service ├─6248 /usr/sbin/winbindd --foreground --no-process-group └─6250 winbindd: domain child [THIS-PC1] mars 30 14:41:26 this-pc1 systemd[1]: Starting Samba Winbind Daemon... mars 30 14:41:26 this-pc1 systemd[1]: Started Samba Winbind Daemon.
The NetBIOS Naming Service service is not enabled by default in winbind. We enable this by adding
wins
to hosts:$ sudo nano /etc/nsswitch.conf
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the 'glibc-doc-reference' and 'info' packages installed, try: # 'info libc "Name Service Switch"' for information about this file. passwd: files systemd group: files systemd shadow: files gshadow: files hosts: files wins mdns4_minimal [NOTFOUND=return] dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Now restart winbind in order for the changes to take effect.
$ sudo systemctl restart winbind
We currently do not support Link-Local Multicast Name Resolution, and this should be disabled.
$ sudo nano /etc/systemd/resolved.conf
# This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See resolved.conf(5) for details [Resolve] #DNS= #FallbackDNS= #Domains= LLMNR=no #MulticastDNS=no #DNSSEC=no #DNSOverTLS=no #Cache=no-negative #DNSStubListener=yes #ReadEtcHosts=yes
Once the network settings are configured, connect the Zivid Two camera and wait more than 15 seconds. Then check if a link-local IP address has been assigned. This step does not depend on the NetBIOS Naming Service service, but it’s a good idea to enable that first.
C:\> netsh interface ipv4 show ipaddresses "Ethernet 2" Address 169.254.208.207 Parameters --------------------------------------------------------- Interface Luid : Ethernet 2
$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether e8:6a:64:d3:52:51 brd ff:ff:ff:ff:ff:ff altname enp0s31f6 inet 169.254.242.125/16 brd 169.254.255.255 scope link eno1 valid_lft forever preferred_lft forever 3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 98:2c:bc:af:a5:19 brd ff:ff:ff:ff:ff:ff inet 192.168.2.165/20 brd 192.168.15.255 scope global dynamic noprefixroute wlp2s0 valid_lft 80799sec preferred_lft 80799sec inet6 fe80::e2b2:f4ff:e2f:b629/64 scope link noprefixroute valid_lft forever preferred_lft forever
Verify that you can find the camera
C:\> ZividNetworkCameraConfigurator info <hostname>
for example, with hostname
zivid-two
:C:\> ZividNetworkCameraConfigurator info zivid-two Successfully connected to zivid-two. Information: Model Name: Zivid Two Serial Number: 21514DB3 MAC Address: 4C4BF98000F1 Firmware Version: 1.6.0+152047fc
$ ZividNetworkCameraConfigurator info <hostname>
for example, with hostname
zivid-two
:$ ZividNetworkCameraConfigurator info zivid-two Successfully connected to zivid-two. Information: Model Name: Zivid Two Serial Number: 21514DB3 MAC Address: 4C4BF98000F1 Firmware Version: 1.6.0+152047fc
Once you have configured both the camera and the PC you can open Zivid Studio and the camera will be found automatically.
Hint
The status LEDs at the back of the camera show the current link capacity.