Порт USB в ASUS WL-520GC и загрузка прошивки с USB FLASH
From DD-WRT Wiki
Revision as of 14:17, 13 January 2009 (edit) YuriKr (Talk | contribs) (→Добавляем USB порт) ← Previous diff |
Revision as of 14:27, 13 January 2009 (edit) (undo) YuriKr (Talk | contribs) (→Модификация прошивки) Next diff → |
||
Line 21: | Line 21: | ||
==Модификация прошивки == | ==Модификация прошивки == | ||
+ | |||
+ | Поддержка в прошивке (основано на методе, предложенном 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. | ||
+ | |||
+ | Вставляем флешку в роутер, включаем питание, если раздел при загрузке смонтировался - увидим МЕГА, если не смонтировался - МИКРО. |
Revision as of 14:27, 13 January 2009
Добавляем 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.
Модификация прошивки
Поддержка в прошивке (основано на методе, предложенном 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.
Вставляем флешку в роутер, включаем питание, если раздел при загрузке смонтировался - увидим МЕГА, если не смонтировался - МИКРО.