Итак, что же необходимо для использования USB хоста в Asus WL-520GC.
Железо.
Рассказываю самый простой способ (пришел к нему от более сложных)
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. Упаковываем прошивку, получившийся имидж шьем в роутер. В принципе, роутер
уже работоспособен (с прошивкой micro_plus_ssh без поддержки ssh и pppoe).
8. Готовим USB флешку. Создаем на ней линукс раздел. Разделов может быть несколько,
скрипт использует первый раздел. Раздел должен быть размером не менее 15 мегабайт.
9. Форматируем раздел в ext2. (Это ВАЖНО!)
10. Копируем содержимое rootfs МЕГА прошивки в свежеотформатированный раздел
на флешке. Меняем владельца и группу всех файлов на root.
Вставляем флешку в роутер, включаем питание, если раздел при загрузке смонтировался
- увидим МЕГА, если не смонтировался - МИКРО.
Здесь лежит прошивка MICRO-PLUS-USB c поддержкой USB, основанная
на
http://www.dd-wrt.com/dd-wrtv2/downl...o-plus_ssh.bin
Содержимое rootfs MEGA