Hello kulħadd!
Probabbilment mhuwiex sigriet li s-servizzi ta 'sorveljanza bil-vidjo tas-sħab qed jiksbu popolarità reċentement. U huwa ċar għaliex jiġri dan, il-vidjo huwa kontenut "tqil", li l-ħażna tiegħu teħtieġ infrastruttura u ammonti kbar ta 'ħażna fuq disk. L-użu ta’ sistema ta’ sorveljanza bil-vidjo fuq il-post jeħtieġ fondi biex topera u tappoġġja, kemm għal organizzazzjoni li tuża mijiet ta’ kameras ta’ sorveljanza kif ukoll għal utent individwali b’diversi kameras.
Is-sistemi ta 'sorveljanza bil-vidjo tas-sħab isolvu din il-problema billi jipprovdu lill-klijenti b'infrastruttura eżistenti ta' ħażna u pproċessar tal-vidjo. Klijent ta 'sorveljanza bil-vidjo tas-sħab sempliċiment jeħtieġ li jgħaqqad il-kamera mal-Internet u torbotha mal-kont tas-sħab tiegħu.
Hemm diversi modi teknoloġiċi biex tikkonnettja kameras mas-sħaba. Bla dubju, l-aktar metodu konvenjenti u irħas huwa li l-kamera tgħaqqad u taħdem direttament mal-sħaba, mingħajr il-parteċipazzjoni ta 'tagħmir addizzjonali bħal server jew recorder.
Biex tagħmel dan, huwa meħtieġ li modulu tas-softwer li jaħdem mal-sħaba jiġi installat fuq il-kamera. Madankollu, jekk nitkellmu dwar kameras irħas, allura għandhom riżorsi ta 'hardware limitati ħafna, li huma kważi 100% okkupati mill-firmware nattiv tal-bejjiegħ tal-kamera, u m'hemm l-ebda riżorsi meħtieġa għall-plugin tal-cloud. Iżviluppaturi minn ivideon iddedikat din il-problema
Aħna solvejna b'suċċess din il-problema. Jekk inti interessat fil-kif - merħba lill-qatgħa
Ftit storja
Fl-2016, bdejna niżviluppaw pjattaforma ta 'sorveljanza bil-vidjo tas-sħab għal Rostelecom.
F'termini ta 'softwer tal-kamera, fl-ewwel stadju segwejna t-triq "standard" għal kompiti bħal dawn: żviluppajna l-plugin tagħna stess, li huwa installat fil-firmware standard tal-kamera tal-bejjiegħ u jaħdem bil-cloud tagħna. Madankollu, ta 'min jinnota li matul id-disinn użajna l-aktar soluzzjonijiet ħfief u effiċjenti (per eżempju, implimentazzjoni sempliċi C ta' protobuf, libev, mbedtls u libreriji konvenjenti iżda tqal abbandunati kompletament bħal boost)
Bħalissa, m'hemm l-ebda soluzzjonijiet ta 'integrazzjoni universali fis-suq tal-kameras IP: kull bejjiegħ għandu l-mod tiegħu kif jinstalla l-plugin, is-sett ta' APIs tiegħu stess għat-tħaddim tal-firmware, u mekkaniżmu uniku ta 'aġġornament.
Dan ifisser li għal kull bejjiegħ tal-kameras huwa meħtieġ li jiġi żviluppat individwalment saff komprensiv ta 'softwer ta' integrazzjoni. U fil-ħin tal-bidu tal-iżvilupp, huwa rakkomandabbli li taħdem biss ma 'bejjiegħ 1 sabiex tikkonċentra l-isforzi tat-tim fuq l-iżvilupp tal-loġika biex taħdem mal-cloud.
L-ewwel bejjiegħ magħżul kien Hikvision, wieħed mill-mexxejja dinjija fis-suq tal-kameras, li jipprovdi API dokumentat tajjeb u appoġġ tekniku ta 'inġinerija kompetenti.
Nedejna l-ewwel proġett pilota tagħna, sorveljanza bil-vidjo tas-sħab Video Comfort, bl-użu tal-kameras Hikvision.
Kważi immedjatament wara t-tnedija, l-utenti tagħna bdew jistaqsu mistoqsijiet dwar il-possibbiltà li jgħaqqdu kameras irħas minn manifatturi oħra mas-servizz.
Irrifjutajt l-għażla li nimplimenta saff ta 'integrazzjoni għal kull bejjiegħ kważi immedjatament - peress li huwa ma tantx skalabbli u jimponi rekwiżiti tekniċi serji fuq il-ħardwer tal-kamera. L-ispiża ta 'kamera li tissodisfa dawn ir-rekwiżiti ta' input: ~60-70$
Għalhekk, iddeċidejt li nħaffer aktar fil-fond - biex nagħmel il-firmware tiegħi stess għal kameras minn kwalunkwe bejjiegħ. Dan l-approċċ inaqqas b'mod sinifikanti r-rekwiżiti għar-riżorsi tal-ħardwer tal-kamera - għaliex Is-saff biex taħdem mas-sħaba hija integrata b'mod ħafna aktar effettiv mal-applikazzjoni tal-vidjo, u m'hemm l-ebda xaħam mhux użat mhux meħtieġ fil-firmware.
U dak li hu importanti huwa li meta taħdem mal-kamera f'livell baxx, huwa possibbli li tuża hardware AES, li jikkripta d-dejta mingħajr ma toħloq tagħbija addizzjonali fuq is-CPU b'enerġija baxxa.
F’dak il-mument ma kellna xejn. Xejn.
Kważi l-bejjiegħa kollha ma kinux lesti li jaħdmu magħna f'livell daqshekk baxx. M'hemm l-ebda informazzjoni dwar iċ-ċirkwiti u l-komponenti, m'hemm l-ebda SDK uffiċjali ta 'chipsets u dokumentazzjoni tas-sensorju.
M'hemm l-ebda appoġġ tekniku wkoll.
Il-mistoqsijiet kollha kellhom jiġu mwieġba permezz ta’ reverse engineering—prova u żball. Imma rnexxielna.
L-ewwel mudelli ta 'kameras li ttestjajna fuqhom kienu Xiaomi Yi Ants, Hikvision, Dahua, Spezvision, kameras D-Link u bosta kameras Ċiniżi ultra-rħas mingħajr isem.
Teknika
Kameras ibbażati fuq chipset Hisilicon 3518E. Il-karatteristiċi tal-ħardwer tal-kameras huma kif ġej:
Nemel Xiaomi Yi
Bla isem
SoC
Hisilicon 3518E
Hisilicon 3518E
RAM
64MB
64MB
FLASH
16MB
8MB
Wifi
mt7601/bcm43143
-
Sensor
ov9732 (720p)
ov9712 (720p)
Ethernet
-
+
microSD
+
+
Mikrofonu
+
+
Speaker
+
+
IRLed
+
+
IRCut
+
+
Bdejna magħhom.
Bħalissa nappoġġjaw chipsets Hisilicon 3516/3518, kif ukoll Ambarella S2L/S2LM. Hemm għexieren ta 'mudelli ta' kameras.
Kompożizzjoni tal-firmware
sottomarin
uboot huwa l-boot loader, boots l-ewwel wara li jinxtegħel, jinizjalizza l-ħardwer u jgħabbi l-kernel tal-linux.
L-iskript tat-tagħbija tal-kamera huwa pjuttost trivjali:
bootargs=mem=38M console=ttyAMA0,115200 rootfstype=ramfs mtdparts=hi_sfc:256K(boot),64K(tech),4096K(kernel),8192K(app),-(config) hw_type=101
bootcmd=sf probe 0; sf read 0x82000000 0x50000 0x400000; bootm 0x82000000; setenv bootargs $(bootargs) bkp=1; sf read 0x82000000 0x450000 0x400000; bootm 0x82000000
Waħda mill-karatteristiċi hija li tissejjaħ darbtejn bootm
, aktar dwar dan ftit aktar tard, meta naslu għas-subsistema ta 'aġġornament.
Oqgħod attent għal-linja mem=38M
. Iva, iva, dan mhuwiex typo - il-kernel tal-Linux u l-applikazzjonijiet kollha, kollha, kollha għandhom aċċess biss għal 38 megabytes ta 'RAM.
Ukoll ħdejn uboot hemm blokk speċjali msejjaħ reg_info
, li fih skript ta 'livell baxx għall-inizjalizzazzjoni tad-DDR u numru ta' reġistri tas-sistema tas-SoC. Kontenut reg_info
jiddependi fuq il-mudell tal-kamera, u jekk ma tkunx korretta, il-kamera lanqas biss tkun tista 'tagħbija uboot, iżda tiffriża fl-istadju bikri ħafna tat-tagħbija.
Għall-ewwel, meta ħdimna mingħajr appoġġ tal-bejjiegħ, aħna sempliċement ikkuppjajna din il-blokka mill-firmware oriġinali tal-kamera.
Linux kernel u rootfs
Il-kameras jużaw il-qalba tal-Linux, li hija parti mill-SDK taċ-ċippa; ġeneralment dawn mhumiex l-aħħar kernels mill-fergħa 3.x, għalhekk ħafna drabi jkollna nittrattaw il-fatt li s-sewwieqa għal tagħmir addizzjonali mhumiex kompatibbli mal-qalba użata , u rridu nġibuhom lura lejn il-kameras tal-qalba.
Kwistjoni oħra hija d-daqs tal-qalba. Meta d-daqs FLASH huwa biss 8MB, allura kull byte jgħodd u l-kompitu tagħna huwa li tiddiżattiva bir-reqqa l-funzjonijiet kollha tal-qalba mhux użati sabiex innaqqsu d-daqs għall-minimu.
Rootfs hija sistema bażika tal-fajls. Jinkludi busybox
, sewwieqa tal-modulu wifi, sett ta 'libreriji tas-sistema standard, bħal libld
и libc
, kif ukoll is-softwer tagħna, li huwa responsabbli għall-loġika tal-kontroll LED, il-ġestjoni tal-konnessjoni tan-netwerk u l-aġġornamenti tal-firmware.
Is-sistema tal-fajls tal-għeruq hija konnessa mal-qalba bħala initramfs u bħala riżultat tal-bini jkollna fajl wieħed uImage
, li fih kemm il-qalba kif ukoll l-għeruq.
Applikazzjoni tal-vidjo
Il-parti l-aktar kumplessa u intensiva tar-riżorsi tal-firmware hija l-applikazzjoni, li tipprovdi qbid tal-vidjo-awdjo, kodifikazzjoni tal-vidjo, tikkonfigura l-parametri tal-istampa, timplimenta l-analiżi tal-vidjo, pereżempju, ditekters tal-moviment jew tal-ħoss, tikkontrolla PTZ u hija responsabbli għall-bidla tal-ġurnata u modi bil-lejl.
Karatteristika importanti, jien ngħid anke ewlenija, hija kif l-applikazzjoni tal-vidjo jinteraġixxi mal-plugin tal-cloud.
F'soluzzjonijiet tradizzjonali 'vendor firmware + cloud plugin', li ma jistgħux jaħdmu fuq ħardwer irħis, vidjo ġewwa l-kamera jiġi trażmess permezz tal-protokoll RTSP - u dan huwa overhead enormi: ikkupjar u trażmissjoni ta 'data permezz ta' socket, syscalls bla bżonn.
Hawnhekk nużaw il-mekkaniżmu tal-memorja kondiviża - il-vidjo ma jiġix ikkupjat jew mibgħut permezz ta 'socket bejn il-komponenti tas-softwer tal-kamera, u b'hekk bl-aħjar mod u bir-reqqa nużaw il-kapaċitajiet modesti tal-hardware tal-kamera.
Aġġorna s-subsistema
Punt ta 'kburija speċjali hija s-subsistema li tollera l-ħsarat għall-aġġornamenti tal-firmware onlajn.
Ħa nispjega l-problema. L-aġġornament tal-firmware teknikament mhuwiex operazzjoni atomika, u jekk isseħħ nuqqas ta 'enerġija fin-nofs tal-aġġornament, allura l-memorja flash se jkun fiha parti mill-firmware ġdid "taħt miktub". Jekk ma tieħux miżuri speċjali, il-kamera mbagħad issir "briks" li jeħtieġ li jittieħed f'ċentru ta 'servizz.
Aħna ttrattati din il-problema wkoll. Anke jekk il-kamera tkun mitfija waqt l-aġġornament, awtomatikament u mingħajr intervent tal-utent tniżżel il-firmware mill-sħaba u tirrestawra l-operazzjoni.
Ejja nħarsu lejn it-teknika f'aktar dettall:
L-aktar punt vulnerabbli huwa l-kitba fuq il-partizzjoni bis-sistema tal-kernel u l-fajl tal-għeruq tal-Linux. Jekk wieħed minn dawn il-komponenti jkun bil-ħsara, il-kamera ma tibbotja xejn lil hinn mill-uboot bootloader, li ma jistax tniżżel il-firmware mill-cloud.
Dan ifisser li għandna bżonn niżguraw li l-kamera jkollha għadma u rootfs li jaħdmu fi kwalunkwe ħin matul il-proċess ta 'aġġornament. Jidher li l-aktar soluzzjoni sempliċi tkun li kontinwament taħżen żewġ kopji tal-qalba b'rootfs fuq memorja flash u, jekk il-qalba prinċipali tkun bil-ħsara, tagħbijaha mill-kopja tal-backup.
Soluzzjoni tajba - madankollu, il-kernel b'rootfs jieħu madwar 3.5MB u għal backup permanenti għandek bżonn talloka 3.5MB. L-orħos kameras sempliċement m'għandhomx daqshekk spazju ħieles għal qalba ta 'backup.
Għalhekk, biex tagħmel backup tal-qalba waqt aġġornament tal-firmware, nużaw il-partizzjoni tal-applikazzjoni.
U biex tagħżel il-partizzjoni mixtieqa bil-qalba, jintużaw żewġ kmandi bootm
f'uboot - fil-bidu nippruvaw tagħbija l-qalba prinċipali u jekk tkun bil-ħsara, allura dik tal-backup.
Dan jiżgura li fi kwalunkwe ħin partikolari l-kamera jkollha l-qalba korretta b'rootfs, u tkun tista 'tibbutja u tirrestawra l-firmware.
Sistema CI/CD għall-bini u l-iskjerament tal-firmware
Biex nibnu firmware, nużaw gitlab CI, li awtomatikament jibni firmware għall-mudelli kollha ta 'kamera appoġġjati, u wara li jinbena l-firmware, huwa awtomatikament skjerat għas-servizz ta' aġġornament tas-softwer tal-kamera.
Mis-servizz, l-aġġornamenti tal-firmware jitwasslu lill-kameras tat-test tal-QA tagħna, u mat-tlestija tal-istadji kollha tal-ittestjar, lill-kameras tal-utenti.
Sigurtà tal-Informazzjoni
Mhuwiex sigriet li llum il-ġurnata s-sigurtà tal-informazzjoni hija l-aktar aspett importanti ta 'kwalunkwe apparat IoT, inklużi kameras. Botnets bħal Mirai qed jimirħu fuq l-Internet, u jinfettaw miljuni ta 'kameras b'firmware standard minn bejjiegħa. Bir-rispett kollu lejn il-bejjiegħa tal-kameras, ma nistax ma ninnotax li l-firmware standard fih ħafna funzjonalità li mhix meħtieġa biex taħdem mal-cloud, iżda fiha ħafna vulnerabbiltajiet li l-botnets jieħdu vantaġġ minnhom.
Għalhekk, il-funzjonalità kollha mhux użata fil-firmware tagħna hija diżattivata, il-portijiet kollha tcp/udp huma magħluqa, u meta taġġorna l-firmware, il-firma diġitali tas-softwer tiġi kkontrollata.
U minbarra dan, il-firmware jgħaddi minn testijiet regolari fil-laboratorju tas-sigurtà tal-informazzjoni.
Konklużjoni
Issa l-firmware tagħna jintuża b'mod attiv fi proġetti ta 'sorveljanza bil-vidjo. Forsi l-akbar wieħed minnhom huwa x-xandir tal-votazzjoni fil-jum tal-elezzjoni tal-President tal-Federazzjoni Russa.
Il-proġett involva aktar minn 70 elf kamera bil-firmware tagħna, li ġew installati fil-postijiet tal-votazzjoni f’pajjiżna.
Wara li solvejna numru ta 'kumplessi, u f'xi postijiet, anke f'dak iż-żmien problemi kważi impossibbli, aħna, ovvjament, irċevejna sodisfazzjon kbir bħala inġiniera, iżda minbarra dan, aħna ffrankajna wkoll miljuni ta' dollari fuq ix-xiri ta 'kameras. U f'dan il-każ, l-iffrankar mhumiex biss kliem u kalkoli teoretiċi, iżda r-riżultati ta 'offerta diġà kompluta għax-xiri ta' tagħmir. Għaldaqstant, jekk nitkellmu dwar is-sorveljanza bil-vidjo tas-sħab: hemm żewġ approċċi - tiddependi strateġikament fuq għarfien espert u żvilupp ta 'livell baxx, li jirriżulta f'iffrankar kbir fuq tagħmir, jew tuża tagħmir għali, li, jekk tħares speċifikament lejn il-karatteristiċi tal-konsumatur, huwa prattikament l-ebda differenti minn dawk simili irħas.
Għaliex huwa strateġikament importanti li wieħed jiddeċiedi dwar l-għażla tal-approċċ ta' integrazzjoni kemm jista' jkun kmieni? Meta jiżviluppaw plugin, l-iżviluppaturi jiddependu fuq ċerti teknoloġiji (libreriji, protokolli, standards). U jekk sett ta 'teknoloġiji jintgħażel biss għal tagħmir għali, allura fil-futur tentattiv biex jaqilbu għal kameras irħas x'aktarx, bħala minimu, jieħu żmien twil ħafna jew saħansitra jonqos u jseħħ ritorn għal tagħmir għali.
Sors: www.habr.com