Před nějakým časem proběhla na konferenci HW-list diskuse o možnostech využití malého routeru Edimax BR-6104 jako báječného hardware pro pokusy s embedded Linuxem.
Výhodami tohoto routeříku jsou zejména:
Vzhledem k tomu, že i já jsem tomuto zařízeníčku propadl, budu zde uvádět různé k tomu se vztahující informace.
Pokud chceme s routerem Edimax 6104 dělat cokoliv jiného, než k němu po vybalení z krabice pouze připojit dráty a používat ho s jeho původním firmwarem k původnímu účelu, musíme na něm udělat alespoň drobné hardwarové úpravy.
Nemusím snad zdůrazňovat, že tím router pochopitelně ztrácí záruku a že veškerá zodpovědnost za případné poničení neopatrným zacházením leží na tom, kdo se v něm šťoural. Na druhou stranu jeho cena není až tak astronomická a hlavně při rozumném zacházení je pravděpodobnost poničení velmi malá.
Takže máte-li chuť vemte křížový šroubovák do ruky a hurá na úpravy. Co je vlastně třeba upravit? Router lze používat na mnoho různých způsobů. V nejjednodušším případě pouze jako router, ale s jinou verzí firmwaru (Linuxu). Ve složitějším pak jako kus hardwaru, na kterém běží Linux a který poskytuje 5 síťových rozhraní a více než 10 vstupně výstupních linek, kterými lze něco ovládat, sledovat nebo s něčím komunikovat.
V každém případě je ovšem potřeba do routeru nahrát jiný Linux, než jaký je tam od výrobce a právě toho se týká první nutná úprava hardwaru. Firmware se totiž do routeru nahrává pomocí jeho malého bootloaderu, který k tomu využívá sériového rozhraní UART. Procesor ADM5120 má dva porty UART, z nichž jeden je v routeru Edimax vyveden na plošném spoji na pady připravené pro připájení pinové lišty (2 x 4 pinů), kterou známe například z motherboardů počítačů.
|
|
Umístění konektorů na desce routeru a jejich zapojení při pohledu tak, jak je vidět na fotografii. |
Z obrázku je patrné, že na desce routeru jsou připravené dvě skupiny padů pro připojení dvou pinových lišt. Pady označené JP1 slouží pro připojení rozhraní JTAG, které při běžné práci s routerem nebudeme potřebovat. Nicméně pro úplnost uvádím i jeho zapojení tak, jak jsem ho vysledoval z desky.
Nás zajímá skupina padů označená jako JP2, které jsou na obrázku již osazené pinovou lištou. Je vidět, že na nich je vyvedeno vše, co budeme pro připojení sériového rozhraní potřebovat. Trošku nám práci komplikuje pouze fakt, že procesor ADM5120 používá k napájení napětí 3V (nebo nižší). Proto i na konektoru je vyvedeno 3V napájení a nikoliv naětí 5V, které se v routeru osazeném porty USB vyskytuje také.
Protože piny TX a RX pracují v TTL logice, je nutno jejich úrovně pomocí vhodného převodníku pro připojení k rozhraní COM počítače nejprve převést na úrovně RS232. Běžně sehnatelný převodník MAX232 nebo nějaký s ním kompatibilní pracuje s napájecím napětím 5V.
Jsou tedy dvě možnosti řešení. První je vyvést si na některý z nezapojených pinů konektoru JP2 5V napětí z destičky routeru. Nejlépe je asi dosažitelné na kontaktech SMD cívek L11 a L14 nacházejících se na desce mezi USB porty a oscilátorem 48MHz (použijte vývod cívky blíže k oscilátoru).
Druhou možností, kterou jsem použil já je využít sice ne tak běžný ale i tak poměrně snadno sehnatelný převodník MAX3232 určený pro napájení 3V.
Pro úplnost uvedu ještě moje řešení převodníku. Snažil jsem se ho navrhnout tak, aby byl co nejmenší a pohodlně se vešel do uzavřeného routeru. Nicméně časem jsem zjistil, že je pro mé účely zbytečné ho tam mít trvale osazený, takže dnes ho mám vyndaný a připojil bych ho jen, pokud bych potřeboval do routeru z nějakých důvodů nahrát jiný Linux. Vše ostatní se řeší prostřednictvím síťového připojení pomocí terminálu, FTP atd.
Z důvodů miniaturizace jsem použil SMD montáž (nicméně součástky ve velikosti 1206 aby se daly snadno ručně osadit). Také MAX3232 je v SMD provedení. Osmipinová dutinková lišta a jedna drátová propojka jsou jediné součástky osazená na destičce ze strany "součástek", SMD komponenty jsou pochopitelně ze strany "spojů". Piny 3 a 5 konektoru jsem na destičce převodníku zapojil pro případné připojení druhého UARTu, který je ovšem na desce routeru nezapojen a pro jeho zfunkčnění by bylo potřeba příslušné signály přímo z nožiček procesoru propojit na volné piny JP2.
Později jsem si druhý UART ale vyvedl na jiný konektor, což časem popíši v jiném článku.
Signál v úrovních RS232 je z pinů označených na destičce jako JP2 ohebným kablíkem připojen přímo na konektor CANON 9F shora:
Soubory schématu, plošného spoje a seznamu součástek pro program Eagle najdete v příloze.
Destička (v rozlišení 300 DPI) | Osazení (drátová propojka je modře) |
Příloha | Velikost |
---|---|
232router.zip | 17.44 KB |
V minulém článečku jsme si popsali hardwarovou úpravu routeru Edimax BR 6104, která nám zpřístupnila jeho sériový port.
Můžeme tedy směle přistoupit k hrátkám s firmwarem routeru. První věc, kterou je potřeba znát, abychom se k routeru mohli připojit je implicitní nastavení sériového rozhraní. To je následující:
Spustíme libovolný terminálový program, který umí komunikovat po sériovém portu a umí protokol X-modem. Ve Windowsech tomu vyhovuje klasický hyperterminál, ale je samozřejmě možné použít i jakýkoliv jiný program s popsanými schopnostmi. Nastavíme parametry sériového portu, propojíme počítač s upraveným routerem a zastrčíme jeho konektor napájení.
Router začne bootovat a pokud je vše vpořádku, měl by se v okně terminálového programu ukázat nápis:
ADM5120 Boot:
V tomto okamžiku nesmíte zaváhat a musíte na klávesnici rychle třikrát stisknout mezerník. Objeví se:
Linux Loader Menu
====================
(a) Download vmlinuz to flash ...
(b) Download vmlinuz to sdram (for debug) ...
(c) Exit
Please enter your key :
Chceme-li nahrát firmware, stiskneme písmenko a
Nyní musíme poměrně rychle v terminálovém programu otevřít X-modem s vybraným souborem firmwaru (viz níže), jinak nám vyprší timeout. Hyperterminál má jako implicitní místo pro hledání souborů pro odesílání poněkud netradičně nastaven kořen profilu uživatele. Proto je rozumné si soubor s firmwarem předem připravit právě do téhle složky, aby otevírání proběhlo hladce a rychle.
Dialog pro odeslání souboru najdeme v menu Přenos/Odeslat soubor...
Po odkliknutí Odeslat se v okně hyperterminálu bude objevovat postup nahrávání firmwaru a nakonec se znova objeví základní menu bootloaderu.
Downloading.......................PASS Eraseing nor flash.......PASS Programming nor flash...PASS Linux Loader Menu ==================== (a) Download vmlinuz to flash ... (b) Download vmlinuz to sdram (for debug) ... (c) Exit
Po stisknutí klávesy c router rebootuje a pokud se vše podařilo, bootuje již oblečen do nového firmwaru.
Existuje hned několik způsobů, jakými přijít k jinému než originálnímu Linuxu, který je v routeru nahrán od výrobce.
Tou nejsložitější, kterou se nebudu zabývat, je zkompilovat a sestavit si úplně vlastní Linux podle specifických představ. To je ovšem značně komplikované a bez předchozích zkušeností to začátečník zvládá jen opravdu těžko.
Daleko jednodušší je porozhlédnout se po Internetu a stáhnout si některou z existujících verzí Linuxu pro tenhle router. Existuje jich několik a liší se svým zaměřením.
Já osobně používám právě posledně jmenovanou distribuci. K jejímu zprovoznění je třeba si nejprve stáhnout soubor s názvem stick datum.tar.gz a na Linuxovém počítači ho rozbalit na USB flash disk předem naformátovaný linuxovým filesystémem ext2. Pokud nemáte Linuxový stroj, nebojte se ho nainstalovat třeba pod VMWare serverem, stejně ho pro práci s routerem budete potřebovat.
Takto připravený USB flashdisk vložíme do libovolného USB portu routeru a výše uvedenou metodou do něj uploadujeme některou z distribucí ze Sweexu.
Pro úplné linuxové začátečníky nakonec dodám, že IP adresy nastavíte v souboru /etc/network/interfaces nacházejícím se na flashdisku. zeditovat ho můžete na jakémkoliv počítači (samozřejmě včetně VMWaru) s Linuxem.