Портируем OpenWRT на китайский безымянный роутер

Ладно, не портируем, а добавляем поддержку борды, чип то уже опенвртподдерживают в транке, но не суть.
Добыл я сию прелесть там, где обычно просаживаю деньги — на DX. Внутрях RTL3050F, 32MB RAM, 4MB FLASH, работает на частоте 320Mhz. Плюшки в виде усб и спрятанного внутрях уарта.
Фото в сборе:

Окей, что дальше? Первым делом, как и обычно, разбираем и подпаиваем штыри для уарта. Это я уже на автоматизме делаю.
УАРТ тут как обычно 4 ноги. GND, RX, TX and Vcc. Логика пашет на 3.3 вольтах (А вы чего ждали?), так что подпаиваем туда штыри, подключаем бас пират или иной мост на 3.3 вольтовый уарт, и начинаем красноглазие.

На борту стоит загрузчик убут, jtag’а нет и в помине (окирпичите — потом восстановить уже никак, только чип флеша отпаивать да зашивать!).
Ну и, конечно, берем из svn свежий опенврт. нам нужен разработческий транк, так как в стабильных билдах оно пока не поддерживается… Облом состоял в том, что ни один из сгенерированных опенвртшкой образов не грузился.
только образ для MOFI3500-3GN выдал кое какой выхлоп ядра, а потом заругался на mtd и невозможность подмонтировать корень. Видимо у того флеша было 8 мегабайт, а у нашего дружка 4 — разбивка не та.
Самое время заправиться кофе и браться за работу.

За три дня красноглазия вечерами я осилил:

  • Сварганил новый mach-type ‘mach-unbranded-3gn’
  • Починил скрипты, чтобы те правильно извлекали из нужного mtd раздела прошивку для wifi чипа.
  • Методом высоконаучного тыка разузнал на каких линиях висят светодиоды, и теперь ими всеми (5+1 штука) можно рулить через /sys/class/leds
  • Аналогичным образом сделал для двух кнопок сзади
  • Поправил скрипты паковки образов, чтобы они готовили корректно прошивку под наш роутер
  • Выслал патчи в список рассылки OpenWRT.
УСБ пахать отказался, потому я вытащил сырцы от асусовского роутера на том же чипе (в отличие от китайцев асус GPL соблюдает и исходники выкладывает исправно). Из заголовков стало ясно, что ралинк разжился усб контроллером у синопсиса, зовется оно dwc_otg, и работать может как усб хост, или как усб отг, но переключаться не умеет без перекомпиляции ядра.
Спасибо индусам из синопсиса, которые начихали на ohci/ehci, и изобрели свой велосипед с блэкджеком… эээ… с шахматами и поэтессами. В итоге код лежит в drivers/usb/dwc_otg выглядит как белый в центре черного квартала.
Layne Edwards из рассылки OpenWRT-devel уже опередил меня и патчи под свежее ядро есть, но:
  • Я их еще не опробовал
  • Их нет в OpenWRT транке
Так что с усб придется недельку подождать, пока я соберусь их накатать.
Чтобы прошиться надо подрубиться к уарту, 57600 baud 8n1 (для чайников: скрость 57600, 8 бит данных, нет четности, 1 стоповый бит, без программного управления потоком, без аппаратного управления потоком).
Как только оно прочихается и будет виден обратный отсчет — давим кнопочку «ANY», выбираем «2».
Для прошивки на компьютере надо будет поднять tftp сервер — так оно по эзернету льет на роутер прошивку.
Если все сделать правильно, то в скором времени в логе через уарт можно увидеть такое:

U-Boot 1.1.3 (Apr 7 2010 - 09:43:57)

Board: Ralink APSoC DRAM: 32 MB
relocate_code Pointer at: 81fac000
======= config usb otg =====
flash_protect ON: from 0xBF000000 to 0xBF0205C3
protect on 0
protect on 1
protect on 2
protect on 3
protect on 4
protect on 5
protect on 6
protect on 7
protect on 8
protect on 9
flash_protect ON: from 0xBF030000 to 0xBF03FFFF
protect on 10
============================================
Ralink UBoot Version: 3.2
--------------------------------------------
ASIC 3052_MP2 (Port5<->None)
DRAM COMPONENT: 256Mbits
DRAM BUS: 16BIT
Total memory: 32 MBytes
Date:Apr 7 2010 Time:09:43:57
============================================
icache: sets:128, ways:4, linesz:32 ,total:16384
dcache: sets:128, ways:4, linesz:32 ,total:16384

##### The CPU freq = 320 MHZ ####

SDRAM bus set to 16 bit
SDRAM size =32 Mbytes

Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
9: Load Boot Loader code then write to Flash via TFTP.
0

3: System Boot system code via Flash.
## Booting image at bf050000 ...
Image Name: MIPS OpenWrt Linux-2.6.39.2
Created: 2011-08-04 17:34:58 UTC

System Control Status = 0x00400000
Image Type: MIPS Linux Kernel Image (lzma compressed)
Data Size: 804635 Bytes = 785.8 kB
Load Address: 80000000
Entry Point: 80000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 80000000) ...
## Giving linux memsize in MB, 32

Starting kernel ...

Linux version 2.6.39.2 (necromant@ilwyn) (gcc version 4.5.4 20110526 (prerelease) (Linaro GCC 4.5-2011.06-0) ) #18 Thu Aug 4 21:34:21 MSD 2011
bootconsole [early0] enabled
CPU revision is: 0001964c (MIPS 24Kc)
Ralink RT3350 id:1 rev:2 running at 320.00 MHz
Determined physical RAM map:
memory: 02000000 @ 00000000 (usable)
Initrd not found or empty - disabling initrd
Zone PFN ranges:
Normal 0x00000000 -> 0x00002000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0x00000000 -> 0x00002000
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
Kernel command line: board=NONAME-3GN mtdparts=physmap-flash.0:192k(u-boot)ro,64k(devdata)ro,64k(devconf)ro,832k(kernel),2944k(rootfs),3776k@0x50000(firmware) console=ttyS1,57600 rootfstype=squashfs,jffs2
PID hash table entries: 128 (order: -3, 512 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Primary instruction cache 16kB, VIPT, 4-way, linesize 32 bytes.
Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes
Writing ErrCtl register=0007a000
Readback ErrCtl register=0007a000
Memory: 30032k/32768k available (1849k kernel code, 2736k reserved, 312k data, 148k init, 0k highmem)
SLUB: Genslabs=9, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:48
console [ttyS1] enabled, bootconsole disabled
console [ttyS1] enabled, bootconsole disabled
Calibrating delay loop... 212.58 BogoMIPS (lpj=1062912)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
NET: Registered protocol family 16
MIPS: machine is Unbranded 3G router from DX
bio: create slab at 0
Switching to clocksource MIPS
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
squashfs: version 4.0 (2009/01/31) Phillip Lougher
JFFS2 version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
msgmni has been set to 58
io scheduler noop registered
io scheduler deadline registered (default)
Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0x10000500 (irq = 13) is a 16550A
serial8250: ttyS1 at MMIO 0x10000c00 (irq = 20) is a 16550A
physmap platform flash device: 00800000 at bf000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank. Manufacturer ID 0x0000c2 Chip ID 0x0022a8
Amd/Fujitsu Extended Query Table at 0x0040
Amd/Fujitsu Extended Query version 1.1.
Silicon revision: 0
Address sensitive unlock: Required
Erase Suspend: Read/write
Block protection: 4 sectors per group
Temporary block unprotect: Supported
Block protect/unprotect scheme: 4
Number of simultaneous operations: 0
Burst mode: Not supported
Page mode: Not supported
Vpp Supply Minimum Program/Erase Voltage: 9.5 V
Vpp Supply Maximum Program/Erase Voltage: 10.5 V
Top/Bottom Boot Block: Bottom boot
number of CFI chips: 1
cmdlinepart partition parsing not available
RedBoot partition parsing not available
Using physmap partition information
Creating 6 MTD partitions on "physmap-flash.0":
0x000000000000-0x000000030000 : "u-boot"
0x000000030000-0x000000040000 : "config"
0x000000040000-0x000000050000 : "factory"
0x000000050000-0x000000120000 : "kernel"
0x000000120000-0x000000800000 : "rootfs"
mtd: partition "rootfs" extends beyond the end of device "physmap-flash.0" -- size truncated to 0x2e0000
mtd: partition "rootfs" set to be root filesystem
mtd: partition "rootfs_data" created automatically, ofs=260000, len=1A0000
0x000000260000-0x000000400000 : "rootfs_data"
0x000000050000-0x000000800000 : "firmware"
mtd: partition "firmware" extends beyond the end of device "physmap-flash.0" -- size truncated to 0x3b0000
TCP westwood registered
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear
All bugs added by David S. Miller
lib80211: common routines for IEEE802.11 drivers
VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
Freeing unused kernel memory: 148k freed
- preinit -
Press the [f] key and hit [enter] to enter failsafe mode
- regular preinit -
JFFS2 notice: (290) jffs2_build_xattr_subsystem: complete building xattr subsystem, 1 of xdatum (1 unchecked, 0 orphan) and 4 of xref (0 dead, 2 orphan) found.
switching to jffs2
- init -

Please press Enter to activate this console. Compat-wireless backport release: compat-wireless-2011-06-23
Backport based on wireless-testing.git master-2011-06-22
cfg80211: Calling CRDA to update world regulatory domain
device eth0.1 entered promiscuous mode
device eth0 entered promiscuous mode
br-lan: port 1(eth0.1) entering forwarding state
br-lan: port 1(eth0.1) entering forwarding state
PPP generic driver version 2.4.2
ip_tables: (C) 2000-2006 Netfilter Core Team
NET: Registered protocol family 24
nf_conntrack version 0.5.0 (471 buckets, 1884 max)
cfg80211: World regulatory domain updated:
cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)

BusyBox v1.18.5 (2011-08-02 21:37:04 MSD) built-in shell (ash)
Enter 'help' for a list of built-in commands.

_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
ATTITUDE ADJUSTMENT (bleeding edge, r27878) ----------
* 1/4 oz Vodka Pour all ingredients into mixing
* 1/4 oz Gin tin with ice, strain into glass.
* 1/4 oz Amaretto
* 1/4 oz Triple sec
* 1/4 oz Peach schnapps
* 1/4 oz Sour mix
* 1 splash Cranberry juice
-----------------------------------------------------
root@OpenWrt:/#

Портируем OpenWRT на китайский безымянный роутер: 14 комментариев

  1. «Починил скрипты, чтобы те правильно извлекали из нужного mtd раздела прошивку для wifi чипа.»

    А можно по подробней?

  2. В общем есть dlink dir300 b2, внутри Ralink RT3350 id:1 rev:2, поставил на него (собранную из сырцов) openwrt, все работает, кроме wifi, насколько я понял, чипсет не определяет:

    «phy0 -> rt2800_init_eeprom: Error — Invalid RF chipset detected.
    phy0 -> rt2x00lib_probe_dev: Error — Failed to allocate device.»

    Собрал kmod-rt2x00-lib с дебагфс (чтоб глянуть что происходит при загрузки модуля для wifi) и он мне показал такую картину:

    «phy0 -> rt2x00lib_request_eeprom_file: Info — Loading EEPROM data from ‘RT305X.eeprom’.
    phy0 -> rt2800_validate_eeprom: EEPROM recovery — MAC: 8a:ea:40:83:05:fd
    phy0 -> rt2x00_set_chip: Info — Chipset detected — rt: 2872, rf: 0000, rev: 0200.
    phy0 -> rt2800_init_eeprom: Error — Invalid RF chipset detected.
    phy0 -> rt2x00lib_probe_dev: Error — Failed to allocate device.»

    Отсюда видно что он не правильно из eeprom информацию о чипе поднимает «rf: 0000» а должно быть «rf: 000b» судя по комментарию из rt2800.h

    «/*
    * RF chip defines.
    *
    * RF2820 2.4G 2T3R
    * RF2850 2.4G/5G 2T3R
    * RF2720 2.4G 1T2R
    * RF2750 2.4G/5G 1T2R
    * RF3020 2.4G 1T1R
    * RF2020 2.4G B/G
    * RF3021 2.4G 1T2R
    * RF3022 2.4G 2T2R
    * RF3052 2.4G/5G 2T2R
    * RF2853 2.4G/5G 3T3R
    * RF3320 2.4G 1T1R(RT3350/RT3370/RT3390)
    * RF3322 2.4G 2T2R(RT3352/RT3371/RT3372/RT3391/RT3392)
    * RF3853 2.4G/5G 3T3R(RT3883/RT3563/RT3573/RT3593/RT3662)
    * RF5370 2.4G 1T1R
    * RF5390 2.4G 1T1R
    */
    #define RF2820 0x0001
    #define RF2850 0x0002
    #define RF2720 0x0003
    #define RF2750 0x0004
    #define RF3020 0x0005
    #define RF2020 0x0006
    #define RF3021 0x0007
    #define RF3022 0x0008
    #define RF3052 0x0009
    #define RF2853 0x000a
    #define RF3320 0x000b
    #define RF3322 0x000c
    #define RF3853 0x000d
    #define RF5370 0x5370
    #define RF5390 0x5390»

    Я попробовал схитрить и изменил строку

    #define RF3320 0x000b
    на
    #define RF3320 0x0000

    После чего собрал заново openwrt и модуль вроде как подгрузился:

    Registered led device: rt2800pci-phy0::radio
    Registered led device: rt2800pci-phy0::assoc
    Registered led device: rt2800pci-phy0::quality

    индикатор wifi загорелся, но точку никто не видит.

    root@OpenWrt:~# ifconfig

    mon.wlan0 Link encap:UNSPEC HWaddr CE-20-33-56-5C-23-00-00-00-00-00-00-00-00-00-00
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000

    wlan0 Link encap:Ethernet HWaddr CE:20:33:56:5C:23
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:4180 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B) TX bytes:445100 (434.6 KiB)

    root@OpenWrt:~#

    root@OpenWrt:~# iwconfig

    wlan0 IEEE 802.11bgn Mode:Master Frequency:2.462 GHz Tx-Power=20 dBm
    RTS thr:off Fragment thr:off
    Power Management:off

    mon.wlan0 IEEE 802.11bgn Mode:Monitor Tx-Power=20 dBm
    RTS thr:off Fragment thr:off
    Power Management:off

    root@OpenWrt:~#

    А если перезагрузиться, то конфиг вайфая постоянно разростался, т.е. при каждой загрузке туда прописывался «новое» wifi устройство различия между которыми были только в мак адресах, вот результат 3-х перезагрузок.

    config wifi-device radio0
    option type mac80211
    option channel 11
    option macaddr 3e:3b:03:6c:4f:e6
    option hwmode 11ng
    option htmode HT20
    list ht_capab GF
    list ht_capab SHORT-GI-20
    list ht_capab SHORT-GI-40
    # REMOVE THIS LINE TO ENABLE WIFI:
    option disabled 0

    config wifi-iface
    option device radio0
    option network lan
    option mode ap
    option ssid OpenWrt
    option encryption none

    config wifi-device radio1
    option type mac80211
    option channel 11
    option macaddr ca:0c:76:46:4a:28
    option hwmode 11ng
    option htmode HT20
    list ht_capab GF
    list ht_capab SHORT-GI-20
    list ht_capab SHORT-GI-40
    # REMOVE THIS LINE TO ENABLE WIFI:
    option disabled 1

    config wifi-iface
    option device radio1
    option network lan
    option mode ap
    option ssid OpenWrt
    option encryption none

    config wifi-device radio2
    option type mac80211
    option channel 11
    option macaddr ce:20:33:56:5c:23
    option hwmode 11ng
    option htmode HT20
    list ht_capab GF
    list ht_capab SHORT-GI-20
    list ht_capab SHORT-GI-40
    # REMOVE THIS LINE TO ENABLE WIFI:
    option disabled 1

    config wifi-iface
    option device radio2
    option network lan
    option mode ap
    option ssid OpenWrt
    option encryption none

    Причем после первой загрузки wifi был включен «option disabled 0» а после второй и третей прописывалось «новое» wifi устройство с «option disabled 1» и соответственно при загрузке wifi не включался.

    Насколько я понял тут проблема с извлечением информации из RT305X.eeprom. Может подскажешь как извлечь/узнать правильную информацию о чипе из eeprom?

    1. В общем ситуэйшн примерно такой. Фирмваря для вафли зашита на отдельном mtd разделе обычно, потому лучше всего для начала загрузить оригинальную прошу и глянуть разбивку mtd. Это один из 64к разделов, в моем случае — factory. То, как происходит процедура извлечения eeprom’а можно узнать в файлике лежащим в /etc/hotplug.d/firmware/
      Еще смотреть содержимое /lib/ramips.sh
      Удачи

  3. кусок /etc/hotplug.d/firmware/10-rt2x00-eeprom

    «case «$FIRMWARE» in
    «RT288X.eeprom» | \
    «RT305X.eeprom»)
    . /lib/ramips.sh

    local board=$(ramips_board_name)

    case $board in
    dir-300-b1 | \
    dir-600-b1 | \
    dir-600-b2)
    rt2x00_eeprom_extract «devdata» 16384 272″
    ;;

    вот что в /lib/ramips.sh происходит

    «ramips_board_name() {
    local machine
    local name

    machine=$(awk ‘BEGIN{FS=»[ \t]+:[ \t]»} /machine/ {print $2}’ /proc/cpuinfo)

    case «$machine» in
    *»Argus ATP-52B»)
    name=»argus-atp52b»
    ;;
    *»Aztech HW550-3G»)
    name=»hw550-3g»
    ;;
    *»DIR-300 B1″)
    name=»dir-300-b1″
    ;;
    *»DIR-600 B1″)
    name=»dir-600-b1″
    ;;
    *»DIR-600 B2″)
    name=»dir-600-b2″»

    а вот и сам /proc/cpuinfo

    «root@OpenWrt:~# cat /proc/cpuinfo
    system type : Ralink RT3350 id:1 rev:2
    machine : D-Link DIR-300 B1
    processor : 0
    cpu model : MIPS 24Kc V4.12
    BogoMIPS : 212.58
    wait instruction : yes
    microsecond timers : yes
    tlb_entries : 32
    extra interrupt vector : yes
    hardware watchpoint : yes, count: 4, address/irw mask: [0x0000, 0x0698, 0x0c90, 0x00e8]
    ASEs implemented : mips16
    shadow register sets : 1
    kscratch registers : 0
    core : 0
    VCED exceptions : not available
    VCEI exceptions : not available»

    по идее извлечение самого eeprom происходит корректно т.к. часть нужной информации извлекается-же:
    «Chipset detected – rt: 2872, rf: 0000, rev: 0200.»
    т.е. ревизию и rt он видит (или я путаю и он их берет не из eeprom?), а вот инфу о rf чипе не находит. Я думаю инфу о мак адресе тоже не находит, поэтому при новых загрузках и прописывает в конфиг новое устройство с другим мак адресом. Да и судя потому, что «рабочую» точку никто не видит, там еще где-то проблемы есть. И что с этим всем делать тоже х.з. Вскрывать пациэнта не охота, да и роутер вроде как «боевой» раздает инет на 5 компов (по проводам) wifi вроде как без надобности, но хотелось бы, на случай надобности просто включить его, а не перешивать роутер на другую прошивку где wifi работает.

    Кстати вот что еще в openwrt dmesg выводит.

    «Kernel command line: board=DIR-300-B1 mtdparts=physmap-flash.0:192k(u-boot)ro,64k(devdata)ro,64k(devconf)ro,832k(kernel),2944k(rootfs),3776k@0x50000(firmware) console=ttyS1,57600 rootfstype=squashfs,jffs2»

    т.е. 64k раздела 2, devdata и devconf

    вот еще что есть

    «physmap platform flash device: 00800000 at bf000000
    physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank. Manufacturer ID 0x000001 Chip ID 0x001a00
    physmap-flash.0: Found an alias at 0x400000 for the chip at 0x0
    Amd/Fujitsu Extended Query Table at 0x0040
    Amd/Fujitsu Extended Query version 1.3.
    number of CFI chips: 1
    6 cmdlinepart partitions found on MTD device physmap-flash.0
    Creating 6 MTD partitions on «physmap-flash.0»:
    0x000000000000-0x000000030000 : «u-boot»
    0x000000030000-0x000000040000 : «devdata»
    0x000000040000-0x000000050000 : «devconf»
    0x000000050000-0x000000120000 : «kernel»
    0x000000120000-0x000000400000 : «rootfs»
    mtd: partition «rootfs» set to be root filesystem
    mtd: partition «rootfs_data» created automatically, ofs=310000, len=F0000
    0x000000310000-0x000000400000 : «rootfs_data»
    0x000000050000-0x000000400000 : «firmware»»

    Мне правда кажется, что ковырять надо сам open source модуль ядра, т.к. похоже он не корректно инфу из eeprom для моей ревизии вытягивает.

    1. Скорее всего вытягивает не из того mtd раздела.

      rt2x00_eeprom_extract «devdata» 16384 272″

      devdata — имя mtd раздела. Посмотри при помощи cat/hexdump содержимое раздельчика, может оно на devconf или вообще в другой области не попавшей под эту разбивку. Опять, таки, надо ковырять официальную прошу полную, смотреть где они положили фирмварю.
      На худой конец попробуй прошить dd-wrt, какой-нить и если подойдет — добудь прошу вафли из него.
      Пы.Сы. Завтра уматываю в отпуск, соответственно сервак отключаю.

  4. На dd-wrt wifi работает, но там такая ситуация получаеться, что на заводской, что на dd-wrt используется оригинальный ralink’овский модуль, а в openwrt открытый.

    Я сейчас заглянул в сырци заводской прошивки, первое на что наткнулся

    «#define EEPROM_SIZE 0x200»

    а в openwrt
    «#define EEPROM_SIZE 0x0110»

    Что = 512k в родной прошивки, и 272k в openwrt. Похоже ждать при таких раскладах корректного извлечения eeprom нет смысла.
    Я вот думаю, что проще, вручную вбить нужные параметры в модуль, или все-же добиться корректного извлечения инфы из eeprom.

  5. «Посмотри при помощи cat/hexdump содержимое раздельчика»

    root@OpenWrt:~# hexdump -C /dev/mtdblock2
    00000000 50 30 00 01 00 0c 43 30 50 88 ff ff ff ff ff ff |P0….C0P…….|
    00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |…………….|
    00000020 ff ff ff ff ff ff ff ff 00 0c 43 30 50 77 00 0c |……….C0Pw..|
    00000030 43 30 50 66 11 05 24 00 ff ff 2f 01 55 77 a8 aa |C0Pf..$…/.Uw..|
    00000040 8c 88 ff ff 0c 00 00 00 00 00 00 00 00 00 ff ff |…………….|
    00000050 ff ff 0d 0d 0d 0d 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c |…………….|
    00000060 10 10 11 11 11 12 12 12 13 13 13 14 14 14 ff ff |…………….|
    00000070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |…………….|
    *
    000000d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff 66 66 |…………..ff|
    000000e0 cc aa 88 66 cc aa 88 66 cc aa 88 66 cc aa 88 66 |…f…f…f…f|
    000000f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |…………….|
    *
    00010000
    root@OpenWrt:~#

    1. @hawkeye: Брал на DX, есть дешевле на aliexpress. Стресс-тестов не делал, юзаю на даче для раздачи 3г интернета.
      Недавно по подсказке чела с DX распаял SPI, но пока еще не подкрутил ядро для поддержки оного.

  6. @hawkeye я взял подобных на aliexpress по $37 уже с десяток точно. Но там две антенны и чип RT3052F. Вафля работает как должна только с Wive-NG (Wive-RTNL), но из неё так просто драйвер не выкусишь, а вот запилить в ней поддержку чего либо — тоже нереально, сборка мясная, а в репозиторий добавлено говна на тонну-другую, короче — ад.

  7. @Rush а в чем выражается «Вафля работает как должна только с Wive-NG»?
    Я свою проблему с извлечением eeprom (и полной не работоспособености wifi на openwrt) решил. Кстати не без помощи wive-ng. Она пишет eeprom на mtdblock2. Я выше вывод hexdump’а выкладывал (по крайней мере по длине они должны быть одинаковы), так вот, я сделал так:

    [Wive-RTNL@/]# cat /dev/mtdblock2 > /tmp/RT305X.eeprom

    Затем с помощью MC вытянул этот файл и положил его в
    trunk/target/linux/ramips/base-files/lib/firmware
    еще удалил папку
    trunk/target/linux/ramips/base-files/etc/hotplug.d
    В которой лежит скрипт по извлечению eeprom из mtd раздела при загрузке.

    Т.е. проблему решил зашитием eeprom’а непосредственно в прошивку, без поисков «черной кошки в черной комнате». Кстати само решение придумал DANtes в этой теме http://sat-forum.su/index.php/topic,7202.new.html

  8. @vitok выражается в основном в скорости передачи и возможности тонкой настройки. В Wive так же работает аппаратный NAT, по крайней мере по проводу (100Mbps PPPoE ~ 100% Idle CPU). Стянуть фирмварь — это детский лепет, не будем даже обсуждать. Лучше поговорим у кого достаточно времени, чтобы портировать HW NAT в OpenWRT, ведь на первый взгляд PPE в OpenWRT не задействован вообще 🙁 Я разрываюсь между сотней дел, не могу даже час в сутки выделить, а эту работу желательно сделать за один-два присеста, потому что по часу с недельными перерывами такие вещи идут очень тяжко.

Добавить комментарий