Hlavní navigace

Vyvíjíme routery. Chcete se přidat?

Průmyslové LTE routery postavené na Linuxu. Navrhované, vyvíjené a vyráběné v České republice.
18. 5. 2016

Sdílet

V České republice se vyvíjí spousta zajímavých věcí, ale o některých moc lidí neví. Tohle je článek o vývoji jednoho typu produktu, respektive o celé řadě produktů, která se vyvíjí v České republice už více než 10 let. A protože se pouštíme do posílení našeho týmu o nové odborníky, nechť je případným zájemcům také pozvánkou k pracovnímu pohovoru.

Obrázek vydá za tisíc slov:

Výše je obrázek několika našich routerů. Cože, čekali jste krabičky? Ty u nás děláme taky, ale obrázky krabiček najdete na webu. Ve vývoji se potkáte spíše s nahotinkami.

Než se pustím do bližšího popisu, co vlastně routery umí, dovolte hrubou sumarizaci.

Jedná se o průmyslový router.

Co to je takový průmyslový router? Průmyslový router se od běžného routeru liší především tím, že je dělaný tak, aby pokud možno rozumně vydržel drsnější podmínky. Musí být schopen vydržet za teplot, za kterých by se běžný router již dávno odebral do věčných lovišť. Musí být schopen vydržet nějaké drsnější zacházení – například trochu vibrací, běžet v poněkud prašnějším prostředí a podobně. Musí mít široký napájecí rozsah, protože v průmyslu není pouze 12 V DC. A pro případ, že se podmínky dostanou do extrémů, musí mít HW watchdog zajišťující restart zařízení.

Aby toho router mohl být schopen, musí být nejen vyroben ze součástek, které takové podmínky vydrží, ale musí být zároveň vyvinut tak, aby to vydržel a musí kromě testů projít i certifikacemi, aby mohl být označen příslušnými nálepkami.

A co je naprosto nejdůležitější – musí také kromě všech těch certifikací a testů nakonec odvést svou službu, protože jinak si zákazníci kromě několika testovacích kusů nepořídí nic dalšího a podruhé se k nám již nevrátí.

K nám se vracejí.

Co tedy naše routery vlastně umí?

Nejprve se podívejme na železnou stránku.

Typicky připojení na GSM síť, ať je to LTE, HSPA nebo GPRS. A umějí to dobře, byť každý operátor v každém regionu může mít jiné podmínky a samotná podpora norem vám nezaručí, že váš router bude v té a v té zemi s tím a tím operátorem fungovat.

Zde můžete vidět fotku několika bezdrátových modulů – Tomův bazar.

Dále mohou obsahovat GPS čip, který je zajímavý, pokud jsou routery umisťovány do nějakého mobilního prostředku – např. vlaku, lodě, auta a podobně.

Z bezdrátové výbavy pak ještě může být osazena wifi a co se ještě další konektivity týče, tak mají routery dva až pět ethernetových portů.

Pro rozšíření možností připojení dalších zařízení se na našich routerech typicky vyskytuje ještě USB a nějaká forma sériové linky – ať již RS232 nebo RS485, případně v některé z kombinací.

Na následujícím obrázku je zachycen jeden z vývojových kitů. Práce s vývojovým kitem většinou předchází standardní podpoře bezdrátového modulu v našich routerech.

Kdybyste krabičku otáčeli ze všech stran, tak byste si kromě slotů pro SIM karty (jeden až čtyři sloty) všimli také slotu pro microSD kartu (na platformě v3) a přípravy pro držák pro upevnění na DIN lištu.

Při pohledu zpět do minulosti bychom odhalili další a další varianty, ať již týkající se starších platforem routerů, nebo radiových modemů, různých provedení krabiček (kovové, plastové), specifických variant osazení či provedení pro speciální účely. A ani tím by nebyl výčet úplný, protože ne všechny naše routery vypadají jako naše routery – vyrábíme i jako OEM pro jiné výrobce.

Chtěli byste nějaký datasheet? Tak zde nebo zde

Bez software by byl router jen železem.

Takže co přináší tu funkcionalitu?

Podívejme se na naše výchozí webové rozhraní – například konfiguraci WLAN:

Nebo konfiguraci OpenVPN tunelu:

Hmm, nic moc to nepřipomíná, že? Tedy pokud neznáte rozhraní našich routerů. Že naši operátoři nemají IPv6 a my už podle screenshotu ano? Mno, ne všude ve světě jsou na tom jako u nás.

Z pohledu SW jde v základu o Linux kernel, kde hlavní verze kernelu vychází z verze SW kitu, dodávané výrobcem CPU. Do tohoto kernelu typicky backportujeme a ohýbáme ovladače, které potřebujeme, ať se již jedná o ovladače celulárního čipsetu, či jakékoliv další ovladače. Základ se v podstatě tvoří s každou novou platformou – jakmile máme vybrán základ nové platformy, začneme vše lepit tak, aby to hladce fungovalo a lepíme to v několika HW-SW iteracích tak dlouho, dokud je potřeba.

Potom, v průběhu života platformy, se ke kernelu mnohokrát vracíme, protože je potřeba nejen údržba (nové verze ovladačů, bezpečnostní patche), ale čas od času potřebujeme, aby platforma podporovala například úplně nový celulární čipset.

Nad kernelem nám žije taková polostandardní distribuce. Distribuci si stavíme sami, ale samozřejmě využívá mnoho open source prvků. Nicméně bychom našli dost velké množství vlastních patchů, nebo větších kusů software, například pro zabezpečení backup routing nebo některých dalších věcí.

Distribuce je skládaná v systému LTIB (obdoba Buildroot), který je rozšířen o naše vlastní balíčky, a build systém máme upraven tak, abychom byli schopni z jedněch zdrojáků pokrýt všechny používané platformy a kombinace firmware.

Screenshot z testlabu, zachycující buildy pro některé routery:

Zdrojáky máme udržované v bitbucketu, ke správě používáme git a máme centrálního maintainera.

Nad systémem máme vystaveno SDK nabízející zejména C rozhraní, v němž je možno psát uživatelské moduly (které pak v systému běží jako samostatné procesy se superuživatelským oprávněním) a rozšiřovat tak standardní funkcionalitu, neboť rozhraní uživatelských modulů je možno integrovat do webového rozhraní. Celé SDK je veřejně dostupné včetně ukázkových příkladů (bitbucket – Toolchains a ModulesSDK). Kromě toho, že jej sami používáme k tvorbě uživatelských modulů na zakázku, si některé aplikace píší partneři sami, či je SDK použito dalšími týmy v dceřiných firmách.

Celý systém SDK a webového rozhraní je z dnešního pohledu architektonicky již poněkud zastaralý (nejedná se o PHP ani Apache, ale o C nad vlastním jednoduchým webserverem), nicméně díky malé náročnosti je možno systém provozovat i nad staršími platformami routerů.

Naše zařízení nejsou cílena na páteřní sítě. Posuďte sami – nejpoužívanější platforma má pouhých 16 MiB storage, do kterých se musí vejít celý operační systém a storage pro uživatelské moduly má celé 2 MiB. Aktuální platforma je na tom, co se HW výbavy týče, podstatně lépe, nicméně s CPU Cortex A8 se stále jedná o relativně lightweight stroj.

Přesto mají routery širokou škálu využití, nicméně toto není marketingový článek pro potenciální kupce. :-)

Už nás není jeden a půl a požadavky od produkťáků a obchodníků se valí nezastavitelným proudem, takže si v tom musíme udržovat nějaký přehled – nepočítaje v to fakt, že díky velkému množství routerů v poli je sem tam potřeba něco zafixovat či vypomoct partnerům s nějakou otázečkou. Z pohledu metodiky vyvíjíme Agilně, ovšem za použití zdravého rozumu – používáme vše tak, aby to fungovalo, ne proto, abychom si odškrtli, že to používáme. Za SW používaných pro správu požadavků a vývoje zmiňme JIRA a Confluence.

Variant routerů je opravdu mnoho a když k tomu připočteme všechny možnosti nastavení (jen kombinace různých počtů tunelů je požehnaně), stavový prostor pro testování je obrovský. Místo manuálního testování jsme začali stavět automatizovanou testovací platformu a hlavní náplní práce testera je u nás psaní testů pro tuto platformu. Do budoucna je automatizace testování směr, kterým se definitivně ubíráme a naším cílem je v dohledné době pokrýt co nejvíce možností použití našich přístrojů testovací platformou.

Testlab real-thing:

Ukázka testlab webui – přehled některých funkcí:

Mapování testování tunelů:

Naše firma vznikla před 25 lety v Ústí nad Orlicí a v současné době se náš hlavní R&D tým skládá skládá z 10 vývojářů a několika dalších inženýrů (starajících se o testování, dokumentaci a podobně). Firma byla během své existence několikrát majiteli prodána, a i když vývojový tým zůstal stejný, název společnosti nikoliv. Z původního Conel s.r.o. se nyní stal „Advantech B+B SmartWorx s.r.o.“ a jediné, co zůstalo, nebo se vlastně rozrostlo, je portfolio vyráběných produktů a množství práce.

Z původně české firmy se stala firma mezinárodní. Běžně spolupracujeme nejen s partnery po celém světě, ale i s vývojovými týmy v Irsku, USA a na Tchajwanu, kteří nad naším produktem staví vlastní SW, ať jsou to již uživatelské moduly, IoT nebo zcela jiný operační systém (na bázi OpenWRT s naším kernelem, nicméně možnosti tohoto FW jsou proti našemu původnímu značně omezené).

Jelikož jsou na náš český tým kladeny stále další a další požadavky, rozšiřujeme se. Naše potřeby rozšířit vývojový tým jsou tak velké, že se již nebudeme schopni udržet pouze v místě původu firmy (v Ústí nad Orlicí), ale potřebujeme expandovat ve větším měřítku. V České republice jsou z našeho pohledu dvě místa, kam můžeme expandovat relativně rychle a z těchto dvou míst jsme již volbu udělali – Brno. V současné době rozjíždíme nábor menšího týmu v Brně a pokud se nám podaří obsadit aktuálně poptávané pozice seniorních vývojářů (Linux, C, sítě) a senior testera, je pravděpodobné že v průběhu roku budou otevřena ještě místa další.

Pokud byste rádi spolupracovali na dalším vývoji českého produktu, pokud máte rádi Linux a umíte C a síťování a máte v těchto oblastech bohaté zkušenosti, ozvěte se nám. Kromě samotných odborných znalostí hledáme lidi, kteří se nebojí řešit neznámé věci a přicházet s tvořivými řešeními. Potřebujeme lidi, kteří rádi dělají svou práci tak, aby se nestyděli ukázat na ni a říct: „to je moje práce, to jsem udělal já“ a na druhou stranu i přiznat chybu a přizpůsobit řešení novým požadavkům, protože neexistuje ultimátní řešení a neomylný člověk.

Naší velkou výhodou je, že celé naše řešení vlastníme ze 100% a v rámci zadání jsme pány technické implementace. I když je velký kus práce velmi samostatný, neboť si u nás nehrajeme na dozorování přes rameno a předpokládáme dospělý přístup k samotné práci, řešení, které stavíme, musí fungovat pro celý tým, a tak je pro nás velmi důležitým prvkem komunikace – a to jak v českém jazyce v rámci českého týmu, tak i v jazyce anglickém v rámci rodiny firem Advantech.

Podrobnější popis pozic je k dispozici zde po rozkliknutí Senior SW Engineer a Senior Test Engineer

V případě zájmu pošlete prosím dopis (a případně CV nebo alespoň sumarizaci zkušeností) na adresu: dana_sedova@conel.cz