Порт USB в ASUS WL-520GC и загрузка прошивки с USB FLASH
From DD-WRT Wiki
[edit] Добавляем USB порт
Для добавления порта USB нужно сделать следующее:
- Заменить штатный блок питания 9V 1A на 5V 2A.
- На плате найти нераспаянный элемент NF1 – это разрыв линии data+ и data-, запаять туда резисторы 20 – 50 Ом (главное чтобы оба были одного номинала). В крайнем случае можно просто перемычки.
- Подводим +5V к разъему. F1 – шунт 0,2-0,5 Ом, либо перемычка. BF12 – перемычка. Если есть SMD конденсатор 0,1мкф, можно его впаять на место C9 или C130. У меня SMD не нашлось, впаял обычный керамический, между +5V USB и землей. Работать будет и без конденсатора.
- Подводим землю к разъему. R56, R3 – перемычки.
- Припаиваем сам разъем (J3 на плате), контакты снизу вверх: +5V,data-,data+,GND.
Замена блока питания на 5-вольтовый позволяет подать питание на USB-устройство непосредственно с разъема питания. Можно оставить и штатный блок, но тогда для питания USB придется делать стабилизатор на 5 вольт (например, на КРЕН), а это - лишний источник тепла (и дополнительная доработка устройства).
[edit] Модификация прошивки
Поддержка в прошивке (основано на методе, предложенном 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, представляющий из себя скрипт:
#!/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.
Вставляем флешку в роутер, включаем питание, если раздел при загрузке смонтировался - увидим МЕГА, если не смонтировался - МИКРО.
Здесь лежит прошивка MICRO-PLUS-USB c поддержкой USB, основанная на http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/V24_TNG/svn11218/dd-wrt.v24-11218_NEWD_micro-plus_ssh.bin
Содержимое rootfs MEGA здесь.
Источник:
Сделал как описано, вроде бы заработало, однако при тщательной проверке обнаружились следующие проблемы:
1) не видятся устройства подключенные через 4 порта хаба 2) не подменяется MAC-адрес WAN
Примечание: на странице , где отображаются три MAC-адреса видно, что для LAN и Wireless они одинаковые (при загрузке прошивки micro-plus-ssh они все разные). Возможно проблема где-то здесь.
Если кто-то сталкивался с таким поведением, просьба описать солюшен.