Bouwen van op Linux gebaseerde NVR’s

Overzicht

In dit artikel worden de gebruikelijke stappen beschreven voor een partner die een NVR-achtig hardwareproduct wil maken – een embedded computer (hier een “NVR” genoemd) met een vooraf geïnstalleerde servertoepassing. Gewoonlijk is zo’n NVR een op Linux gebaseerde computer met een ARM CPU.

De basisstappen om een dergelijk product te maken, omvatten het volgende:

  • Hardware kiezen
    • Platform
    • Storage
  • Kies Linux-smaak
  • Installeer Server-applicatie
  • Extra functies implementeren
  • Een ondersteuningsbeleid vaststellen

Deze stappen worden hieronder in detail beschreven.

Hardware kiezen

Om een product succesvol te maken moet het kosteneffectief zijn en de vereiste prestaties leveren – het gewenste aantal camera’s met de gewenste bitrate/resolutie ondersteunen. De gebruikte hardware moet ten minste 1 GB RAM hebben en een ARM Cortex A7-chipset of hoger.

Het wordt aanbevolen om eerst de prestaties van de ondersteunde ARM-platforms te bestuderen (zie ARM Support Policy voor de lijst van dergelijke platforms), en dan een platform te kiezen dat het dichtst bij uw eisen ligt.

Platform

Het gekozen ondersteunde ARM-platform kan worden gebruikt als een van de volgende:

  • een kant-en-klare computer (bijv. een standaard Raspberry Pi moederbord), eventueel met een aangepaste behuizing en voedingseenheid;
  • een referentie voor het ontwerpen van een aangepaste computer met het moederbord dat extra hardwarecomponenten kan bevatten zoals perifere interfaces of harde schijf controllers.

Als de NVR naar verwachting naast de servertoepassing nog andere software aan boord zal hebben, zoals een webserver die een webinterface voor de gebruiker biedt, software voor videoanalyse (b.v. een VMS-plugin en/of de backend daarvan), of iets dergelijks, zorg er dan voor dat u voldoende RAM en CPU-verwerkingsvermogen toevoegt om dat te dekken.

Video transcoding wordt niet ondersteund op ARM apparaten vanwege de beperkte rekenkracht. Bovendien kunnen sommige afhankelijkheden, zoals OpenSSL, compatibiliteitsproblemen hebben. Als uit de eerste analyse blijkt dat een typisch ARM-gebaseerd platform niet de vereiste prestaties zal leveren, kan een x64-platform worden overwogen.

De opslagprestaties van het platform moeten goed genoeg zijn voor de geplande belasting. Het is bijvoorbeeld bekend dat oplossingen zoals SATA-over-USB kunnen leiden tot slechte HDD-prestaties, onvoldoende voor het opnemen van het vereiste aantal camera’s.

De netwerkprestaties van het platform moeten goed genoeg zijn voor de geplande belasting. Het is bijvoorbeeld bekend dat oplossingen zoals softwaregebaseerde Ethernet-implementatie veel CPU-bronnen vergen en daardoor kunnen leiden tot framedrops tijdens het opnemen van camera’s of het streamen naar Cliënten, of andere problemen. Bovendien kunnen hardware modellen die ethernet implementeren via een USB hub minder bandbreedte hebben dan geadverteerd.

Het platform moet zijn uitgerust met een Real-Time Clock (RTC) hardware, en/of tijdsynchronisatie via het netwerk (b.v. met behulp van het NTP protocol) moet zijn ingeschakeld – om de VMS correct te laten functioneren, moeten de OS datum en tijd juist zijn. Als er geen hardware RTC is, en de enige datum/tijd bron is het netwerk, dan is het aan te bevelen dat het apparaat weigert op te starten als het de datum/tijd niet kan synchroniseren.

Storage

Zorg ervoor dat er genoeg ruimte op het bestandssysteem is voor de VMS om goed te kunnen functioneren. De server gebruikt de volgende opslaglocaties:

  • VMS installatie – binaries en dynamische libraries (.so bestanden)
    • Gelegen op /opt/<vendor>/mediaserver/
    • Noodzakelijke ruimte: kan worden berekend door de totale grootte van de respectievelijke bestanden in de distributie te meten met wat toegevoegde marge; hoe hoger de marge – hoe minder kans op problemen bij het updaten naar toekomstige versies. Over het algemeen wordt een marge van 30% aanbevolen.
    • Als er niet genoeg opslagruimte is op /opt, kunnen .so-bestanden via symlinks worden verplaatst naar een andere locatie, waaronder FAT32-opslag (maar in dit geval kunnen alleen bestanden die geen symlinks zijn, worden verplaatst).
  • Server-databasebestanden – slaat informatie op over camera’s en andere Servers, gebeurtenislogboeken, enz.
    • Stypisch geplaatst op /opt/<vendor>/mediaserver/var/; kan worden gewijzigd in het Server-configuratiebestand.
    • Behoefte aan ext4-bestandssysteem
    • Noodzakelijke ruimte: hangt af van het aantal camera’s en Servers in het VMS-systeem, maar over het algemeen wordt ten minste 500 MB aanbevolen.
  • Server Analytics-database – slaat Video Analytics-metagegevens op die worden gegenereerd door Analytics Plugins
    • Gewoonlijk te vinden in /opt/<vendor>/mediaserver/var/data; kan worden gewijzigd in het serverconfiguratiebestand.
    • Noodzakelijke ruimte: hangt af van of Analytics Plugins op deze Server in gebruik zijn, en hoeveel metadata de Plugins zullen versturen. Over het algemeen wordt 20% van de opslagruimte voor het videoarchief aanbevolen als op deze server Analytics Plugins worden gebruikt.
  • Serverlogboeken
    • Gelegen op /opt/<vendor>/mediaserver/var/log/
      • Kan worden verplaatst via mediaserver.conf.
    • Logs worden automatisch overschreven in een lus.
    • Noodzakelijke ruimte: ten minste 260 MB wordt aanbevolen.
    • NOOT: We hebben gemerkt dat op specifieke ARM-apparaten (bijv, Raspberry Pi 3), het interne flashgeheugen (Micro SD in dat geval) niet goed genoeg was om logbestanden op te slaan. Het systeem bevroor dan tot 4 seconden. We hebben aanbevolen om logs om te leiden naar dezelfde locatie als het video-archief voor dergelijke apparaten.
  • Video-archief – slaat de opgenomen video van camera’s
    • Typisch gelegen op /opt/<vendor>/mediaserver; kan worden gewijzigd in het Server-configuratiebestand.
    • De systeempartitie zal waarschijnlijk standaard worden beperkt van het opnemen, tenzij er ten minste 10 GB vrije ruimte is.
    • Intern flashgeheugen (eMMC) of SD-kaart
        • Bepaal hoeveel schrijfcycli het geheugen kan accepteren. Het videoarchief overschrijft zichzelf automatisch in een lus. De duur van een enkele schrijfcyclus kan dus worden berekend door de vrije ruimte te delen door de gecombineerde bitsnelheid van alle camera’s die op de server worden opgenomen.
        • Zorg ervoor dat de verwerkingscapaciteit van het geheugen voldoende is voor de gecombineerde bitsnelheid van alle camera’s die op de server worden opgenomen, met een veiligheidsmarge van 30%.
    • Interne HDD of SSD
        • Zorg ervoor dat de verwerkingscapaciteit van de schijf voldoende is voor de gecombineerde bitsnelheid van alle camera’s die op de server worden opgenomen, met een veiligheidsmarge van 30%.
    • Externe NAS
        • Zorg ervoor dat de feitelijke bandbreedte van de netwerkadapter voldoende is voor de gecombineerde bitsnelheid van alle camera’s die op de server worden opgenomen, vermenigvuldigd met 2 (omdat de camera’s hun streams vermoedelijk via dezelfde netwerkadapter naar de server sturen), met een veiligheidsmarge van 30%.
  • Bestanden voor het bijwerken van de servertoepassing
    • Om te kunnen updaten moet de servertoepassing de nieuwere versie downloaden en uitpakken.
    • Gelegen in /tmp/
    • Gevraagde ruimte: de totale grootte van het ingepakte distributiebestand van de server vermenigvuldigd met 2,6; dit is inclusief de marge. Meer ruimte kan worden aanbevolen om de kans op problemen met updaten naar toekomstige versies te minimaliseren.

  • OS tijdelijke bestanden
    • Typisch geplaatst op /tmp/
    • Gevraagde ruimte: ten minste 100 MB wordt aanbevolen, exclusief de benodigde ruimte voor de Server applicatie update bestanden (zie boven).

De meeste van de hierboven genoemde zaken kunnen worden toegewezen om te worden opgeslagen op een andere locatie in het Server configuratie bestand: /opt/<vendor>/mediaserver/etc/mediaserver.conf

Omdat de typische SD-kaart opslag niet betrouwbaar is en bekend is om te falen tijdens intensieve lees-schrijf operaties, raden wij aan om het OS te installeren en het video archief op een harde schijf (of schijven) op te slaan. Als een SSD/harde schijf of SD-kaart wordt overwogen voor de opslag van het videoarchief, beoordeel dan de capaciteit voor meerdere herschrijfbewerkingen aan de hand van de typische bitrate van een gewenste ondersteunde camera vermenigvuldigd met het gewenste aantal ondersteunde camera’s.

Bijv. voor de Raspberry Pi 3 B+:

    • Gebruik een USB-SATA-adapter en externe harde schijf voor het archief.
    • Installeer het besturingssysteem (Raspbian) op een externe harde schijf. Zie het artikel Hoe uw Raspberry Pi opstarten vanaf een USB-apparaat voor massaopslag voor details. Dit proces moet worden geautomatiseerd, afhankelijk van hoe ARM-apparaten zullen worden gedistribueerd: met of zonder harde schijf:
      • Met harde schijf – maak een voorgeconfigureerde image met VMS geïnstalleerd en kloon deze naar harde schijven.
      • Zonder harde schijf – u zult een set scripts moeten maken die de harde schijf formatteert, het besturingssysteem kopieert en alle noodzakelijke tweaks uitvoert. Dit is een vrij complexe en tijdrovende taak.

Kies Linux Flavor

Er zijn gewoonlijk verschillende opties voor Linux OS op een bepaalde NVR:

  • “Busybox” – alleen Linux kernel en de basis set van command-line tools; gebruikt op NVR’s met relatief lage prestaties zoals “edge” camera’s (camera’s waar de VMS Server op draait).
  • Standaard Debian, of een van zijn smaken zoals Ubuntu.
  • Gemodificeerde versie van Debian of een andere Linux-distributie, meestal gewijzigd door de leverancier van het apparaat (bijv, Raspbian voor Raspberry Pi).

In het algemeen wordt aanbevolen om een Linux-variant te kiezen die de native keuze is voor het platform waarop de NVR is gebaseerd. Bijvoorbeeld, bij het ontwikkelen van een NVR vergelijkbaar in hardware als Raspberry Pi (of zelfs met behulp van de exacte Raspberry Pi moederbord), is het aanbevolen om Raspbian te kiezen.

Als er verschillende Linux-distributies met verschillende sets van pakketten beschikbaar zijn voor het apparaat, wordt de minst zware aanbevolen. Als er bijvoorbeeld geen plannen zijn om GUI’s op de NVR te tonen, is er geen behoefte aan het X Window System.

Vergewis u ervan dat de Linux-versie en de bijbehorende set pakketten voldoen aan de eisen van het VMS. Raadpleeg voor op ARM gebaseerde apparaten de OS-gegevens die worden vermeld in het ARM-ondersteuningsbeleid.

Installeer de servertoepassing

Nadat de NVR is geladen met een geschikt Linux OS, moet de servertoepassing op de NVR worden geïnstalleerd. Er zijn in principe twee opties:

  1. Voor op Debian gebaseerde OS: installeer het officiële .deb-pakket van de VMS-distributie met behulp van dpkg.
  • Zie de gedetailleerde instructies voor het installeren van het VMS op een apparaat: ARM SBC-installatie-instructies
  • Voor een op Busybox gebaseerd besturingssysteem: pak de vereiste bestanden uit het VMS .deb-pakket uit in de gewenste map en zorg handmatig voor de volgende aspecten:
    • Hoe de Server bij het opstarten zal worden gestart en als system.d-ondersteuning van de distributie niet geschikt is?
    • Waar zal de Server .so-bibliotheken die in de geïnstalleerde Linux ontbreken, naartoe brengen?
    • Wordt het standaard VMS automatische updatesysteem ingeschakeld?

    Voor minder typische OS setups kan een combinatie van optie 1 en 2 nodig zijn.

    Extra mogelijkheden implementeren

    Typisch is een NVR niet alleen een standaard Linux computer met de Server applicatie geïnstalleerd – het biedt vaak extra mogelijkheden voor de gebruiker:

    • Hardware knoppen, LEDs of zelfs embedded displays.
    • Een webinterface waarmee u de NVR verder kunt aanpassen dan alleen het instellen van de servertoepassing via de eigen webinterface, zoals
      • networking-opties: IP-adres, subnet, enz.;
      • systeemtijd en tijdzone;
    • Video-uitgang (bijv, HDMI) die een GUI toont of ten minste een welkomstscherm met basisconfiguratiewaarden zoals het IP-adres van de NVR;
    • Aanvullende software die parallel aan de VMS draait, zoals een configuratiedaemon of een backend voor videoanalyse.
      • Als de aanvullende software een wachtwoordgebaseerde authenticatie voor de eindgebruiker heeft, overweeg dan om wachtwoordsynchronisatie te implementeren, zodat het wachtwoord van de VMS-server altijd hetzelfde is als dat voor de aanvullende software. Als de gebruiker ssh krijgt aangeboden om toegang te krijgen tot de NVR, overweeg dan om ook het wachtwoord daarvan te synchroniseren.
    • Extra tweaks, zoals het minimaliseren van video (GPU) geheugen. Stel bijvoorbeeld voor de Raspberry Pi 3 B+ het GPU-geheugen in op 16 MB. Zie de Raspberry Pi documentatie voor details.

    Om dergelijke functies te implementeren, kan het nodig zijn om scripts te schrijven of aan te passen die de Server applicatie besturen, of om extra programma’s te schrijven in C/C++.

    Tijdsynchronisatie

    Zorg ervoor dat de NVR een ingebouwde CMOS batterij heeft om te voorkomen dat de klok wordt gereset in het geval van stroomuitval. Bijvoorbeeld, Raspberry Pi 3 B+ heeft geen CMOS batterij aan boord. Als het apparaat opnieuw wordt opgestart, zal de tijd opnieuw worden ingesteld en dit zal resulteren in het foutief schrijven van het archief. Om dit te vermijden, zijn er enkele opties:

    • Zorg ervoor dat het verbonden is met het internet om de tijd te synchroniseren.
    • Als het een gesloten netwerk is, zult u een NTP-server moeten instellen.
    • Voeg een Real-Time Clock (RTC) module toe aan het bord en configureer deze vooraf. Zie Een real-time klok aan uw Raspberry Pi toevoegen.

    Een behuizing voor uw NVR vinden/bouwen

    Het is noodzakelijk een behuizing te vinden of te ontwerpen waarin alle hierboven vermelde hardware past.

    Uitgebreide belastingstest uitvoeren

    Om er zeker van te zijn dat alles werkt, is het noodzakelijk een intensieve stresstest uit te voeren om er zeker van te zijn dat er geen oververhitting optreedt of onderdelen niet defect raken. De test moet alle systeemcomponenten kunnen belasten, zoals CPU, geheugen, harde schijf(en), netwerk en Wi-Fi (indien nodig), enz.

    Ondersteuningsbeleid opstellen

    De NVR zal aan eindgebruikers worden geleverd, en zij zullen zeker enige vorm van technische ondersteuning nodig hebben. Het ondersteuningsteam van de VMS-leverancier kan dergelijke diensten niet leveren aan de eindgebruikers, dus moet er een beleid worden ontwikkeld voor het bieden van dergelijke ondersteuning, zoals een online ondersteuningsdesk, een gemeenschapsforum, of iets dergelijks.

    Wanneer het ondersteuningsteam van de NVR-verkoper er zeker van is dat het specifieke probleem geen verband houdt met de specifieke kenmerken van de NVR zelf, maar eerder een probleem is in het VMS, kan het de VMS-verkoper om ondersteuning vragen overeenkomstig het hierboven vermelde ARM-ondersteuningsbeleid, en vervolgens het resultaat van dit ondersteuningsgeval gebruiken om te voldoen aan het ondersteuningsverzoek van een eindgebruiker.

    Vragen

    Heeft u vragen over dit onderwerp of wilt u uw ervaring delen met andere community-leden of ons team, bezoek dan onze support community of neem contact op met uw lokale reseller.

    Geef een antwoord

    Het e-mailadres wordt niet gepubliceerd.