Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Компиляция u-boot для 16MB flash для TL-WR941ND

Компиляция u-boot для 16MB flash для TL-WR941ND 22 мая 2017 12:16 #1

  • kt368
  • kt368 аватар
  • Offline
  • Новый участник
  • Сообщений: 3
  • Репутация: 0
Здравствуйте.
Хочу проапгрейдить роутер TP-Link TL-WR941Nd V3 - заменить 4 MB FLASH чип Spansion FL032PIF на 16 MB чип [url=WINBOND W25Q128FVSG . Нашёл [url=инструкцию для роутеров, базирующихся на AR 9331, но в моём используется AR9132, и, из-за чего U-Boot 1.1.4 modification не подходит. Далее мною была найдена инструкция по переделке роутера TP-LINK TL-MR3420v1, в которой рассказывается как перекомпилировать U-Boot из исходников, предоставляемых TP-Link'ом. Как я понял, мне нужно подправить файл wr941ndv2_v3/ap81fus/boot/u-boot/include/configs/ap81.h ? Заменить в нём
#define CFG_MAX_FLASH_SECT      128    /* max number of sectors on one chip */
на
#define CFG_MAX_FLASH_SECT      256    /* max number of sectors on one chip */
Потом скомпилировать U-Boot:
cd wr941ndv2_v3/build
mv Makefile Makefile.bak
mv Makefile.ap81fus Makefile
mkdir /home/YourUserName/images/ap81fus
make BOARD_TYPE=ap81fus uboot
Дальше нужно изменить в получившемся MAC, MODEL и PIN (инструкция, пункт 5):
5. Check the back of you router box, write down your MAC and PIN, write the mac and pin to your uboot.bin:
MAC 6 bytes from 0x1FC00
MODEL  8byte from 0x1FD00  (need to check the model flag, it shall be something like 34 20 00 01 00 00 00 01) 
PIN 8 bytes from 0x1FE00
Так вот, тут непонятно, что это за PIN, не помню что на роутере напечатан на щильдике?
Дальше нужно скомпилировать прошивку, я нашёл две методики:
Вариант 1 (отсюда): указать в конфиге /trunk/tools/firmware-utils/src/mktplinkfw.c
fw_max_len = 0xfc0000 /* for 16M Flash*/
Вариант 2 (отсюда):
For a 16 MB flash add a new section in target/linux/ar71xx/image/Makefile, e.g.
define Device/tl-wr710n-v1-16mb
    $(Device/tplink-16mlzma)
    BOARDNAME := TL-WR710N
    DEVICE_PROFILE := TLWR710
    TPLINK_HWID := 0x0710000F
    CONSOLE := ttyATH0,115200
endef
TARGET_DEVICES += tl-wr710n-v1-16mb
Естественно, мне нужно не лоб в лоб скопипастить, а добавить секцию о моём роутере, т.е. так:
define Device/tl-wr941nd-v3-16mb
    $(Device/tplink-16m)
    BOARDNAME := TL-WR941ND
    DEVICE_PROFILE := TLWR941
    TPLINK_HWID := 0x09410002
    TPLINK_HWREV := 2
endef
TARGET_DEVICES += tl-wr941nd-v3-16mb
Какой из этих путей правильный/рабочий?
Далее нужно скомпилировать прошивку, сделать дамп ART области из роутера, собрать в WinHex'е прошивку из U-Boot, firmware, ART. И прошить её программатором в новую флешку.
Всё верно?
Администратор запретил публиковать записи гостям.

Компиляция u-boot для 16MB flash для TL-WR941ND 22 мая 2017 15:39 #2

  • mszerg
  • mszerg аватар
  • Offline
  • Администратор
  • Сообщений: 504
  • Спасибо получено: 37
  • Репутация: 13
Я не могу вам сказать, что верно или нет, т.к. не делал подобную процедуру для ваших моделей роутеров.
Теоретически верно)

Если получится отпишитесь) Вполне возможно, что оно заработает с тем uboot, который сейчас в роутере.

Pin - да, он на роутере написан
Администратор запретил публиковать записи гостям.

Компиляция u-boot для 16MB flash для TL-WR941ND 22 мая 2017 15:48 #3

  • kt368
  • kt368 аватар
  • Offline
  • Новый участник
  • Сообщений: 3
  • Репутация: 0
Возможно пока не буду внутреннюю флешку увеличивать, попробую ещё раз с overlayfs на внешней USB флешке (пару лет назад USB порт распаял на плате). Раньше (на OpenWRT AA) были глюки с отваливанием USB устройства, надеюсь в CC это пофиксено. Собираю прошивку с поддержкой USB, о результатах отпишусь.

Update: Пересобрал прошивку с поддержкой USB storage, и настроил внешний overlay на USB флешке. Подожду недельку, посмотрю на стабильность системы.
Последнее редактирование: 23 мая 2017 08:38 от kt368.
Администратор запретил публиковать записи гостям.

Компиляция u-boot для 16MB flash для TL-WR941ND 05 июнь 2017 13:39 #4

  • kt368
  • kt368 аватар
  • Offline
  • Новый участник
  • Сообщений: 3
  • Репутация: 0
Ну вот, как и ожидал вижу глюки с USB флешкой, при активной работе по SSH (настраивал OpenVPN) после 2-х минут выполнения команды build-dh в dmesg высыпалось следующее:
[  582.000000] usb 1-1: USB disconnect, device number 2
[  582.310000] usb 1-1: new high-speed USB device number 3 using ehci-platform
[  582.460000] usb-storage 1-1:1.0: USB Mass Storage device detected
[  582.490000] scsi host1: usb-storage 1-1:1.0
[  583.490000] scsi 1:0:0:0: Direct-Access     SanDisk  Cruzer Fit       1.26 PQ: 0 ANSI: 5
[  583.500000] sd 1:0:0:0: [sdb] 7821312 512-byte logical blocks: (4.00 GB/3.72 GiB)
[  583.520000] sd 1:0:0:0: [sdb] Write Protect is off
[  583.520000] sd 1:0:0:0: [sdb] Mode Sense: 43 00 00 00
[  583.540000] sd 1:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[  583.550000]  sdb: sdb1 sdb2
[  583.560000] sd 1:0:0:0: [sdb] Attached SCSI removable disk
[  630.850000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 41, block 0)
[  630.860000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #41: comm ls: reading directory lblock 0
[  781.550000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #687: comm ash: reading directory lblock 0
[  781.570000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #347: comm ash: reading directory lblock 0
[  800.960000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 49, block 0)
[  804.160000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 15, block 0)
[  805.510000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 15, block 0)
[  825.350000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 49, block 0)
[  844.160000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #687: comm ash: reading directory lblock 0
[  931.130000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 41, block 0)
[ 1027.800000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #40: comm hotplug-call: reading directory lblock 0
[ 1230.430000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 41, block 0)
[ 1530.690000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 41, block 0)
а в logread такое:
Mon Jun  5 12:54:44 2017 kern.warn kernel: [  630.850000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 41, block 0)
Mon Jun  5 12:54:44 2017 kern.crit kernel: [  630.860000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #41: comm ls: reading directory lblock 0
Mon Jun  5 12:57:15 2017 kern.crit kernel: [  781.550000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #687: comm ash: reading directory lblock 0
Mon Jun  5 12:57:15 2017 kern.crit kernel: [  781.570000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #347: comm ash: reading directory lblock 0
Mon Jun  5 12:57:34 2017 kern.warn kernel: [  800.960000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 49, block 0)
Mon Jun  5 12:57:38 2017 kern.warn kernel: [  804.160000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 15, block 0)
Mon Jun  5 12:57:39 2017 kern.warn kernel: [  805.510000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 15, block 0)
Mon Jun  5 12:57:59 2017 kern.warn kernel: [  825.350000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 49, block 0)
Mon Jun  5 12:58:18 2017 kern.crit kernel: [  844.160000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #687: comm ash: reading directory lblock 0
Mon Jun  5 12:59:44 2017 daemon.notice netifd: wan (1181): Sending renew...
Mon Jun  5 12:59:44 2017 daemon.notice netifd: wan (1181): Lease of 93.170.55.210 obtained, lease time 600
Mon Jun  5 12:59:45 2017 kern.warn kernel: [  931.130000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 41, block 0)
Mon Jun  5 13:22:54 2017 kern.crit kernel: [ 1027.800000] EXT4-fs error (device sda1): ext4_find_entry:1289: inode #40: comm hotplug-call: reading directory lblock 0
Mon Jun  5 13:26:13 2017 daemon.info dnsmasq-dhcp[1319]: DHCPREQUEST(br-lan) 192.168.1.100 7c:05:07:0e:b9:63
Mon Jun  5 13:26:13 2017 daemon.info dnsmasq-dhcp[1319]: DHCPACK(br-lan) 192.168.1.100 7c:05:07:0e:b9:63 homepc
Mon Jun  5 13:26:16 2017 daemon.notice netifd: wan (1181): Sending renew...
Mon Jun  5 13:26:17 2017 daemon.notice netifd: wan (1181): Lease of 93.170.55.210 obtained, lease time 600
Mon Jun  5 13:26:17 2017 kern.warn kernel: [ 1230.430000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 41, block 0)
Mon Jun  5 13:31:17 2017 daemon.notice netifd: wan (1181): Sending renew...
Mon Jun  5 13:31:17 2017 daemon.notice netifd: wan (1181): Lease of 93.170.55.210 obtained, lease time 600
Mon Jun  5 13:31:17 2017 kern.warn kernel: [ 1530.690000] EXT4-fs warning (device sda1): __ext4_read_dirblock:884: error -5 reading directory block (ino 41, block 0)
Флешки пробовал разные, поведение аналогичное.
Если роутер загрузиться и его не трогать - то и неделю без проблем работает, в dmesg'e о USB ничего плохого нет.
Подскажите, как отследить что приводит к такой проблеме, а то сам не настолько в unix'е силён.
Администратор запретил публиковать записи гостям.