Ubiquiti USG – spoofing MAC address of the WAN port

In a situation, where spoofing or cloning the MAC address of the WAN port is something you need to do, it’s usually needed to be done immediately after setup, yet on the Ubiquiti USG there is no way to do it in the controller’s GUI (as of January 2019), so I decided to write up quick step-by-step recipe since I haven’t found one simple enough for people entirely new to the Ubiquiti’s ecosystem (like I was), its Controller and whatnot. Though I do assume you’ve used ssh before.

So we have the Ubiquiti UniFi Security Gateway (USG) and we want to spoof (clone) MAC address of the WAN port – usually when you need to clone the address of the old router (or else the internet won’t work).

How to spoof MAC address of WAN port on the USG:

1. Log in directly into the USG using ssh

You can use Putty on Windows or Terminal on UNIX/macOS.

To log in, use the credentials created during initial setup (these are different from UniFi Controller login credentials – i.e. not the email):

ssh admin@192.168.1.1 (I am using Mac & Terminal)

After login, you will be greeted by a UniFi text art, where there is one sentence worth noting: *NOTE*: Configuration changes made here are not persistent. They will be overwritten by the controller on next provision.

(It basically says that anything we’ll do here won’t last past the device’s next full reboot. I did not noticed that the first time and the WAN’s port MAC address returned to default when the USG’s rebooted after the next firmware update few weeks later and suddenly the internet was down and I didn’t know why.)

2. Change the MAC address temporarily

Theoretically you can go directly to step #3, but this is a good step to make sure you are cloning the correct MAC address to the correct physical port, and also it works immediately without the need to reboot the USG and Controller.

So once in the command line, issue this sequence of commands:

configure
set interfaces ethernet eth0 mac 10:7B:EF:2F:3C:38 (of course change the MAC)
commit
save
exit

The USG has three ports, where the WAN port (the first one) is eth0, you can also change the MAC address of the other two ports as well by doing eth1 (the default LAN port) or eth2 (LAN/WAN).

Now check if the new MAC address works (I did it simply by observing if the internet started pouring in… :D). If it does, you can proceed to the final step #3:

3. Save the settings for good

The quickest way is simply to take this piece of json, edit the MAC address (to match the one above) and then save it somewhere as config.gateway.json file.

{
    "interfaces": {
        "ethernet": {
            "eth0": {
                "mac": "10:7B:EF:2F:3C:38"
            }
        }
    }
}

It is recommend to double check the validity of the file, e.g. on jsonlint.com to avoid any issues.

Now place this file in the UniFi Controller’s site folder. Depending on where you installed the controller, this most likely will be the default folder in these locations:
* Windows: C:\Users\<username>\Ubiquiti UniFi\data\sites\default
* Linux: /usr/lib/unifi/data/sites/default/
* Mac: ~/Library/Application Support/UniFi/data/sites/default/
* Cloud Key: /srv/unifi/data/sites/default/

That’s it. Now the MAC setting will be loaded even after the reboot. You can test and verify that everything works as it should by forcing provision (described here), tl;dr: UniFi Controller Devices > USG > Config > Manage Device > Force provision, or by simply rebooting the USG.

The json file is basically for pieces of settings that cannot (yet) be done through the UI. It is all well described in the official documentation.

Levná 3D tiskárna Anet A8 – první zkušenosti

Lze s nulovými znalostmi 3D tisku složit tiskárnu za jeden večer včetně „úspěšného“ prvního tisku? Tak určitě!

Předem podotýkám, že toto nebude vyčerpávající návod ani recenze. Po 3D tiskárnách koukám už několik let (koukám ve smyslu „Vím, zhruba kolik stojí aktuální Průšova tiskárna, a pořád je to moc“), ale vzhledem k tomu, že nemám zase tak moc co tisknout, nemělo smysl do tiskárny investovat horentní sumy.

K čemu vůbec 3D tiskárnu?

To je velmi dobrá otázka! Sám se snažím doma clutter udržovat na minimální úrovni, co nepotřebuju, to hned dávám na bazoš, nechtěl jsem tedy 3D tiskárnu jen proto, abych mohl tisknout blbosti jen „protože můžu“.

Ale občas třeba vidím, jak si někdo vytiskne proprietární redukci na SSD disk do staršího serveru (jakkoliv stahovací pásky fungují taky dobře, tohle by se mi hodilo náramně).

Držáčky, redukce, krytky. Nebo při každém leštění auta jsem přemýšlel o tom, jak si jednou vytisknu stojánek na lahev leštící pastu s odkapávačem (to je taková hodně specifická potřeba, já vím).

Už 4 roky mě v autě vytáčí moje onboard kamera. Tovární přísavný držák kameru drží asi 10 centimetrů od skla, takže se zbytečně klepe. Přitom by mohla být doslova půl centimetru od skla, pevně držet na přesném kousku plastu. Paradoxně i pro moji specifickou kameru (historická G1W-C) už někdo potřebný držák vymodeloval a umístil na Thingiverse.

Nebo jednou jsem dal 500 Kč za plastový díl k tepovači, který by ve filamentu vyšel na asi dvě koruny i se 100 % infillem.

Prostě – věděl jsem, že kdybych tiskárnu měl, občas bych něco vytisknul, ale zase nic, pro co by stálo za ni utratit 20 tisíc.

Takže co s tím?

Mezitím mi úplně uniklo, že už pár let se tiskárny dají pořídit za cenu pod $200… A tak jsem jednou náhodou narazil na YouTube na video, které recenzovalo tisk jedné takové tiskárny.

Když jsem vedle sebe viděl výtisk z této levné tiskárny a nějakého semiprofi modelu, video jsem v podstatě hned zavřel a na AliExpressu objednal tiskárnu Anet A8 z německého skladu za $140. To je 3D tiskárna za 3 400 Kč!

V neděli večer jsem ji objednal a v pátek byla doručena, což na třetí prosincový týden není vůbec špatný!

Pokud jste Anet A8 ještě nekoupili, tak to ani nedělejte

No, takže tento nákup byl hodně impulzivní. Tiskárna byla zaplacená a já jsem začal hledat, co že jsem to vlastně koupil. A nebyl jsem zklamaný, ale pokud bych věnoval těch pár hodin drobnému hledání a zkoumání, asi bych si připlatil několik málo desítek dolarů (v listopadu 2018 cca +$50) a koupil místo toho tiskárnu Creality Ender 3 Pro, která alespoň z toho mála, co jsem pochytil, má solidnější konstrukci bez nutnosti větších modifikací hned po složení a celkově to vypadá víc jako tiskárna, a míň jako hračka.

Ale co, na cestě už byla Anet A8. Navíc, vždycky jsem měl rád Merkur a stavebnice, a to je přesně to, co tiskárna Anet A8 je. Že s tím potenciálně pár víkendů zabiju jsem věděl a těšil se na to.

Když mi přišla notifikace, že byla tiskárna v pátek doručena, hned jsem v Brně koupil kilo filamentu (TS Bohemia měla oranžový skladem na Veveří), domů to vzal přes IKEA, kde jsem koupil dva Lack stolky na „printing box“ a večer jsme se s bráchou pustili do skládání.

Sice jsem si myslel, jak si přes týden něco nastuduju, ale nedostal jsem se k tomu. Z článku, které jsem zběžně pročetl hned po objednání si jen pamatuju zmínku, že „nějaký díl ve tvaru H je v návodu obráceně a je fajn ho namontovat rovnou správně“. Zpětně musím říct, že těch chytáků tam bylo víc a zrovna tady tento díl by byl ten nejmenší problém z ních.

Dojmy ze skládání

Jak už jsem zmínil, k tiskárně jsem si předem nic nenastudoval, jediné, co jsem si z článku Martina Malého pamatoval, že „v návodu je nějaký díl ve tvaru H obráceně“ (tady).

Z krabice jsem všechno vysypal, prvních pár kroků jsme jeli podle přiloženého návodu a potom přešli na video výrobce.

Moje tipy ke skládání v bodech

(podrobněji bude v samostatném článku)

  • Rám tiskárny je z černého akrylového plastu, který je polepený kartonovou fólií. Ta se dá sundat. My jsme na to přišli asi hodinu po započení skládání. Všechno zpět rozmontovat bylo hned, ale dostat tu fólii ze všech dílů trvalo snad hodinu ve dvou! Příště bych to snad i nechal v tom „kartonovým vzhledu“ a nic nesloupával. :D
  • Ten „díl ve tvaru H“ je pojezdový rám, na kterém je upevněn hotbed, a v návodu (i ve video verzi na YouTube) ho skutečně montují obráceně.
  • Kde to šlo jsem na šrouby používal lepidlo (medium strength threadlocker). Nevím, jestli to má souvislost, ale krátce po zprovoznění mi popraskaly některé akrylátové díly, na které se toto lepidlo dostalo – konkrétně držák Y-stepperu a jednoho ze Z-stepperů. Nejde o žádné velké drama, díly jsem si vytiskl znovu (v tom je docela kouzlo 3D tiskárny); zpětně jsem ale zjistil, že za to doopravdy mohou výpary z lepidla na šroubky, které způsobí zkřehnutí akrylátu, který potom popraská. Lepidlo na šrouby proto na Anet A8 nepoužívat!
  • Hot bed má na sobě z výroby krycí pásku, tu nutně nesundávejte, dá se na ni docela dlouho tisknout. Hotbed je jinak z hliníku, a na něm tiskový materiál (alespoň PLA) nedrží bez lepidla. A s lepidlem je všude spousta bordelu. A opravdu širokou krycí pásku se mi o víkendu na vesnici nepovedlo nikde sehnat. Když se mi to potom povedlo, tak se ukázalo, že ty nejlevnější většinou vydrží jenom teploty do cca 40 °C (drží i při 60 °C, jen je potřeba pásku po zahřátí znovu uhladit a přilepit).
  • Ve dvou jsme tiskárnu složili v ležérním tempu (vč. cesty pro pizzu) před půlnocí, odhadem jsme to tak ve dvou stihnuli za zhruba 4 hodiny. Myslím, že by to šlo i rychleji, pokud bychom sundali fólie z plastů hned, a ne v půlce skládání (nebo se na to vykašlali úplně).
  • Díl s extruderem a hotendem je předsložený, ale doporučuju před prvním tiskem rozebrat a složit pořádně (postup zde, finální dotažení je ale vhodné udělat při provozní teplotě, u toho opatrně – nejen na popáleniny, ale také na zlámané díly); předejte tak úniku filamentu horní stranou hotendu, což se u mě projevilo už po cca 20 hod tisku. Filament potom teče horní stranou pryč a když je ho hodně, tak ukápne, což s trochou smůly může vést i ke zničení aktuálního tisku.
  • Závitové tyče namontujte tak, aby byly zarovnané v otvoru na rámu (posunutím ve flexibilních držácích na krokových motorech). Většinou co jsem viděl, tak lidem plandají ve vzduchu a potom na to zbytečně tisknou kontraproduktivní „úchyty“.

Co bych při skládání znovu udělal jinak

  • Předem bych si našel vhodná instruktážní videa. Ty od výrobce jsou často nepřehledné, často je na nich špatně vidět orientace dílu.
  • Po složení bych šel spát.

Ale kdo by nadšením usnul? Nějakou náhodou jsem věděl, že pro 3D tisk je potřeba precizně vyrovnaná tisková plocha vůči vytlačovací trysce (extruderu). Dokonce jsem věděl, jak to udělat. Bohužel jsme při skládání ke konci už ani nejeli podle manuálu – závěrečná práce jsou už jen šroubování, elektroinstalace a cable management (což je něco, co mě z nějakého důvodu vždycky strašně baví).

Už toho není moc co pokazit, bohužel samým nadšením jsme tiskárnu dodělali a spustili. Já jsem vyrovnal tiskovou plochu a potom na tiskárně dal Auto Home, což zarovná všechny osy na 0. Co mi nedošlo je, že výškově posouvatelný Z přepínač (který osu Z zastaví předtím, než tryska nabourá do tiskové plochy) je úplně dole, o několik milimetrů pod tiskovou plochou, takže při Auto Home se tryska neohroženě blížila k tiskové ploše – zastavil jsem ji sice včas než stihla napáchat nevratné škody (vytrhnutím ze zásuvky), ale strhla část krycí pásky, na kterou by se jinak dalo tisknout.

Nevadí, přepínač jsem zvýšil do odpovídající polohy, znovu vyrovnal tiskovou plochu a o půl jedné ráno strašně moc chtěl ještě něco vytisknout než půjdeme spát.

První tisk

Jedna věc, kterou jsem si nenastudoval vůbec, byla příprava tiskových dat. Věděl jsem, že existují nějaké slicery, ale to bylo tak všechno. O půl jedné ráno nebyla vůbec energie ještě něco podobnýho zkoumat. Na kartě od výrobce byly jenom soubory ve formátu .stl (model připravený k naslicovaní). Rychlý Google mi říká, že .stl soubory se přímo netisknou, ale přes krájecí program se připraví do formátu .gcode. Aha. Tak znovu google a „xyz cube test print filetype:gcode“. Stahuju první soubor, co najdu, nahrávám na kartu a spouštíme tisk, zatím na přiložený kousek bílého filemantu.

Ono to žije! Samozřejmě, soubor připravený s neznámými nastaveními pro neznámou tiskárnu byl předurčen k neúspěchu. Ale k našemu překvapení, první vrstva filamentu se krásně uchytila na podložku, tryska jezdila a kostka se po 20minutách skutečně zjevila na podložce! Samozřejmě jsme tisk upřeně sledovali celých 20 minut. :D

První dojmy

V sobotu a v neděli, tedy první dva dny, jela tiskárna v podstatě nonstop (jen přes den, přes noc bych ji bez dozoru puštěnou nenechal kvůli tristní elektroinstalaci). To se dá ale různými úpravami řešit a mám je v plánu.

A musím říct, že i bez jakýchkoliv úprav nebo modů tiskne Anet A8 opravdu skvěle. Vzhledem k mým skromným potřebám to platí dvojnásob. Samozřejmě, pořád se učím, ale hned první a druhý den jsem vytisknul kromě testovacích tisků i pár užitečných dílů (z toho tři na samotnou tiskárnu – nový výdech pro chlazení právě vytlačeného filamentu, jeden prasklý držák motoru a malé tlačítko pro uvolňování filamentu).

Tiskárna je poměrně hlučná. Tomu se opět dá pomoct.

Někdy příště shrnu moje úpravy a tipy k vylepšení.

Výdaje

  • Tiskárna Anet A8 s auto-leveling senzorem z německého skladu (není clo ani DPH): $150.89. Placeno TransferWise kartou pro dobrý kurz: 3419 Kč
  • 2x stolek IKEA Lack: 398 Kč
  • 1 kg Filament Gembird: 371 Kč

Moje další související články

Další české články
* Roman Mikulka – pravděpodobně nejobsáhlejší a nejlepší české shrnutí, spousta tipů pro modifikace (i upozornění na ty kontraproduktivní)

Zkušenosti s nejlevnější 4K televizí Changhong UHD43E6000ISN

Letos se mi podařilo na eBay vydražit použitou Apple TV 4K jen za $85, kterou jsem v Park City používal jako přehrávač Netflixu, YouTube a pro streamování hudby z mobilu do televize. No, z Park City jsem na konci léta zase odjel, ale Apple TV mi zůstala.

K čemu televizi?

Proto jsem začal pokukovat po nějaké televizi. Doma mám kompletní domácí kino (FullHD projektor, 5.1 zvuk) a na můj studentský byt se mi nechtělo kupovat televizi za 10+ tisíc, abych se párkrát týdně kouknul na pár epizod (Přátele na usnutí si můžu pustit klidně i z telefonu). Jinak jsem se na seriály koukal klidně na iPadu Mini, případně z 24“ monitoru. Nejsem v tomhle ohledu nijak náročný, ale když jsem takhle loni zkouknul celé Stranger Things a potom si je pustil znova doma na projektoru (130“ obraz), tak to přecejen byl zcela jiný (mnohem lepší) zážitek, než na 7“ tabletu. A od té doby jsem žil s tím, že ta velká úhlopříčka má přecejen něco do sebe (to jsem mohl tušit i dřív, přecejen ten projektor jedu už přes 8 let :D).

No tak jsem pořád po těch televizích pokukoval a zajímalo mě jedno jediné – cena. Jestli bude mít nebo nebude mít HDR? Jestli bude mít 38, 40 nebo 43 palců? To mi bylo v podstatě úplně jedno. Všechno je totiž skoro 2x tolik co má můj monitor, a všechny ostatní funkce bude dodávat právě Apple TV. Televize samotná je potom jenom „monitor“. To už asi i tušíte, že k televizi nikdy nebude připojená anténa ani kabelovka a jestli umí DVB-T2 (to je to, co se teď tak hodně řeší, ne?) mi bylo ukradený už úplně zcela.

Nejlevnější 4K televize vůbec

Nejlevnější 4K televize byly v říjnu 2018 od 8000 Kč a nahoru, a to od značek, o kterých jsem slyšel jenom hodně okrajově. Těch 8 tisíc bylo navíc zhruba tak maximum, co bych za to byl asi ochotný dát, ale v tu dobu ne za televize pochybných značek. No a potom jsem si tak proklikával záložky („Mall 4K TV, od nejlevnějších“ apod.) a za 6990,- vyskočila televize, tentokrát od značky, o které jsem v životě neslyšel: CHiQ. To už jsem si řekl, že asi stojí za vyzkoušení a hned druhý den jsem si na byt vezl 43palcovou televizi Changhong UHD43E6000ISN.

Zkušenosti a dojmy

Pro pořádek předem dodám:

  • SD = 576p = 720×576 px
  • HD Ready = 720p = 1280×720 px
  • Full HD = 1080p = 1920x1080px
  • UHD/4K = 2160p = 3840x2160p

No ve zkratce: Z televize jsem docela nadšený.

Obraz je super (krásně jemný, jak jinak). U stejně velké FullHD televize jsou ty pixely někdy prostě vidět. U 4K už vidět nejsou nikdy, a dělá to obrovský rozdíl. Je to jako mít vedle sebe iPhone 3Gs a iPhone 4. Spousta lidí tvrdí, že na takto malých úhlopříčkách při běžných pozorovacích vzdalenostech nelze rozdíl 4K vs FullHD rozeznat, z mojí zkušenosti rozdíl ovšem vidět je, což je jeden z hlavních důvodů, proč přes požadavek na 4K u mě nejel vlak, navzdory tomu, že úplně všchno mám maximálně ve FullHD.

Televize asi ani nemá vyhlazování obrazu (dopočítávání chybějících snímků do 60 Hz z např. 23,976 fps zdroje). Za mne mi to tam vůbec nechybí, mám zkušenost s TruMotion na hodně drahé LG televizi, kde potom precizně vymasterovaný film vypadá jako laciná telenovela. Osobně jsem citlivý i na drobné artefakty, které to při dopočítávání vytváří (je to typ artefaktů, který normální člověk neuvidí když mu je 3x po sobě ukážete, ale práce s videem a hraní si s hračkama jako Twixtor, kdysi oblíbený plugin pro falešné slow-motion – tedy právě pro dopočítávání chybějících snímků, vás poznamená).

Podsvícení je relativně rovnoměrné, v tmavých scénách je sice vidět lehce světlejší část vlevo dole, ale rozhodně nic co by mě trápilo, a už vůbec ne u televize za tuto cenu. Černá je opět velmi ucházející, bohužel mám tu smůlu, že můžu přímo porovnávat s FullHD OLED televizí, takže v tomto srovnání to nevyjde nikdy dobře, ale na „takovýto domácí koukání“? Úplně v pohodě.

Pozorovací úhly ze stran jsou dobré (ne nejlepší), při pohledu zespoda je to o něco horší, ale dá se to snadno vyřešit správnou polohou televize, není to žádná tragédie jako kdysi třeba první TN LCD monitory.

Zvuk je klasický televizní, nenadchne ani neurazí. Časem to asi vyřeším nějakým soundbarem (víc do paneláku asi nemá smysl). V USA jsem měl LG SK1, což se koukám že je nejlevnější (značkový) soundbar vůbec, ale oproti televiznímu zvuku to bylo jako nebe a dudy, bohužel nakonec se mi nevešel do kufru a ještě před odjezdem jsem jej prodal.

Co se týká vstupů a výstupů, tak mě hodně překvapilo (vzhledem k ceně), že je všeho dostatek – několik HDMI portů, nějaký vstupy na antény (nebo co), LAN port, dvě USB, výstup na sluchátka, cinch vstup, výstup na optický zvuk, a dokonce i legacy SCART vstup. Sám sice využiju max. dvě HDMI, ale hodí se to! Plus to umí i WiFi.

Nožičky jsou z kovu a stabilní – co jsem si totiž před koupí nezměřil, byl rozměr komody, na které mi televize stojí. Stojí tam s rezervou asi půl centimetru z každé strany; ale televize stojí naprosto stabilně.

Nastavení televize a spolupráce s Apple TV

Po vybalení jsem nemusel nastavovat skoro nic, jen jsem si přizpůsobil barvy obsahu a ostrost obrazu. A ještě malá poznámka k poměru stran, pokud by to někomu pomohlo: Při poměru stran nastaveném na 16:9 byl obraz lehce ořízlý (odhadem chybělo možná 50-100 pixelů z každé strany), po nastavení poměru stran na PTP (Pixel-To-Pixel) už jsou ale všechny pixely tam, kde mají být.

Televize jde kompletně ovládat ovladačem od Apple TV, jediné co se muselo zprovoznit extra bylo vypnutí televize při uspání samotné Apple TV (je potřeba v nastavení HDMI_CEC povolit defaultně vypnuté Auto Standby).

Nožičky jsou z kovu a stabilní – co jsem si totiž před koupí nezměřil, byl rozměr komody, na které mi televize stojí. Stojí tam s rezervou asi půl centimetru z každé strany; ale televize stojí naprosto stabilně.

Full HD vs 4K obsah

No a pokud by někdo váhal, co se týká rozdílu mezi FullHD (1920×1080) a 4K (3840×2160) obsahem…

Na této malé uhlopříčce není rozdíl nijak výrazně vidět (jako by tomu asi bylo např. u monster televizí nad 60 palců).

Na Netflixu je toho ve 4K docela hodně a třeba takový Breaking Bad nebo Stranger Things ve 4K jsou boží. Ale i kvalitní FullHD obsah vypadá hodně dobře; a když se na to člověk soustředí, tak je tam zřetelná mírná ztráta ostrosti oproti 4K videu.

Rozhodně nemusíte nutně začít všechno shánět ve 2160p, ten rozdíl je řádově menší, než kdysi SD obsah na FullHD televizích, kde byl přechod ze zdrojového 576p videa na 720-1080p brutálním krokem k lepšímu.

U přechodu z 1080p (FullHD) na 2160p (4K) je tento rozdíl spíš jen decentní a musíte se snažit ho vidět. Možná půjdu i tak daleko, že řeknu, že lepší zážitek bude z kvalitního FullHD zdroje, než z prasácky zkomprimovaného 4K.

Takže suma sumárum, za mne mohu jako „zobrazovač pro nenáročné“ doporučit.

Cheap FullHD Chinese IP Cameras from AliExpress – review of a bunch

tl;dr:

I’ve been buying bunch of Chinese IP cameras to see which one would be the best “bang for the buck”. I only had two requirements: PoE and FullHD resolution (and ONVIF, but that’s pretty much standard today).

I’ve tried 7 different cameras, and the best one that I tried and can recommend is this one for $23 (1080P (Black) and 2.8mm or any focal lenth you need).

For more info about this one, scroll down to #5.

ts;wm: (Too short, want more)

This is not a comprehensive review, just an overview of the cameras I tried out so I know which cameras I can buy again or recommend; and which ones I wouldn’t buy again. I don’t care about any of the camera’s features as I am just taking their video stream and feeding it into ZoneMinder-based DVR.

For privacy reasons I won’t post sample images from the cameras since I have them already mounted in place.

Security concerns regarding noname Chinese IP cameras

People usually freak out when I barely mention that I am using noname Chinese IP cameras for my home security system. I sort of understand why, but there is no reason.

I’ve created a separate group of objects (= the IP cameras) in my firewall which does not have internet access, so the cameras cannot call home in any way. They do try, but it is not a lot of traffic anyway. I’ve come to believe that often they only try to sync time, since some of the servers I’ve pulled from the log of blocked connections were time servers in China (which I have found later, that in the settings some of the cameras have automatic time sync set up using a random university servers in China). By the way, this can be bypassed by simply setting the time server to my local ZoneMinder server which also has runs ntp service, so the cameras can have correct time even without Internet. (Which is not really important in the first place, but I am switching day/night mode on one of the cameras manually by time, which is where it becomes useful.)

If you are looking for a single camera packed with functionality (like with iOS app and whatnot) that you may even want to expose on the Internet for remote access, then I would probably suggest staying away from these Chinese devices.

But if you simply only need a “network lens” from which the NVR of your choice (ZoneMinder, Synology NAS and many, many others) can grab video stream, read on.

Cameras are in the order as I bought and tried them. FPS can be lowered on all of them in the settings. (See the end of this article.)

1. ???Brand??? (Legacy review), WiFi+RJ45, IR, AC, 1280×960, $34

Model number: N/A (sold it)
ZoneMinder settings:
Source Type: Ffmpeg
Source Path: rtsp://(ip-address):554/11
Remote Method: RTP/RTSP

This is the first camera I bought, naively thinking WiFi is good enough for streaming (it is not). The image quality is terrible and it gets even worse at night when the IR filter rolls in – the image gets so blurry I can’t even read a license plate on my own parked car right under the camera.

This specific model is not in stock anymore so I can’t find any details on the chip and sensor etc. but it doesn’t matter because I wouldn’t be buying again anyway. I also recommend staying away from WiFi. Just go through the trouble, buy a roll of cat5e and connect it the old school way.

2. Revotech, FullHD with AC power (ASDK Store)

AliExpress, P/N N/A (sold it), bought for $21.28

ZoneMinder settings:
Source Type: Remote
Remote Protocol: RTSP
Remote Method: RTP/RTSP
Remote Host Name: (ip-address)
Remote Host Port: 5544
Remote Host Path: /live0.264

Can’t confirm the model but they claim it’s I6032B-V200 that has a Hi3518E V200 chip with 2363 sensor (Hi3518EV200+2363).

Dynamic range is not the greatest (on sunny days sometimes the sun-lit part is way blown and over-exposed), but otherwise, the image quality is so-so good during the day, but shit-fuck grainy at night when running on the IR light.

Would not buy again, I sold it already and swapped it for a POE camera.

3. Besder, FullHD with AC power (Besder Official Store)

URL

ZoneMinder settings:
Source Type: Ffmpeg
Source Path: rtsp://(ip-address):554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp
Remote Method: RTP/RTSP

Little more expensive than the previous one, it was $29. It has a Hi3516C chip with an unknown sensor. The image is great. At night the image gets grainy but it’s way better than the one above.

Has nice metal housing and the four IR LEDs look powerful (can’t confirm how powerful because I have this camera aimed on a gate lit by street lamp).

Despite all of this, I wouldn’t buy this specific camera again. I don’t see the benefit of paying $10 extra for the metal housing; the cameras with plastic housing serve me just as well. Though, this one does look more professional, but for me the goal is that no one should notice the cameras at all, let alone judge how “professional” my security system is based on that. (Not very, I guess.)

4. Misecu dome camera, POE, FullHD (Misecu Official Store)

URL, model IPC-DM07-20SC (48V POE 1080P + 3.6 mm), bought for $30.12.

ZoneMinder settings:
Source Type: Ffmpeg
Source Path: rtsp://(ip-address):554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp
Remote Method: RTP/RTSP

My first PoE camera! #yay

The chip could be Hi3518 (Hi3518EV200), but it is hard to find out. The seller has this in the data sheet for different Full HD camera (IPG-50HV20PES-S). The sensor is not specified.

However, the image quality is by far the best I’ve seen so far and there is no noise at night! During the day, the image is maybe a little over sharpened but nothing major. Being a dome camera it was a little finicky to get it positioned, I thought it would be easier to set the angle.

The “camera ball” (not sure how to describe but the camera itself is actually a ball when taken out of the dome housing) and the housing are well finished and made from metal. The seller says it’s “vandal proof” and I am inclined to say this is not too far fetched when properly fastened to the wall/ceiling (I think it had four screw holes at the base, which’d make it rock-solid with proper fasteners).

I would definitely consider buying this one again (especially if I figure out what is the best use-case for dome cameras instead of regular bullet body cameras).

5. Besder camera, POE, FullHD (Besder Official Store)

URL, model 6024PB-IP201 (48V PoE 1080P + 2.8mm), bought for $25.27

ZoneMinder settings:
Source Type: Remote
Remote Protocol: RTSP
Remote Method: RTP/RTSP
Remote Host Name: (ip-address)
Remote Host Port: 554
Remote Host Path: user=admin&password=&channel=1&stream=0.sdp?real_stream

Chip Hi3518EV200 with a 1/2.7″ SC2135 sensor.

For $25 this is the best value for money I’ve got so far. Image quality is comparable to the dome camera above, and it doesn’t seem to be as over-sharpened. On the default quality setting (Medium) there is visible compression in the stream, but it goes away when set to High.

Worth noting is also the fact that despite cheapo plastic case I have this camera in the wild (on a tree, actually) exposed to all kinds of weather, and so far it holds up fine! It survived summer thunderstorms and now going through its first winter. So far, so good. (Edit July 2019, over a year after set up: Still holds up fine.)

6. Two Revotech cameras, one with Sony chip and one “regular”

URL, models I6032B-V200-POE ($24.29) and I6032B-Sony-POE ($33.61)

ZoneMinder settings for the cheaper model (I6032B-V200):
Source Type: Remote
Remote Protocol: RTSP
Remote Method: RTP/RTSP
Remote Host Name: (ip-address)
Remote Host Port: 5544
Remote Host Path: /live0.264

ZoneMinder settings for the model with Sony chip (I6032B-Sony):
Source Type: Ffmpeg
Source Path: rtsp://admin:@(ip-address):554/live0.264
Remote Method: RTP/RTSP

Note: Both settings somewhat work for both of the cameras, I don’t know why I’ve set them up differently, but since it works, I am not gonna touch it. :D

Here it gets little confusing. When I bought these, this seller was offering two variations of the camera:
* 1080p (Hi3518EV200 + 2363), today the 1080p
* 1080p with a Sony chip (Hi3516C + IMX322), today the 1080p 25fps

The main difference in the specs is that the basic version has max 15 fps and the one with Sony chip has maximum 25 fps. This is not a dealbreaker for me as I reduce all cameras to 5-7 fps, but it’s worth noting. Today, the seller doesn’t include the exact specs, but it’s safe to assume that they remain the same. The 1080P (Black) is the basic model, and 1080P 25fps (Black) has the Sony chip.

Now the image quality on both is great, day and night, but I would not buy the more expensive one again. The one with Sony chip has a little better image quality, but it’s not $8 worth of difference. Also the one with Sony chip pulls the contrast too high at night so the IR-lit area is okay, but the rest is pitch black. All of the other cameras have more even night image.

Unlike Besder above (#5), with its similar image quality and price tag, the Revotech cameras can be set up through any browser and OS (I run on Mac), whereas the Besder camera needs to be set up through Windows and  Internet Explorer with ActiveX enabled. More on that at the end of the article.

But I must admit, when I was setting these cameras up, I loaded up the direct stream into VLC and I was truly amazed at how good the Sony one was. Also I think both of these record sound which I also only noticed in the VLC. I don’t use this feature in ZoneMinder (not even sure if it’s possible) but maybe it is worth knowing. The sound stream can be turned off directly in the camera’s web admin.

7. Dome 720p POE

URL, model LTID-72BDF ($21.93).

ZoneMinder settings:
Source Type: Ffmpeg
Source Path: rtsp://(ip-address):554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp
Remote Method: RTP/RTSP

All I’ve got to say: piece of shit in every way considering it is only a 720p (1280×720) camera (all the other ones are FullHD – 1920×1080). The image sucks, its plastic body sucks, etc.

Conclusion

I have not bought any more cameras to try, because number #4, #5 and #6 are good enough for what I need and I started replacing all the other cameras with these.

On 11/11 Sales I’ve even managed to buy the cheaper Revotech (the one with non-Sony sensor) from #6 for under $19!

How to setup the cameras

Majority of the cameras have the DHCP turned off and the local IP is set to 192.168.1.10. This is where you can access the camera’s admin page and settings after initially plugin it in. Most of the cameras have default admin user admin and empty password.

I always first plug them into my test-bench router, log into them, grab their MAC address, bind this MAC address to free IP address on my master router, turn DHCP on (unless it’s on already) and only after that I plug them into my main network.

Some of the cameras can be only set up through Internet Explorer with ActiveX enabled and you need to download and install some weird app. I’ve simply bypassed it by having a disposable Windows virtual machine that I use to set up the cameras. After you install all of this, surprisingly a lot of the camera’s settings can be adjusted in-camera (time, IR-cut filter sensitivity, bitrate, frame rate, OSD features – moving them or turning them off altogether to get nice, clean stream). Before I’ve found that out, I contacted one of the sellers who told me it cannot be done (needed to do frame rate adjustment from 15 fps to 5 fps)… But rest assured, it seems that in some way it can be done on any camera.

Interesting reading

January 2020 Update: I’ve swapped all the cameras to #5, so far the oldest one is 3+ years old and so far none cameras dies. The only one I didn’t swap is #4 (the dome camera) and that one is still running well.

Tips to make ZoneMinder run better

NOTE: I am running – and this all mostly relates to – an older version of Zoneminder, the v1.29.0.

Majority of the issues described here are thing of the past thanks to direct x264 passthrough recording that came with Zoneminder 1.32 and I highly recommend to upgrade if you are not using it for whatever reason yet.

 

So, little back story. I have a server (~~dual-core~~ quad-core i5 w/ 8 GB RAM) in my basement that has been running for 10+ years doing various tasks. Currently it’s my primary backup server, media server, file server, OpenVPN server and a ZoneMinder server. For almost a decade now, it has been running off of 6 pieces of 2 TB drives, that are partitioned 10 GB for system (RAID1) and the rest for data (RAID6). Everything runs within one Debian instance which I understand is not ideal. My next setup will be one big hypervisor with SSDs and ZoneMinder will get its own dedicated virtual machine. Until then, it is what it is.

On an unrelated note, over the last two years, bunch of stuff was stolen from my property. Apart from locking everything down from the second theft on I also had an idea to build a low-cost CCTV system (AliExpress IP cameras and whatever NVR platform I can find for Linux). I did a little bit of googling and basically when you want something Linux-based and open source, there is only one stable solution: ZoneMinder. Over the last year I also played with Shinobi (very early version that despite my then struggles with ZoneMinder I have passed on) and I briefly tried also a corporate grade software (can’t remember the name) that is free for up to 8 cameras that is supposedly great, but for that I would need dedicated Windows machine, which I don’t have and don’t want to set up.

Anyway, here are my observations that could help you get your ZoneMinder running smoothly. It took me a long time to get everything running as it should through trial and error (everything here seems so obvious now, but I probably took a lot of dead ends).

At first, I had three cameras and everything sitting on that RAID6 array, which was a pain. Even little things like someone starting a Plex session that started re-encoding a movie on that same array could have been enough for the whole ZoneMinder to plop dead because of the array utilization. Or even moving large files on and off server. But anyway, I could go on and on, but here are my tips. Order is random.

Monit daemon – so the service restarts if it turns off

Have a Monit daemon running that will restart ZoneMinder should it go down for any reason.

The Monit setting can be found e.g. here. You can even add a sendmail that will let you know ZoneMinder was restarted, and you can then investigate why. Huge help for this is Netdata that helps you quickly identify congestions within the system (by default it goes up to one hour into history with 1 second steps, but if you have enough memory you can go way deeper).

This was very useful before applying the further tips. I haven’t had the service go down in a few months now.

Don’t watch the live montage

Looking at live stream montage is fun, but try not to. Before I made another improvements even couple of streams were enough for ZoneMinder to start dropping frames.

What I found beneficial is a separate HTML page with a “manual” montage of live single frames, with a link to access individual full-fps live streams only when necessary.

Single frame can be accessed through (or just copy image address from Montage page and edit as necessary):
http://IP/zoneminder/cgi-bin/nph-zms?mode=single&scale=100&monitor=2

Alternatively you can create montage with 1-3 fps streams based on this:

http://IP/zoneminder/cgi-bin/nph-zms?mode=jpeg&scale=100&maxfps=1&monitor=3

Note that I have the &amp;scale= set to 100 (%), but you can scale it down to 50 or 25. I am just loading full resolution from the server and only then resizing it locally within the browser to roughly 33% because it looks way better on my Retina Macbook.

Don’t use motion detection

Initially, I ran ZoneMinder in the Modect setting. That means that event is only created and recorded when motion is detected in the video stream. I thought it will be great and the footage won’t take much space. However, that had few other problems:

  • Shitty Aliexpress cameras with grainy night image were virtually impossible to fine tune anyway (might do a whole separate post on these)
  • Even during the day when everything worked as it should (kind of), there were missing events in the video before and after the event that could be valuable
  • It uses a lot of CPU and HDD

So I ended up deciding to just record everything (Record setting). It does take a lot of space, but should anything get stolen again, I can analyze even areas outside my property that otherwise would not have been in the motion detection area because it would be triggering false alarm every time someone walks by.

I plan on integrating physical motion detectors that would trigger event based on actual movement and not on image analysis. These can be built based on e.g. inexpensive ESP8266 board with cheap PIR sensor. I then may get a lot of cat-triggered events, but at least they will be more fun to watch that grain-triggered events where nothing happens.

Further resources for hardware triggers: here, here and here and basically a complete guide here.

Dedicated hard drive for the recorded footage

My initial setup where I was recording onto the RAID6 array was plain stupid, because it meant that all 6 disks would be spinning nonstop, congesting the array, slowing everything else is down, and/or the ZoneMinder stoppping when other heavy traffic was going on on the array.

Dedicated drive is the way to go. You can use either “special” NVR drives like WD Purple or Seagate SkyHawk series, but even basic 5400rpm WD Red works just fine. I am currently running WD Red 6 TB with average utilization under 30%, and that is recording from 9 cameras (1080p, fps ranging 5 to 8 depending on camera and the time of the day – the frame rate drops a little in IR mode). The total incoming stream from the cameras is only about 25 mbps.

How to set up dedicated drive properly is described here. Just note the process is different on versions 1.30.4 or older and 1.31 or newer! (I’ve had some issues where I did not notice they are different…)

Also, in Debian (and other Linux distros) there is 5% of space on every drive reserved for root. Turn that off on your ZoneMinder drive and tadah, you have 300 GB extra space (on 6 TB drive). Basically run sudo tune2fs -m 0 /dev/sdX, where /dev/sdX is of course your ZoneMinder drive. More info here.

Turn off SMART testing on the dedicated drive

This may not apply to everyone, but I personally have a smartmontools daemon (smartd) set up to perform short SMART self-test daily and long SMART self-test weekly and I have noticed a lot of dropped frames during the long self-test, which basically scans each sector on the disk. It runs with low priority, but when there is neverending stream of data that wants to be written down, it just doesn’t seem to work very well.

So I turned it off. I still get an email should any raw SMART value change and a lot of the disk’s surface is still overwritten in less than 5 days, so I am not overly concerned about that.

Of course, I am still running the risk that the disk will plop dead without any SMART warning, and since I knows how the world works, it will also happen the same night when someone steals all my mountain bikes. But, oh, well, I might do like raid1 or something in the future.

Anyway, to turn off the testing only on one specific disk in the system, open /etc/smartd.conf and add in this line: /dev/sdX -d ignore (of course don’t forget to change the /dev/sdX accordingly). Save, and then restart smartmontools.

Offload the database to an SSD

I sort of did this for reasons unrelated to ZoneMinder per se, but after moving all my databases onto the cheapest SSD I could find (WDS120G2G0A) I noticed significantly better performance while doing anything in ZoneMinder (should it be running zmaudit.pl, scrolling through recorded events or even watching the live montage).

Which is not surprising, after all, before the database ran off of a raid-1 array that was duplicated onto six slow 5400 rpm drives.

I since then moved a whole bunch of other stuff onto the SSD and it was one of the best unplanned upgrades that I ever did to the server (I use it also for stuff like Plex server and it’s temporary re-encoding folder). (Yeah yeah I know, today, everyone uses SSD as a system disk even in home servers today, but my little server runs since the pre-SSD era!).

Limit FPS on the cameras

Rule of thumb is that 5 fps is good enough for basic surveillance. If your camera allows it, limit the fps in camera to 5-7 fps from the default 15-20. I personally have the FPS (where possible) set to 7 fps, which during the night in IR mode drops to around five fps.

Do NOT limit the FPS in ZoneMinder settings, it will cause all kinds of weird artifacts. I’ve accidentally set it once for one camera and believed for several months the camera is faulty before I noticed the fps was limited in ZoneMinder and not in the camera.

Unfortunately, I have some AliExpress cameras that run 15 fps without any options to limit it down, so a way to make ZoneMinder to “drop every second frame” would be nice, but I suppose I will have to deal with differently; just haven’t figured out how exactly just yet. Ok, I’ve actually figured this one out. Even with camera where the seller told me FPS cannot be changed, it actually can be done. Only the setting has to be done in an Internet Explorer with ActiveX allowed.

And thats probably all the things that I could think of right now but I will edit this article along the way, but with these basic tweaks (basically: separated drive for events, database on SSD and using Record/Mocord instead of Modect) the ZoneMinder has been rock stable for the last few months. Edit: Running strong for over a year now.

Another good sources

Of course the official documentation and forums and someone else’s best practices.