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

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 14:16, 13 January 2009 (edit)
YuriKr (Talk | contribs)
(Добавляем USB порт)
← Previous diff
Current revision (15:25, 25 January 2011) (edit) (undo)
Ssuloev (Talk | contribs)
(Модификация прошивки)
 
(9 intermediate revisions not shown.)
Line 11: Line 11:
[[Image:USBWL520GCa5.jpg|thumb|200px|right|Общий вид]] [[Image:USBWL520GCa5.jpg|thumb|200px|right|Общий вид]]
-1. Заменить штатный блок питания 9V 1A на 5V 2A. +Для добавления порта USB нужно сделать следующее:
-2. На плате найти нераспаянный элемент NF1 – это разрыв линии data+ и data-, запаять туда резисторы 20 – 50 Ом (главное чтобы оба были одного номинала). В крайнем случае можно просто перемычки. +# Заменить штатный блок питания 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.
-3. Подводим +5V к разъему. F1 – шунт 0,2-0,5 Ом, либо перемычка. BF12 – перемычка. Если есть SMD конденсатор 0,1мкф, можно его впаять на место C9 или C130. У меня SMD не нашлось, впаял обычный керамический, между +5V USB и землей. Работать будет и без конденсатора. +Замена блока питания на 5-вольтовый позволяет подать питание на USB-устройство непосредственно с разъема питания. Можно оставить и штатный блок, но тогда для питания USB придется делать стабилизатор на 5 вольт (например, на КРЕН), а это - лишний источник тепла (и дополнительная доработка устройства).
- +
-4. Подводим землю к разъему. R56, R3 – перемычки. +
- +
-5. Припаиваем сам разъем (J3 на плате), контакты снизу вверх: +5V,data-,data+,GND. +
Line 25: Line 25:
==Модификация прошивки == ==Модификация прошивки ==
 +
 +Поддержка в прошивке (основано на методе, предложенном IronShaft для D-Link DIR-320, подкорректированого для использования в 2Мб устройствах)
 +
 +За основу берем прошивку micro-plus-ssh, в ней как раз достаточно места для драйверов, если удалить ssh и ppp, в остальном остается полная функциональность.
 +
 +1. Распаковываем прошивку с помощью [http://www.dd-wrt.com/dd-wrtv2/downloads/others/tornado/firmwaremodkit2-new-LZMA/firmwaremodkit2_x86.tar.bz2 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.
 +
 +Вставляем флешку в роутер, включаем питание, если раздел при загрузке смонтировался - увидим МЕГА, если не смонтировался - МИКРО.
 +
 +------
 +
 +[http://narod.ru/disk/4625295000/micro_plus_usb_asus520gc.bin.html Здесь] лежит прошивка 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 [http://narod.ru/disk/4645022000/mega.tar.gz.html здесь].
 +
 +------
 +
 +'''Источник:'''
 +
 +# http://www.dd-wrt.com/phpBB2/viewtopic.php?p=243363#243363
 +
 +
 +[[Category:Русская документация]]
 +
 +
 +
 +----------------------
 +
 +Сделал как описано, вроде бы заработало, однако при тщательной проверке обнаружились следующие проблемы:
 +
 +1) не видятся устройства подключенные через 4 порта хаба 2) не подменяется MAC-адрес WAN
 +
 +Примечание: на странице , где отображаются три MAC-адреса видно, что для LAN и Wireless они одинаковые (при загрузке прошивки micro-plus-ssh они все разные). Возможно проблема где-то здесь.
 +
 +Если кто-то сталкивался с таким поведением, просьба описать солюшен.

Current revision

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

 

Плата в чистом виде
Плата в чистом виде
Обвязка по питанию
Обвязка по питанию
Обвязка по линии данных
Обвязка по линии данных
Общий вид
Общий вид
Общий вид
Общий вид

Для добавления порта 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.

Замена блока питания на 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. http://www.dd-wrt.com/phpBB2/viewtopic.php?p=243363#243363



Сделал как описано, вроде бы заработало, однако при тщательной проверке обнаружились следующие проблемы:

1) не видятся устройства подключенные через 4 порта хаба 2) не подменяется MAC-адрес WAN

Примечание: на странице , где отображаются три MAC-адреса видно, что для LAN и Wireless они одинаковые (при загрузке прошивки micro-plus-ssh они все разные). Возможно проблема где-то здесь.

Если кто-то сталкивался с таким поведением, просьба описать солюшен.