Всем привет,
Вот решил создать тему, посвященную созданию компонент инфраструктуры APRS на базе обычных серийных маршрутизаторов, которые есть сейчас практически у каждого дома, поэтому, думаю, это будет интересно не только мне одному.
Для экспериментов был выбран маршрутизатор Asus RT-N16 (http://www.asus.com/Networking/RTN16/) по двум причинам: 1) это самый дешевый маршрутизатор с двумя USB 2.0 портами из найденных мной; два порта нужны для того, чтобы без внешних USB-хабов можно было одновременно подключить и флешку с нужным софтом, и радиостанцию; 2) его операционная системы - AsusWRT - построена на базе широко известной ОС для маршрутизаторов OpenWRT и интерфейсной надстройки над ней под названием TomatoUSB. Так что никакие пляски с бубном по вкорячиванию OpenWRT/DD-WRT/TomatoUSB просто не нужны. Кроме того, Asus выкладывает все исходные тексты и готовые средства кросс-компиляции для своей AsusWRT, что, безусловно, облегчает задачу.
Для реализации самого APRS был выбран софт aprx 2.07 (http://wiki.ham.fi/Aprx.en) как реализующий весь необходимый мне функционал (digipeater+Rx/Tx iGate), не требующий при этом от ОС ничего, кроме стандартной библиотеки для языка C и вследствие этого занимающий скромные размеры в оперативной памяти (у меня получилось меньше одного 1Мб).
В качестве радиостанции на начальном этапе использовался Kenwood TH-D72, подключавшийся сразу к маршрутизатору по USB. И здесь сразу возник ряд проблем:
1. В TH-D72 используется USB<->Serial чип CP2102 от Silicon Labs (http://www.silabs.com/products/inter...rt-bridge.aspx). В AsusWRT есть драйверы только для PL2303 от Prolific и FT232 от FTDI. Драйвера для CP210x там нет, поэтому пришлось его компилировать и подгружать дополнительно с флешки.
2. После того, как я это сделал, и TH-D72 выдала первый пакет в эфир, маршрутизатор просто умер. Есть сильное подозрение, что из-за, что корпус USB-разъема соединен с корпусом самой радиостанции, включая резьбу антенного разъема. Т.е., вероятно, маршрутизатор не выдержал работы в качестве противовеса для антенны портативки в момент излучения ею в эфир 5 ватт.
3. Для гальванической развязки был куплен специальный адаптер USB2ISO (http://electronics-shop.dk/isolated_...m?currency=EUR). Со своей задачей он справился - новый маршрутизатор, полученный взамен старого по гарантии, не сгорел после передачи первого пакета. Однако станцию перестала принимать какие-либо пакеты. Кроме того, у ней стал часто открываться шумодав с помехами. Как выяснилось, помехи создавал этот адаптер - когда я подошел к нему с Yaesu VX-8R, она стала вести себя точно также. При отключении этого адаптера прием нормализовался. Чтобы избежать повторного выхода маршрутизатора из строя, был куплен отдельный кабель USB A<->mini USB B с двумя ферритами, и после феррита у разъема mini USB были аккуратно сняты оплетка и экран, чтобы гальванически развязать массы маршрутизатора и радиостанции. После этого связка RT-N16+TH-D72 успешно заработала без причинения вреда друг другу.
Итак, в приложении к этому сообщению - скомпилированная aprx 2.07 с дополнительными скриптами для автозапуска при вставлении флешки/загрузке маршрутизатора.
Что нужно сделать:
1. Распаковать приложенный архив в корень какой-нибудь флешки. Желательно, что флешка была отформатирована в файловой системе ext3. Во всяком случае, все экперименты я делал с ней. Для этого необязательно иметь комп с Linux'ом - все это можно сделать и на самом RT-N16, утилита mkfs.ext3 в нем есть.
2. Запустить с флешки скрипт aprx/nvram_autorun.sh - он устанавливает два параметра маршрутизатора для автоматического запуска крипта .autorun из корня флешки при монтировании/размонтировании.
3. Подредактировать файл конфигурации aprx/etc/aprx.conf.in. Точнее, это не сам файл конфигурации, а шаблон для скрипта .autorun, который поменяет в нем переменную @basedir@ на реальную директорию, куда окажется подмонтированной флешка и уже с эти новым файлов конфигурации и запустит aprx. Подробная документация относительно конфигурации aprx доступна на http://wiki.ham.fi/Aprx.en.
4. После этого извлечь и вставить заново флешку, либо набрать "<mount_dir>/.autorun <mount_dir> start" (без кавычек), где <mount_dir> - директория, куда подмонтировалась ваша флешка.
5. Скрипт .autorun также загружает драйвер для USB<->Serial чипов CP2101/2102, который находится в файле aprx/lib/cp2101.ko.
Собственно, все.
В заключение могу добавить, что сам готовый софт должен работать не только на маршрутизаторах Asus с ОС AsusWRT, но вообще на всех маршрутизаторах под Linux'ом с процессорами архитектуры MIPS Little Endian, использующих библиотеку uClibc (http://www.uclibc.org/). Так что желающие могут поэкспериментировать . У меня же в ближайших планах - запуск связки Asus RT-N16+Alinco DR-135TMK3/EJ-41U. Посмотрим, что сгорит на этот раз