Порт USB в ASUS WL-520GC и загрузка прошивки с USB FLASH

From DD-WRT Wiki

Revision as of 14:27, 13 January 2009 by YuriKr (Talk | contribs)
Jump to: navigation, search

Добавляем USB порт

 

Плата в чистом виде
Плата в чистом виде
Обвязка по питанию
Обвязка по питанию
Обвязка по линии данных
Обвязка по линии данных
Общий вид
Общий вид
Общий вид
Общий вид
  1. Заменить штатный блок питания 9V 1A на 5V 2A.
  2. На плате найти нераспаянный элемент NF1 – это разрыв линии data+ и data-, запаять туда резисторы 20 – 50 Ом (главное чтобы оба были одного номинала). В крайнем случае можно просто перемычки.
  3. Подводим +5V к разъему. F1 – шунт 0,2-0,5 Ом, либо перемычка. BF12 – перемычка. Если есть SMD конденсатор 0,1мкф, можно его впаять на место C9 или C130. У меня SMD не нашлось, впаял обычный керамический, между +5V USB и землей. Работать будет и без конденсатора.
  4. Подводим землю к разъему. R56, R3 – перемычки.
  5. Припаиваем сам разъем (J3 на плате), контакты снизу вверх: +5V,data-,data+,GND.



Модификация прошивки

Поддержка в прошивке (основано на методе, предложенном IronShaft для D-Link DIR-320, подкорректированого для использования в 2Мб устройствах)

За основу берем прошивку micro-plus-ssh, в ней как раз достаточно места для драйверов, если удалить ssh и ppp, в остальном остается полная функциональность.

1. Распаковываем прошивку с помощью FirmwareModKit 2. Заходим в каталог /rootfs/usr/sbin и удаляем 2 файла: dropbearmulti и pppd. 3. Копируем в папку /rootfs/lib/modules/<версия ядра>/ драйвера usbcore.o, usb-ohci.o, scsi_mod.o, usb-storage.o, sd_mod.o,ext2.o. (взять их можно из прошивок nokaid, mega и др, распаковав их с помощью FirmwareModKit). 4. Заходим в папку rootfs/sbin в основном имидже. 5. Перемещаем файл init в папку rootfs/usr/sbin 6. Создаем новый файл init, представляющий из себя скрипт: Code:

#!/bin/sh 
if [ $1 == "noinitrd" ] ; then 
    insmod /lib/modules/`uname -r`/usbcore.o 
    insmod /lib/modules/`uname -r`/usb-ohci.o 
    insmod /lib/modules/`uname -r`/scsi_mod.o 
    insmod /lib/modules/`uname -r`/usb-storage.o 
    insmod /lib/modules/`uname -r`/sd_mod.o  
    insmod /lib/modules/`uname -r`/ext2.o 
    sleep 8s 
    mount -t proc none /proc 
    mount -t ext2 -o noatime,nodiratime /dev/scsi/host0/bus0/target0/lun0/part1 /mnt 
    if [ -x /mnt/sbin/init ] ; then 
        mount -o move /proc /mnt/proc && \ 
        pivot_root /mnt /mnt/mnt && { 
            mount -o move /mnt/dev /dev 
            mount -o move /mnt/tmp /tmp 
            mount -o move /mnt/jffs /jffs 
            exec /sbin/init $* 
        } 
    else 
        exec /usr/sbin/init $* 
    fi 
else 
    exec /usr/sbin/init $* 
fi 


Не забываем сделать скрипт исполняемым.

7. Упаковываем прошивку, получившийся имидж шьем в роутер. В принципе, роутер уже работоспособен, он представляет собой роутер с прошивкой mcro_plus_ssh без поддержки ssh и pppoe.

8. Готовим USB флешку. Создаем на ней линукс раздел. Разделов может быть несколько, скрипт использует первый раздел. Раздел должен быть размером не менее 15 мегабайт.

9. Форматируем раздел в ext2. (Это ВАЖНО!)

10. Копируем содержимое rootfs МЕГА прошивки в свежеотформатированный раздел на флешке. Меняем владельца и группу всех файлов на root.

Вставляем флешку в роутер, включаем питание, если раздел при загрузке смонтировался - увидим МЕГА, если не смонтировался - МИКРО.