Автор не несет никакой ответсвенности, за Ваши действия или бездействия, за физический, финансовый, моральный или любой другой ущерб. Помните, вскрывая рассмотренный в этой статье маршрутизатор, Вы лишаетесь гарантии.
Статья не является пошаговым руководством: Вы должны понимать, что Вы делаете.
Недавно ко мне в руки попало устройство Edimax BR-6104K (а позже и Edimax BR-6104KP)
Данное устройство представляет собой маршрутизатор, размером с маленький 8-ми портовый switch
Маршрутизатор имеет flash память объемом 2М и SDRAM память объемом 16М и сравнительно быстрый процессор 175MHz.
Но самое интересное, что операционной системой устройства является Linux.
Эта мысль у меня возникла при ознакомлении с его возможностями, и подтвердилась после внимательного изучения его прошивки.
На Тайване десятки фирм изготавливают OEM устройства на процессоре ADM5120, отличающиеся только корпусом. Например, точно такое же устройство изготавливает компания Sweex (Sweex LB000021). Еще одно аналогичное устройство - Planet XRT-401D. Платы Edimax, Sweex, Planet и других производителей отличить друг от друга невозможно. Существуют лишь подмодификации плат, отмеченные в левом верхнем углу как “Rev A” и “Rev B” и использующие разные чипы памяти. Прошивки отличаются только логотипами и оформлением (CSS).
Отличие между моделями Edimax BR-6104K и BR-6104KP состоит только в наличии двух портов USB и в поддержке принтера в firmware. Причем печатные платы у обоих устройств совершенно одинаковые, только на BR-6104K не распаяны элементы USB, осциллятор на 48MHz и стабилизатор питания +5V для USB. При некоторой сноровке можно дополнить недостающие элементы и получить модель BR-6104KP. Подробная нструкция здесь. Хотя разница в цене составляет всего 10$…
Более дорогие устройства поддерживают беспроводную сеть WiFi 802.11g :
Еще один класс устройств на процессоре ADM5120 - это сервера печати. Они имеют только один порт Ethernet и не имеют выходов коммутатора. Однако у них есть порт USB и LPT. Кроме того эти устройства имеют меньшие габариты, вес и цену и также весьма интересны.
Функция NAT/NATP позволит организовать общий доступ к одному широкополосному подключению (через кабельный или ADSL-модем). Возможна одновременная работа до 253 пользователей. Маршрутизатор обеспечивает функцию DMZ для осуществления доступа из интернет к серверам, расположенным во внутренней сети.
Маршрутизатор позволяет использовать специальные приложения (H.323, IRC, MSN, MMS, PPTP, Quake3, starcraft, tftp и другие).
Межсетевой экран SPI (Stateful Packet Inspection) защитит вашу внутреннюю сеть от несанкционированного доступа и различного рода DoS-атак (атаки типа “Отказ в обслуживании”), а также сразу оповестит вас об этом по электронной почте. С его помощью вы также можете контролировать доступ к интернет из внутренней сети.
Функция поддержки виртуальных серверов и DMZ обеспечит доступ из интернет к ресурсам ваших серверов, расположенных во внутренней сети.
Функция UPnP поможет быстро настроить маршрутизатор.
Встроенный сервер DHCP даст возможность клиентам из внутренней сети получать сетевые параметры автоматически.
Вы можете легко настроить маршрутизатор через обычный веб-браузер.
Конечно на 2 мегабайтах flash и 16 мегабайтах RAM памяти в модели без USB порта сильно не разгуляешься, но в умелых руках со своими технико-экономическими показателями, данное устройство может занять свою нишу. Навряд ли получится его использовать как почтовый или Web сервер, да он для этого и не предназначен.
Это маршрутизатор: без вращающихся механических элементов, с малыми габаритами, питанием 12V, с максимальной пропускной способностью WAN-LAN до 55 МБит/сек. Поэтому он может быть установлен как в офисе, в квартире, так и на крыше дома.
Но! Имея USB Flash (USB-HDD) мы запросто можем превратить маршрутизатор в полноценный сервер
у меня есть друг HAM (радиолюбитель), который без ума от всевозможных интеллектуальных микроустройств, а тем более от устройств в которых стоит Linux. А тем более от устройств с Linux'ом и поддержкой AX.25. Для него скорость в 2400 по радио на расстоянии 50км верх блаженства. Собрав систему с поддержкой AX.25, я ему доставил несказанное удовольствие. Планирует устанавливать он такие маршрутизаторы в горах и труднодоступных местах, где порой питание только от ветровой электростанции
Так как процессор довольно специфический, то Linux ядро изменено именно под него и оно относительно старое - 2.4.18. ( Обновление: Существуют патчи для 2.4.31 - см ссылки)
Совсем недавно компания Edimax предоставила исходные тексты ядра для скачивания, до этого момента приходилось пользоваться или уже скомпилированным ядром из 'родной' прошивки, или собирать ядро предоставленное компанией OvisLink (с некоторыми ограничениями - неработает: mtd и switch).
Также есть ограничение связанное с размерами flash памяти - ее нельзя использовать как полноценную файловую систему, так как ядро с ramdisk'ом почти не оставляет свободного места (на досуге надо будет поэкперементировать с JFFS).
Чтобы обойти это ограничение, мною был написан простой скрипт, который после загрузки загружает другой скрипт, который в свою очередь обновляет систему (содержимое ramdisk'а). Также можно через определенные промежутки времени выгружать изменившиеся файлы на tftp/ftp
сервер.
Второе и более красивое решение состоит в приобретении устройства с USB портом и USB-Flash к нему. По моему опыту это наиболее безхлопотное решение, позволяющее настроить полноценный linux сервер.
Есть отличная страница http://www.norocketscience.com/router/upgrade.htm и форум, где владельцы маршрутизаторов исправляют ошибки допущенные производителем.
Теперь, если Вы заинтересовались этим устройством, то Вы можете:
root
система которой находится на первом разделе USB Flash диска.
Поделюсь заметками и рекомендациями:
Данный маршрутизатор построен на чипе ADM5120 фирмы AdmTek (Infineon) который представляет собой высокопроизводительную и очень гибкий систему System On Chip (SOC) которая может использоваться для SOHO Gateway, NAT роутер, принт сервер, точки доступа WLAN, VPN шлюза, ядром VoIP шлюза.
Внутри себя этот чип содержит высокопроизводительный процессор MIPS32 4Kc 175 MHz/227 MIPS, сетевую подсистему, switch engine, поддержку PCI, USB, UART.
Существуют две разновидности процессора ADM5120 в BGA корпусе и ADM5120P в пластиковом PQFP корпусе, которые отличаются только набором периферии. Версия в BGA корпусе позволяет подключить до трех устройств PCI. Именно BGA версия используется во всех роутерах с WiFi. В данном случае в качестве устройства PCI выступает обычная MiniPCI карточка WiFi 802.11g. (PCI и MiniPCI электрически совместимы).
Содержит 6 портов и обладает следующими возможностями:
SDRAM
FLASH
и все это удовольствие за ~$35
Консольного порта в его привычном виде нет. Для него предусмотрен разъем на плате обозначенный JP2
.
И для того, чтобы иметь доступ к консоли и возможность прошивать маршрутизатор через кабель,
Вам необходимо будет собрать переходник (level shifter) с ~12V (RS232) на 3.3V. Для этого потребуется микросхема MAX232
или ей подобная.
IMHO проще всего взять шнурок к мобильному телефону, обычно они все используют напряжение 3.3V. Например, идеально подходят шнуры от телефонов Siemens как от старых S/25/С25/C35 так и от более современных С55/CF62. Стоят они как правило 5..10$. Подходят как Serial так и USB шнуры. Первый - это собранный и залитый пластиком переходник, а во втором случае вы просто получите дополнительный преобразователь USB-to-Serial.
На плате маршрутизатора имеется разъем подписанный как JP2. К нему необходимо подключать кабель согласно разводки:
JP2 2-o o o o-8 1-o o o o-7 1 - Rx 7 - Tx 8 - Gnd
Внимание: подключение COM порта напрямую к маршратизатору непременно выведет последний из строя.
Подключайтесь любой терминальной программой на скорости 115200 бит/сек, 8 бит, No parity, 1 stopbit
Tip: Консольный вход очень чувствительный к различным шумам и наводкам, поэтому, если они у
Вас появляются - проверьте кабеля, не приближайте их к источникам помех. Как вариант можно установить конденсатор 0.1 мкф между 1 и 8 контактами.
Jeroen Domburg написал прекрасное HOWTO по установке компонентов для поддержки USB в те роутеры где их нет.
Процессор ADM5120 поддерживает JTAG (IEEE 1149.1) и MIPS EJTAG стандарты, которые предназначены для отладки и тестирования устройства. EJTAG - это расширение обычного JTAG, добавляет возможности пошаговой отладки процессоров MIPS и т.д.
Выводы процессора для JTAG (корпус PQFP):
134 /TRST 135 TDI 136 TDO 137 TMS 139 TCK
Разъем на плате BR-6104 обозначен как JP1. Разводка соответствует так называемому EJTAG 2.5 стандарту. В прочих устройствах может использоваться другая разводка например 20-pin EJTAG 2.0 .
n_TRST 1 2 GND TDI 3 4 GND TDO 5 6 GND TMS 7 8 GND TCK 9 10 GND n_SRST 11 12 DINT 13 14 VCC
Вывод DINT в ADM5120 не используются. Сигнал n_TRST (TAP Reset) служит для сброса TAP-контроллера независимо от схем остального процессора. Активный уровень - низкий (n_ указывает на негативную логику). Вобщем-то для функционирования JTAG он не нужен, но практически во всех устройствах пин n_TRST соединен с земляной шиной через резистор 1Ком и следовательно JTAG отключен (постоянно находится в состоянии сброса). Поэтому в простых JTAG пробниках нужно подать лог.“1” или соединить его с VCC через резистор примерно 300Ом. Более совершенные пробники управляют этим сигналом непосредственно. Вывод n_SRST дублирует обычный аппаратный сброс, но компоненты (R22) не припаяны на плате. Питание +3.3V можно снять с 14-го контакта разъема.
Самый простой и надежный JTAG интерфес - Macraigor Wiggler, который подключается к LPT порту. Состоит из одной микросхемы 74HC244(1564АП5), набора резисторов и одного транзистора. Есть и более простые схемы на LPT, состоящие просто из резисторов, но по отзывам они работают менее надежно. Микросхема серии 74HC (Highspeed CMOS) применяется, постольку поскольку она может работать на любом напряжении от +2 до +6 V, а напряжение процессора +3.3V .
Существуют несколько версий протокола MIPS EJTAG (1.0, 2.0, 2.5 и т.д.). Для доступа к памяти могут применяться два метода: EJTAG DMА и PrAcc. Первый метод гораздно быстрее и проще в реализации, но есть далеко не во всех процессорах. Версии EJTAG 2.5 и 2.6 более ориенированы на отладку и опция EJTAG DMA в них чаще всего отсутствует. ADM5120 реализует EJTAG 2.6 и к сожалению в ADM5120 поддержки EJTAG DMA нет. Чтобы получить доступ к памяти по методу PrAcc, необходимо загружать небольшие кусочки кода в процессор и читать результаты.
Фирма Macraigor бесплатно предоставляет утилиту OCD Debugger. Он может работать совместно с Wiggler, схема которого приведена выше (под Windows). OCD Debugger позволяет выполнять команды JTAG и содержит небольшой простой пошаговый отладчик MIPS. Также Macraigor предлагает Demo-версию утилиты OCD Flash Programmer (полная версия платная).
Другая популярная утилита - Openwince JTAG Tools. Она также поддерживает Macraigor Wiggler. К сожалению, сайт программы давно не обновлялся, однако в CVS новые версии появлются довольно активно. Можно использовать версию, в которую Marek Michalkiewicz добавил поддержку EJTAG PrAсс:jtag-0.6-cvs-20051228.
К сожалению, ADM5120 не позволяет определить тип процессора через регистр IDCODE:
jtag> cable ppdev /dev/parport0 WIGGLER Initializing Macraigor Wiggler JTAG Cable on ppdev port /dev/parport0 jtag> detect IR length: 5 Chain length: 1 Device Id: 00000000000000000000000000000001 Unknown manufacturer! chain.c(110) Part 0 without active instruction chain.c(133) Part 0 without active instruction chain.c(110) Part 0 without active instruction
Однако определение EJTAG флагов работает и возвращает вполне осмысленные значения:
jtag> instruction length 5 jtag> register IMP 32 jtag> instruction IMPCODE 00011 IMP jtag> instruction IMPCODE jtag> shift ir jtag> shift dr jtag> dr 01000001010000000100000000000000
Расшифровка:
31:29 EJTAGver 010 Version 2.6 28 R4k/R3k 0 R4k 24 DINTsup 1 supported 22:21 ASIDsize 10 8-bit ASID 16 MIPS16e 0 not supported 14 NoDMA 1 No EJTAG DMA support 0 MIPS32/64 0 MIPS32
Через порт JTAG в принципе возможно чтение/запись flash/sdram памяти напрямую.
Приветствуется дальнейшая информация по JTAG.
В основном вся логика представлена набором shell
скриптов, все относительно просто.
HTTP сервером является пропатченный GoAhead WebServer, в котором находится логика работы с пользователем.
Программа /bin/flash
реализует функциональность сохранения/восстановления параметров (NVRAM). Она может читать/записывать области памяти FLASH, упомянутые ниже как HS
, DS
и CS
. Параметры предопределены и привязаны (внутри программы) к определенным областям FLASH памяти.
К сожалению при загрузке на консоле запускается программа требующая ввести username/password, которые известны только производителю. Поэтому, чтобы получить shell доступ, нужно как минимум прошить модифицированную прошивку
Обновлено: Есть также способ получить shell доступ на консоли в родной прошивке, для этого в разделе 'Virtual Server' заводим конфигурацию, но в поле коментария вводим `killall setup`
(Обязательно с обратными ковычками)
Также запускается демон diagd
слушающий TCP порт 31727, который позволяет локально устанавливать MAC адреса и количество интерфейсов, а также удаленно: получать информацию о устройстве, менять MAC адреса, устанавливать частотный диапазон WLAN, и другие функции, которые скорей всего будут включены в слудующих версиях.
Разработчиками написан модуль для ядра реализующий URL blocking, имеются файлы /proc/url_blocking_list
и /proc/trigger_port_list
Блочное устройство, предоставляющее доступ к flash памяти. Крайне не советую что-либо записывать в диапазон 0x000000 - 0x008000, иначе велика вероятность превратить маршрутизатор в кирпич.
Кнопка reset
. В цикле опрашивается скриптом monitor.sh
, в случае нажатия делает reboot
Светодиод питания.
echo "led off" > /dev/led0 # turn on echo "led on" > /dev/led0 # turn off echo "led blink 100" >/dev/led0 # blink with freq 0.1
неизвестно, возможно светодиод WLAN
консоль
FLASH память начинается с физического адреса 0x1fc00000. В соответствии с архитектурой MIPS она также видна по адресам 0x9fc00000 (KSEG0) и 0xbfc00000 (KSEG1).
0x000000 - 0x007fff boot loader 0x008000 - 0x0083ff 'HS' section = hardware setting (ethernet MAC addresses, etc.) 0x008400 - 0x009fff 'DS' section = default config 0x00a000 - 0x00bbff 'CS' section = current config 0x00bc00 - 0x00ffff empty 0x010000 - 0x01ffff WB4K web image (webpages-6104k.bin.gz) 0x020000 - 0x1fffff CSYS system image (vmlinux.bin.bz2)
HS, DS и CS секции начинаются с 6-ти байтного заголовка:
char tag[2]; /* "HS", "DS" or "CS" */ char version[2]; /* currently HS = "01", DS = CS = "08" */ uint16_t length;
WB4K и CSYS секции всегда начинаются на границе 64K блока (0x10000) и содержат в самом начале 12 байтовый заголовок:
char signature[4]; /* "WB4K" or "CSYS" */ uint32_t startAddress; uint32_t length;
Некоторые роутеры используют сигнатуру WBIP вместо WB4K.
17KB неиспользуемого места + 64KB занимаемые webpages.bin, так что потенциально выигрываем 81KB.
Прошивки от Edimax и Sweex (версий 2.65/2.75) имееют следующий формат
V2.65 Block name V2.75 +--------------------+ 0x00 + 0x00+--------------------+ | WB4K Header | | | WB4K Header | +--------------------+ 0x0c | 0x0c+--------------------+ | | | | | | | | | | | webpages-6104k.bin | webpages.bin | webpages-6104k.bin | | gzipped | | | gzipped | | | | | | +--------------------+ | +--------------------+ | padding | | | padding | +--------------------+ 0x20000 + 0x10000+--------------------+ | CSYS header | csys.bin | CSYS header | +--------------------+ 0x2000c + 0x1000c+--------------------+ | | | | | | | | | | | vmlinux.bin | vmlinux.bin.gz | vmlinux.bin | | gzipped | | | gzipped | | | | | | | | | | | +--------------------+ + +--------------------+
Заголовки “WB4K header” и “CSYS header” описаны выше.
После заголовка CSYS идет запакованный образ ядра Linux с присоединенным (embedded) образом RAM-диска. Полностью данный образ ядра vmlinux.bin имеет следующий формат :
V2.65 V2.75 +--------------------+ 0x00 + 0x00+--------------------+ | | | | | | Kernel | kernel.bin | Kernel | | | | | | +--------------------+ 0x16d000 + 0x172000+--------------------+ | ramdrive.img | | | ramdrive.img | | gzipped | --> ram image tmpimg.img.gz (bz2) | bzip2 | | +padding | | | +padding | +--------------------+ 0x28f000 + 0x27c000+--------------------+
После удаления заголовка CSYS и распаковки vmlinux.bin.gz :
$ perl -e 'print 0x10000+0xC' 65548 $ dd if=EdiEngBR6104K_2.75.bin of=vmlinux.bin.gz bs=1 skip=65548 $ gunzip vmlinux.bin.gz
мы имеем 2 дополнительных блока:
Offset Length 0x000000 0x172000 kernel 0x172000 0x27с000 RAM image block (ramdrive.img)
Tip1: Отмечу, что ramdisk может быть сжат не gzip, а и bzip2.
Таким образом, образ файловой системы ramdisk (ramdrive.img) получается сжат дважды :).
Загрузчик BootLoader ищет заголовок CSYS
во FLASH и расжимет ядро в память DRAM. В загрузчике встроен декомпрессор gzip (zlib) поэтому метод компрессии может быть только такой. Например, для прошивки 2.75 BootLoader декомпрессирует блок с адреса 0xbfc1000c. Реультаты декомпрессии размещаются в DRAM по адресу 0x80002000 и управление передается на 0x800026d8. Эти адреса жестко фиксированы и их следует учитывать при изготовлении собственных прошивок.
Tip2: На самом деле, загрузчик ищет заголовок CSYS header в памяти по адресам 0x10000 + n*0x10000 (где n 0,1,2). Т.е можно располагать ядро и без webpages-6104k.bin (я так и не понял зачем он нужен), и без главного заголовка.
Когда ядро Linux получает управление, оно само находит embedded образ файловой системы ramdrive.img и монтирует его как /dev/ram0 .
Если выбрать пункт BootLoader-a “b” то у нас есть возможность загрузить собственное ядро в память DRAM и запустить на исполнение, не загружая его во FLASH. Загрузка происходит по протоколу X-Modem, данные размещаются по адресу 0x80810000. После загрузки BootLoader декомпрессирует данные в область 0x80020000 и передает управление как обычно. Таким образом, для загрузки из пункта “b” образ ядра vmlinux.bin.gz должен быть без заголовка “CSYS header”.
Файловая система присоединена (embedded) к ядру Linux. Данная технологи называется Embedded Init RAM Disk (initrd). Из себя она представляет образ корневой (root) файловой системы EXT2FS
, запакованный gzip или bzip2.
$ perl -e 'print 0x172000' 1515520 $ dd if=vmlinux.bin of=ramdrive.img.gz bs=1 skip=1515520 $ unzip ramdrive.img.gz
Полученный образ можно смонтировать:
$ mount -o loop ramdrive.img /mnt/edimax_ramdisk
На диске мы увидим обычные файлы ELF для процессора MIPS и стартовые скрипты системы. После изменения и отмонтирования umount
можно использовать новый ramdisk.img . Данный образ диска автоматически гененрируется утилитами buildroot
которые описаны ниже.
При загрузке, на консоле появляется следующее сообщение:
ADM5120 Boot:
Если нажать 3 раза пробел в течении около 1 сек, то появится загрузочное меню:
ADM5120 Boot: <--- press space 3x times Linux Loader Menu ==================== (a) Download vmlinuz to flash ... (b) Download vmlinuz to sdram (for debug) ... (c) Exit Please enter your key :
firmware
в FLASH. Требуется прошивка с CSYS
заголовком
Протокол передачи - XMODEM
Например, загружаем прошивку в FLASH:
Создаем firmware.bin
../bin/mksyshdr csys.bin vmlinux.bin.gz cat csys.bin vmlinux.bin.gz >firmware.bin
Загружаем полученный файл в FLASH через XMODEM:
Linux Loader Menu ==================== (a) Download vmlinuz to flash ... (b) Download vmlinuz to sdram (for debug) ... (c) Exit Please enter your key : a 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 Please enter your key : c jump to linux code!! LINUX started...
Tip: передавать следует не сразу после выбора меню, а через 5-7 сек.
Для того, чтобы иметь возможность собирать программы под MIPS архитектуру, Вам необходим кросс-компилятор и собранная uclibc2) для этой архитектуры. Есть 4 способа использовать MIPS toolchain:
gcc
и uclibc
для платформы MIPSMIPS toolchain
из собранного buildroot
toolchain-source
( см Ссылки )
Я использую третий способ, так как все равно использую buildroot.
При использовании USB накопителей можно использовать и более тяжеловесный (но стандартный) вариант библиотеки C - glibc
Buildroot - замечательный пакет, являющийся частью проекта uClibc специально предназначенный для сборки ramdisk'ов для встроенных и микро систем. Именно то, что нам необходимо!
Задачи buildroot
:
gcc
, binutils
, ccache
, etc)uclibc
, busybox
, etc)ext2
, cramfs
, jffs
)
При первом построении buildroot
загрузит с сети необходимые компоненты для построения (gcc, binutils, etc
), а далее те пакеты которые Вы выбрали в TARGETS
. Отмечу, что список пакетов, которые buildroot
собирает простым добавлением в достаточно велик, перечислю некоторые:
Написать Makefile для другого пакета большой сложности не составляет.
Настройка и сборка buildroot крайне проста:
Makefile
определяем архитектуру: ARCH:=mipsel
TARGETS
Небольшое описание структуры каталогов buildroot
:
build_mipsel/package-name/
лежат исходные тексты пакетовbuild_mipsel/root/
- готовая файловая система, которая превратится в ramdiskbuild_mipsel/staging_dir/
- скомпилированные утилиты для построенияmake/
содержит Makefile's
для загрузки, распаковки, конфигурации, компиляции, установки. sources/
содержит патчи и конфиги.sources/dl/
содержит загруженные с сети пакеты.sources/target_skeleton/
скелет файловой системыsources/device_table.txt
файл с описанием какие каталоги, файлы, устройства, сокеты нужно создать в готовой файловой системеroot_fs_mipsel
- готовый образ файловой системы ramdisk'а
Для конфигурации busybox
:
cd build_mipsel/busybox/ make menuconfig cp .config ../../sources/busybox.config cd -
Аналогичная процедура для uClibc.config
Процесс компиляции ядра мало чем отличается от компиляции для платформы x86, конечно это должен быть MIPS
кросс-компилятор и ядро специально для этого чипсета.
Перед компиляцией я устанавливаю переменные окружения:
export ARCH=mips export CC=mipsel-linux-gcc export CPP=mipsel-linux-cpp export CXX=mipsel-linux-g++ export AR=mipsel-linux-ar export CXXCPP=mipsel-linux-cpp export RANLIB=mipsel-linux-ranlib
Если использовать компиляторы из buildroot:
export PATH=/path/to/buildroot/build_mipsel/staging_dir/bin/:$PATH
Замечу, что в этом случае нет смысла вручную 'собирать' образ ядра с initrd
- пусть за Вас это сделает make vmlinux
. Для этого готовый ramdisk
требуется положить в arch/mips/ramdisk/ramdisk_el.gz
3) и установить [*] Embed root filesystem ramdisk into the kernel
в меню конфигурации ядра.
Подробности см. в arch/mips/ramdisk/Makefile
. Перед упаковкой gzip ядро из ELF преобразуется в бинарный формат.
В составе архива находящегося на сайте производителя (Linux-SC.zip) входят утилиты для построения образа для Flash и генерации заголовков CSYS.
Для того, чтобы иметь возможность распологать корневую файловую систему на USB носителе, требуется наложить патч смысл которого сводится в некоторой задержке монтирования, чтобы USB подсистема увидела и проинициализировала носитель.
Edimax в России
Infineon, Infineon ADM5120,
ADM5120P 2 Channel VoIP ATA
Canyon CN-WF512
OvisLink компания производящяя Linux устройство MU-9000VPN - Multimedia Server + VPN Router на чипсете ADM5120
Home Media Server (64M RAM, 32M Flash, 40-80G HDD), HMS300 Datasheet
http://www.dns120-linux.org - Linux устройство на чипсете Adm5120
google search D-Link 120
Компании 'Агатис' http://www.agatis.biz , которая является официальным дистрибутором фирм SWEEX и EDIMAX в Украине. А особенно Шафаренко Дмитрию - менеджеру по сбыту
Большое спасибо Андрею Ищенко и Адилю Изидинову за наводку, Воропай Александру, а также Игорю Залатову другу и “HAM'у”.
Vladislav Moskovets (Владислав Московец)
mail: adm5120 {at} vlad . org . ua
icq: 3703834
Буду рад любым замечаниям, конструктивной критике, предложениям, дополнительной информации.