D-Link DAP-1522 B1

Under Construction!
This page is currently under construction. You can edit the article to help completing it.

Write a short, relevant description of the device. Include a technical overview, but avoid marketing buzzwords/useless stuff. Two to four sentences is about right. A picture is good, too. Edit the page to see how to add pictures.

Generic Router

Not supported.

Modern OpenWrt won't run on 4/32 devices. The SoC can support up to 128MB of SDRAM, so it is possible to run the latest OpenWrt on this device after some hardware modifications. One must have very strong soldering skills to proceed!

CPU Ram Flash Network WLAN USB Serial JTag
RT3662F @ 500 MHz 32 MiB 4 MiB 4x 1G abgn N/A Yes ?

Without hardware modification, this device cannot run OpenWrt 21.x.x and above!

Architecture MIPS 74Kc
Vendor Ralink
Bootloader U-Boot
System-On-Chip Ralink RT3662F (Almost identical to RT3883)
CPU/Speed 500 MHz
Flash-Chip Macronix MX25L3206EM2I-12G
Flash size 4 MiB
RAM Winbond W9825G6JH-6 (16bit, 32MB)
Wireless Integrated ABGN
LNA SE2595L
Switch RTL8367RB, 4x1GbE
USB N/A
Serial Unpopulated
JTAG N/A

With the SoC BGA removed:

FIXME Describe what needs to be done to open the device, e.g. remove rubber feet, adhesive labels, screws, ...

port.serial general information about the serial port, serial port cable, etc.

How to connect to the Serial Port of this specific device:

Serial connection parameters
for D-Link DAP-1522 B1
57600, 8N1, 3.3V

Pinout

Tx
(Input)
GND 3.3V
(Must leave not connected)
Empty
(No pad)
Rx
(Output)

To run the latest OpenWrt, one would need at least 64MB of RAM and 8MB of Flash. It is highly recommended to do the RAM upgrade first.

One option would be to upgrade the RAM to K4S511632D-UC75 (16-bit SDRAM, 64MB). After desoldering the old RAM (Winbond W9825G6JH-6) and installing the new RAM IC, one needs to modify a few resistors as well.

The RT3883/RT3662 SoC initializes the dynamic RAM configuration according to the bootstrap pin states at power-on:

Pad Name Pin Name Bootstrap Function Description
C12 LNA_PE_A0 DRAM_TOTAL_WIDTH 0=16, 1=32
B12 LNA_PE_A1 DRAM_TYPE 0=SDRAM, 1=DDR2
C11 LNA_PE_G0 DRAM_SIZE bit 0 (one dram cell) See table below
D11 LNA_PE_G1 DRAM_SIZE bit 1 (one dram cell) See table below
B10 LNA_PE_G2 DRAM_SIZE bit 2 (one dram cell) See table below
R17 MDC DRAM_WIDTH (one dram cell) For SDRAM: 0=16, 1=32. For DDR2: 0=8, 1=16

The combination of {LNA_PE_G2,LNA_PE_G2,LNA_PE_G0} (MSB first) tells the size of each RAM IC:

{LNA_PE_G2,LNA_PE_G2,LNA_PE_G0} Size per RAM IC
0b000 2MB
0b001 8MB
0b010 16MB
0b011 32MB
0b100 64MB
0b101 128MB
0b111 256MB

For each bootstrap pin, there is a pair of 0402 config resistor soldering pads for a pull-up and a pull-down resistor to determine the power-on state. A pull-up resistor represents a 1, and a pull-down resistor represents a 0. Exactly one of these resistors must be present for each bootstrap pin. These resistors are all 4.7kOhm.

On the top side, R87 (pull-down, stock) and R88 (pull-up, unpopulated by default) are located on the top-right corner of the SoC and control B12. The rest config resistors and their pad names are shown here:

This picture is taken after the 64MB RAM mod is done.

Before moving on to the SPI flash mod, power on the board with the stock flash and attach to the serial console to see if the bootloader picks up the correct memory size. In addition, check the function of the device to make sure everything still works.

One known-to-work option is W25Q64FV (8MB).

You need an SPI flash programmer to proceed. The FT2232 breakout board and CH341 are good options. First, desolder the stock flash IC from the PCB and read its content multiple times, then compare the SHA256 values to make sure we capture the stock firmware correctly. Failing to do so will result in the loss of RF parameters and render the wireless useless! It is highly recommended to securely keep the stock firmware binary file. I use FT2232 with flashrom in Debian 12:

sudo flashrom -p ft2232_spi:type=2232H,port=A,divisor=8 -r /tmp/stock.bin
sudo flashrom -p ft2232_spi:type=2232H,port=A,divisor=8 -r /tmp/stock1.bin
sudo flashrom -p ft2232_spi:type=2232H,port=A,divisor=8 -r /tmp/stock2.bin
sha256sum /tmp/stock*.bin

Next, we copy the bootloader, device settings, and RF parameters from the stock firmware to the new flash image (/tmp/flash.bin):

dd if=/tmp/stock.bin of=/tmp/flash.bin bs=$((0x50000)) count=1

Append OpenWrt image, assume it has been compiled:

cat /tmp/openwrt-fast3864op/bin/targets/ramips/rt3883/openwrt-24.10.2-ramips-rt3883-dlink_dap-1522-b1-squashfs-factory.bin > /tmp/flash.bin

Pad the new flash image to the size of the flash (8MB in this case):

dd if=/dev/zero bs=$((0x800000-$(stat -c "%s" /tmp/flash.bin))) count=1 | tr '\0' '\377' > /tmp/flash.bin %%

Finally, program the new 8MB flash:

sudo flashrom -p ft2232_spi:type=2232H,port=A,divisor=8 -w /tmp/flash.bin

Solder the 8MB flash to the PCB and the device should boot straight into OpenWrt.

This OpenWrt port is based on 24.10.2. The support can be added to the other versions by applying this patch:

https://github.com/rikka0w0/openwrt/commit/7fde91a0c8fdb610d9a3755c5a51d1fbf28c5b2a.patch

To start the build, run:

git clone -b dap-1522-b1 https://github.com/rikka0w0/openwrt.git
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
wget -O .config https://downloads.openwrt.org/releases/24.10.2/targets/ramips/rt3883/config.buildinfo

Optionally, run “make menuconfig” and choose “D-Link DAP-1522 B1” in “Target Profile” to speed up the build process.

Run “make world -j32” to build OpenWrt. The binaries are in “bin/targets/ramips/rt3883”.

“openwrt-24.10.2-ramips-rt3883-dlink_dap-1522-b1-squashfs-factory.bin” can be flashed from the stock bootloader. “openwrt-24.10.2-ramips-rt3883-dlink_dap-1522-b1-squashfs-sysupgrade.bin” is for system upgrade from an installed OpenWrt.

For more information, see Build System Usage.

U-Boot 1.1.3 (Apr 14 2011 - 16:25:35) (ALPHA) SVN revision: 515 Target board: WAP-ND15 Board: Ralink APSoC DRAM: 32 MB spi_wait_nsec: 40 spi device id: 8c 20 16 8c 20 (20168c20) find flash: F25L32PA raspi_read: from:30000 len:1000 .raspi_read: from:30000 len:1000 .============================================ Ralink UBoot Version: 3.3 -------------------------------------------- ASIC 3883_MP (MAC to REALTEK Mode) DRAM component: 256 Mbits SDR DRAM bus: 16 bit Total memory: 32 MBytes Flash component: SPI Flash Date:Apr 14 2011 Time:16:25:35 ============================================ icache: sets:512, ways:4, linesz:32 ,total:65536 dcache: sets:256, ways:4, linesz:32 ,total:32768 gpio_init: write 0x00001801 gpio_init: write 0x0000185d to GPIOMODE(0xb0000060) 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. 7: Load Boot Loader code then write to Flash via Serial. 9: Load Boot Loader code then write to Flash via TFTP. 0 3: System Boot system code via Flash. ## Booting image at bc050000 ... raspi_read: from:50000 len:40 .raspi_read: from:50000 len:c .raspi_read: from:50000 len:36b060 .......................................................We have SEAMA, Image Size = 3584032 Verifying Checksum ... Uncompressing SEAMA linux.lzma ... OK ## Transferring control to Linux (at address 80000000) ... ## Giving linux memsize in MB, 32 Starting kernel ... LINUX started... THIS IS ASIC Linux version 2.6.33.2 (builder@enzo) (gcc version 4.3.3 (GCC) ) #1 Tue Nov 15 09:22:15 CST 2011 The CPU feqenuce set to 500 MHz bootconsole [early0] enabled CPU revision is: 0001974c (MIPS 74Kc) Determined physical RAM map: memory: 02000000 @ 00000000 (usable) Zone PFN ranges: DMA 0x00000000 -> 0x00001000 Normal 0x00001000 -> 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: console=ttyS1,57600n8 root=/dev/mtdblock1 noinitrd 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 64kB, VIPT, 4-way, linesize 32 bytes. Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes Writing ErrCtl register=00000000 Readback ErrCtl register=00000000 Memory: 29412k/32768k available (2341k kernel code, 3356k reserved, 485k data, 140k init, 0k highmem) SLUB: Genslabs=7, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 Hierarchical RCU implementation. NR_IRQS:128 setup_irq 6 CPU frequency 500.00 MHz [debug] (r4k_clockevent_init line: 172) [debug] 128 ee6b280 (r4k_clockevent_init line: 176) [debug] (r4k_clockevent_init line: 185) [debug] irq: 5 , 800085bc , (r4k_clockevent_init line: 195) 4,[debug] (r4k_clockevent_init line: 217) 5,[debug] (r4k_clockevent_init line: 222) setup_irq 5 [debug] (r4k_clockevent_init line: 228) If the above line no "setup_irq 5", mean irq for timer is not installed Calibrating delay loop... 249.34 BogoMIPS (lpj=498688) Mount-cache hash table entries: 512 NET: Registered protocol family 16 bio: create slab <bio-0> at 0 SCSI subsystem initialized cfg80211: Calling CRDA to update world regulatory domain Switching to clocksource MIPS NET: Registered protocol family 2 IP route cache hash table entries: 8192 (order: 3, 32768 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 RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. Load RT2880 Timer Module(Wdg/Soft) squashfs: version 4.0 (2009/01/31) Phillip Lougher io scheduler noop registered io scheduler cfq registered (default) Ralink gpio driver initialized rt3883_access_init: rt3883 access driver initialization. spidrv_major = 217 Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled serial8250.0: ttyS0 at I/O 0xb0000500 (irq = 37) is a 16550A console [ttyS1] enabled, bootconsole disabled12) is a 16550A console [ttyS1] enabled, bootconsole disabled deice id : 8c 20 16 8c 20 (20168c20) F25L32PA(8c 20168c20) (4096 Kbytes) mtd .name = raspi, .size = 0x00400000 (0M) .erasesize = 0x00000004 (0K) .numeraseregions = 65536 seama skip the header xxxxxxxx: squashfs filesystem found at offset 1376320, magic 73717368 Creating 8 MTD partitions on "raspi": 0x000000150060-0x0000003bb060 : "rootfs" 0x000000050000-0x0000003f0000 : "upgrade" 0x000000040000-0x000000050000 : "devconf" 0x000000030000-0x000000040000 : "devdata" 0x0000003f0000-0x000000400000 : "langpack" 0x000000000000-0x000000400000 : "flash" 0x000000000000-0x000000030000 : "u-boot" 0x000000030000-0x000000038000 : "boot env" rdm_major = 220 Ralink APSoC Ethernet Driver Initilization. v2.0 256 rx/tx descriptors allocated, mtu = 1500! eth0: set mac address skb rate limit initialization. u32 classifier Actions configured arp_tables: (C) 2002 David S. Miller TCP cubic registered NET: Registered protocol family 10 NET: Registered protocol family 17 Bridge firewalling registered VFS: Mounted root (squashfs filesystem) readonly on device 31:1. Freeing unused kernel memory: 140k freed init started: BusyBox v1.14.1 (2011-11-15 09:22:23 CST) starting pid 260, tty '': '/etc/init.d/rcS' Algorithmics/MIPS FPU Emulator v1.5 [/etc/init.d/S10init.sh] [/etc/init.d/S14devpts.sh] [/etc/init.d/S16ipv6.sh] [/etc/init.d/S19devfs.sh] mknod: /dev/gpio: File exists mknod: /dev/rtldrv: File exists [/etc/init.d/S19init.sh] [/etc/init.d/S20init.sh] DEFNODE[/etc/defnodes/S11devdata.xml] DEFNODE[/etc/defnodes/S12flashspeed.php] DEFNODE[/etc/defnodes/S14setchlist.php] DEFNODE[/etc/defnodes/S20device.xml] DEFNODE[/etc/defnodes/S22timezone.php] [/etc/scripts/setdate.sh] 01/01/2000 ... Sat Jan 1 18:00:02 GMT 2000 DEFNODE[/etc/defnodes/S30device.php] DEFNODE[/etc/defnodes/S30device.xml] DEFNODE[/etc/defnodes/S31diagnostic.xml] DEFNODE[/etc/defnodes/S31locale.php] DEFNODE[/etc/defnodes/S40device.xml] DEFNODE[/etc/defnodes/S90sessions.php] DEFNODE[/etc/defnodes/S90upnpigd.php] DEFNODE[/etc/defnodes/S99switch.xml] SERVD: start service [LOGD] [/etc/init.d/S20interfaces.sh] rtldrv: module license 'Proprietary' taints kernel. Disabling lock debugging due to kernel taint Setting RTL8367RB RGMII Delay time tx:1,rx0 init_rtldrv: green ethernet feature is enabled rtldrv_init: RTL8367 GbE switch driver initialized. (maj:253) eth0: set mac address Network interface reset count v1.0 [/etc/init.d/S21rdm.sh] mknod: /dev/rdm0: Read-only file system [/etc/init.d/S45gpiod.sh] [/etc/init.d/rcS] done! Factory reset time : 5 secs 00: WPS Blue LED using GPIO #26, output mode. 01: WPS button using GPIO #14, input mode. 02: FRESET button using GPIO #9, input mode. 03: BRIDGE LED using GPIO #0, output mode. 04: Power/Status Red LED using GPIO #29, output mode. 05: Power/Status Blue LED using GPIO #30, output mode. 06: switch1 using GPIO #17, input mode. 07: switch2 using GPIO #18, input mode. 08: Reset Signal for Giga Switch using GPIO #24, output mode. [/etc/init0.d/S21layout.sh]: start ... SERVD: start service [LAYOUT] [/etc/init0.d/S40event.br.sh]: start ... SERVD: event [SEALPAC.LOAD/default] [/etc/init0.d/S41inf.br.sh]: start ... device eth0 entered promiscuous mode SEAMA: '/dev/mtdblock/5' is not a seama file ! interface ra0 does not exibr0: port 1(eth0) entering forwarding state st! [/etc/init0.d/S45event.sh]: start ... [/etc/scripts/setswitch.sh] APCLI ... [/etc/init0.d/S80telnetd.sh]: start ... [/etc/init0.d/rcS] done! Please press Enter to activate this console. === pAd = c0706000, size = 576472 === <-- RTMPAllocAdapterBlock, Status=0 SERVD: start service [LOGD] SERVD: service [LOGD] is already started. SERVD: start service [BRIDGE] bridge mode SERVD: start service [PHYINF.ETH-1] SERVD: start service [INET.BRIDGE-1] [/var/servd/INET.BRIDGE-1_start.sh]: starting BRIDGE-1... SERVD: event [BRIDGE-1.UP/default] SERVD: event [DHCPS4.RESTART] not found! [/var/servd/INET.BRIDGE-1_start.sh]: starting BRIDGE-1 done !!! SERVD: start service [INET.BRIDGE-2] [/var/servd/INET.BRIDGE-2_start.sh]: starting BRIDGE-2... BRIDGE-2 a is link local interface. ip: invalid argument 'BRIDGE-2' to 'table' SERVD: event [BRIDGE-2.UP/default] [/var/servd/INET.BRIDGE-2_start.sh]: starting BRIDGE-2 done !!! SERVD: start service [INET.BRIDGE-3] ifsetup: (BRIDGE-3) not active. SERVD: service [INET.BRIDGE-3] return error 8. SERVD: start service [INFSVCS.BRIDGE-1] [/etc/scripts/neaps.sh]: start .... Start Neap Server ... SERVD: event [BRIDGE-1.CONNECTED] not found! SERVD: event [UPDATERESOLV/default] SERVD: event [INET.CONNECTED] not found! SERVD: event [INFSVCS.BRIDGE-1.UP/default] SERVD: event [STATUS.READY/default] SERVD: start service [INFSVCS.BRIDGE-2] [/etc/scripts/neaps.sh]: start .... Stop Neap Server ... Start Neap Server ... SERVD: event [BRIDGE-2.CONNECTED] not found! SERVD: event [UPDATERESOLV/default] SERVD: event [INET.CONNECTED] not found! SERVD: event [INFSVCS.BRIDGE-2.UP] not found! SERVD: stop service [PHYINF.WIFI] SERVD: service [PHYINF.WIFI] is already stopped. SERVD: start service [PHYINF.WIFI] SERVD: stop service [DHCPS4.BRIDGE-1] SERVD: service [DHCPS4.BRIDGE-1] is already stopped. SERVD: start service [DHCPS4.BRIDGE-1] dhcps4setup : Only support for AP mode. SERVD: service [DHCPS4.BRIDGE-1] return error 9. SERVD: start service [HTTP.BRIDGE-1] SERVD: start service [UPNP.BRIDGE-1] SERVD: event [UPNP.ALIVE.BRIDGE-1/default] SERVD: start service [NEAP.BRIDGE-1] SERVD: service [NEAP.BRIDGE-1] return error 108. SERVD: stop service [NAMERESOLV.BRIDGE-1] SERVD: service [NAMERESOLV.BRIDGE-1] is already stopped. SERVD: start service [NAMERESOLV.BRIDGE-1] killall: netbios: no process killed killall: llmnresp: no process killed SERVD: start service [DHCPS4.BRIDGE-1] dhcps4setup : Only support for AP mode. SERVD: service [DHCPS4.BRIDGE-1] return error 9. SERVD: stop service [MULTICAST] SERVD: service [MULTICAST] is already stopped. SERVD: start service [MULTICAST] SERVD: start service [DEVICE.TIME] NTP is disabled ... SERVD: start service [HTTP.BRIDGE-2] SERVD: stop service [IP6TDEFCHAIN] SERVD: service [IP6TDEFCHAIN] is already stopped. SERVD: start service [IP6TDEFCHAIN] SERVD: service [IP6TDEFCHAIN] return error 108. SERVD: stop service [LLD2] SERVD: service [LLD2] is already stopped. SERVD: start service [LLD2] SERVD: stop service [DNS] SERVD: service [DNS] is already stopped. SERVD: start service [DNS] SERVD: service [DNS] return error 108. SERVD: start service [WLAN-2] SERVD: event [STATUS.READY/default] SERVD: stop service [TRAFFICCTRL.BRIDGE-1] SERVD: service [TRAFFICCTRL.BRIDGE-1] is already stopped. SERVD: start service [TRAFFICCTRL.BRIDGE-1] traffic control : Only support for AP mode. SERVD: service [TRAFFICCTRL.BRIDGE-1] return error 9. SERVD: stop service [MACCTRL] SERVD: service [MACCTRL] is already stopped. SERVD: start service [MACCTRL] acl: Only support for AP mode. SERVD: stop service [HTTP] SERVD: service [HTTP] is already stopped. SERVD: start service [HTTP] SERVD: event [HTTP.UP] not found! SERVD: stop service [RT3662STA] SERVD: service [RT3662STA] is already stopped. SERVD: start service [RT3662STA] RX DESC a1e6c000 size = 2048 <-- RTMPAllocTxRxRingMemory, Status=0 1. Phy Mode = 10 2. Phy Mode = 10 Wireless Calibration Data find in Flash. OK Read EEPROM, EthCloneMac is b0:c5:54:80:7d:16! 3. Phy Mode = 10 exBuildChannel # 36 :: Pwr0 = 10, Pwr1 =13, exBuildChannel # 40 :: Pwr0 = 11, Pwr1 =13, exBuildChannel # 44 :: Pwr0 = 11, Pwr1 =13, exBuildChannel # 48 :: Pwr0 = 12, Pwr1 =13, exBuildChannel # 52 :: Pwr0 = 12, Pwr1 =14, exBuildChannel # 56 :: Pwr0 = 13, Pwr1 =14, exBuildChannel # 60 :: Pwr0 = 13, Pwr1 =14, exBuildChannel # 64 :: Pwr0 = 14, Pwr1 =14, exBuildChannel # 100 :: Pwr0 = 18, Pwr1 =12, exBuildChannel # 104 :: Pwr0 = 18, Pwr1 =12, exBuildChannel # 108 :: Pwr0 = 17, Pwr1 =12, exBuildChannel # 112 :: Pwr0 = 17, Pwr1 =12, exBuildChannel # 116 :: Pwr0 = 17, Pwr1 =12, exBuildChannel # 120 :: Pwr0 = 16, Pwr1 =11, exBuildChannel # 124 :: Pwr0 = 16, Pwr1 =11, exBuildChannel # 128 :: Pwr0 = 16, Pwr1 =11, exBuildChannel # 132 :: Pwr0 = 16, Pwr1 =11, exBuildChannel # 136 :: Pwr0 = 15, Pwr1 =11, exBuildChannel # 140 :: Pwr0 = 15, Pwr1 =11, exBuildChannel # 149 :: Pwr0 = 15, Pwr1 =12, exBuildChannel # 153 :: Pwr0 = 14, Pwr1 =13, exBuildChannel # 157 :: Pwr0 = 13, Pwr1 =14, exBuildChannel # 161 :: Pwr0 = 12, Pwr1 =15, exBuildChannel # 165 :: Pwr0 = 12, Pwr1 =16, exBuildChannel # 1 :: Pwr0 = 15, Pwr1 =15, exBuildChannel # 2 :: Pwr0 = 16, Pwr1 =15, exBuildChannel # 3 :: Pwr0 = 16, Pwr1 =16, exBuildChannel # 4 :: Pwr0 = 17, Pwr1 =16, exBuildChannel # 5 :: Pwr0 = 17, Pwr1 =16, exBuildChannel # 6 :: Pwr0 = 18, Pwr1 =17, exBuildChannel # 7 :: Pwr0 = 18, Pwr1 =17, exBuildChannel # 8 :: Pwr0 = 18, Pwr1 =18, exBuildChannel # 9 :: Pwr0 = 19, Pwr1 =18, exBuildChannel # 10 :: Pwr0 = 19, Pwr1 =19, exBuildChannel # 11 :: Pwr0 = 19, Pwr1 =19, RTMPSetPhyMode: channel is out of range, use first channel=36 MCS Set = ff ff 00 00 01 Set_RateAdaptInterval():Set RateAdaptation TimeInterval as(500:100) ms TxSwQDepthAdjust():Set TxSwQMaxLen as 512 <==== rt28xx_init, Status=0 0x1300 = 00064300 ALPHA:WLAN:Start wireless interface success device ra0 entered promiscuous mode br0: port 2(ra0) entering forwarding state SERVD: event [BRIDGE.LED.ON/default] SERVD: start service [ENLAN] SERVD: stop service [MULTICAST] SERVD: start service [MULTICAST] SERVD: event [upnp_re_alive/default] SERVD: event [UPNP.ALIVE.BRIDGE-1/default]


U-Boot 1.1.3 (Apr 14 2011 - 16:25:35) (ALPHA) SVN revision: 515 Target board: WAP-ND15 Board: Ralink APSoC DRAM: 64 MB spi_wait_nsec: 40 spi device id: ef 40 17 0 0 (40170000) find flash: 25064BVSIG raspi_read: from:30000 len:1000 .raspi_read: from:30000 len:1000 .============================================ Ralink UBoot Version: 3.3 -------------------------------------------- ASIC 3883_MP (MAC to REALTEK Mode) DRAM component: 512 Mbits SDR DRAM bus: 16 bit Total memory: 64 MBytes Flash component: SPI Flash Date:Apr 14 2011 Time:16:25:35 ============================================ icache: sets:512, ways:4, linesz:32 ,total:65536 dcache: sets:256, ways:4, linesz:32 ,total:32768 gpio_init: write 0x00001801 gpio_init: write 0x0000185d to GPIOMODE(0xb0000060) 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. 7: Load Boot Loader code then write to Flash via Serial. 9: Load Boot Loader code then write to Flash via TFTP. 0 3: System Boot system code via Flash. ## Booting image at bc050000 ... raspi_read: from:50000 len:40 .raspi_read: from:50000 len:60 . Image Name: MIPS OpenWrt Linux-6.6.93 Created: 2025-06-23 20:40:36 UTC Image Type: MIPS Linux Kernel Image (uncompressed) Data Size: 2016793 Bytes = 1.9 MB Load Address: 80000000 Entry Point: 80000000 raspi_read: from:50040 len:1ec619 ............................... Verifying Checksum ... OK OK Starting kernel ... OpenWrt kernel loader for MIPS based SoC Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org> Decompressing kernel... done! Starting kernel at 80000000... [ 0.000000] Linux version 6.6.93 (builder@buildhost) (mipsel-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r28739-d9340319c6) 13.3.0, GNU ld (GNU Binutils) 2.42) #0 Mon Jun 23 20:40:36 2025 [ 0.000000] SoC Type: Ralink RT3883 ver:1 eco:5 [ 0.000000] printk: bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 0001974c (MIPS 74Kc) [ 0.000000] MIPS: machine is D-Link DAP-1522 B1 [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x0000000003ffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x0000000003ffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000003ffffff] [ 0.000000] Kernel command line: console=ttyS0,57600 rootfstype=squashfs,jffs2 [ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes, linear) [ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes, linear) [ 0.000000] Writing ErrCtl register=00000000 [ 0.000000] Readback ErrCtl register=00000000 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 16256 [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 57140K/65536K available (4942K kernel code, 581K rwdata, 808K rodata, 1212K init, 201K bss, 8396K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS: 256 [ 0.000000] CPU Clock: 500MHz [ 0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041786 ns [ 0.000003] sched_clock: 32 bits at 250MHz, resolution 4ns, wraps every 8589934590ns [ 0.015641] Calibrating delay loop... 249.44 BogoMIPS (lpj=1247232) [ 0.097848] pid_max: default: 32768 minimum: 301 [ 0.116353] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.130839] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.158774] RCU Tasks Trace: Setting shift to 0 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=1. [ 0.186601] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.206193] futex hash table entries: 256 (order: -1, 3072 bytes, linear) [ 0.219766] pinctrl core: initialized pinctrl subsystem [ 0.234010] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.247138] thermal_sys: Registered thermal governor 'step_wise' [ 0.251678] /pinctrl: Fixed dependency cycle(s) with /pinctrl/pinctrl0 [ 0.294902] clocksource: Switched to clocksource MIPS [ 0.319778] NET: Registered PF_INET protocol family [ 0.329959] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear) [ 0.346948] tcp_listen_portaddr_hash hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.363818] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.379152] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.394386] TCP bind hash table entries: 1024 (order: 1, 8192 bytes, linear) [ 0.408430] TCP: Hash tables configured (established 1024 bind 1024) [ 0.421398] UDP hash table entries: 256 (order: 0, 4096 bytes, linear) [ 0.434463] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear) [ 0.449483] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 0.460853] PCI: CLS 0 bytes, default 32 [ 0.468997] rt-timer 10000100.timer: maximum frequency is 3814Hz [ 0.492189] workingset: timestamp_bits=30 max_order=14 bucket_order=0 [ 0.505963] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.517538] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.546273] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252) [ 0.563301] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled [ 0.587773] printk: console [ttyS0] disabled [ 0.597375] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 20, base_baud = 2500000) is a Palmchip BK-3103 [ 0.617213] printk: console [ttyS0] enabled [ 0.617213] printk: console [ttyS0] enabled [ 0.633747] printk: bootconsole [early0] disabled [ 0.633747] printk: bootconsole [early0] disabled [ 0.718409] spi spi0.0: force spi mode3 [ 0.727563] spi-nor spi0.0: s25fl064k (8192 Kbytes) [ 0.737638] 6 fixed-partitions partitions found on MTD device spi0.0 [ 0.750530] OF: Bad cell count for /palmbus@10000000/spi@b00/flash@0/partitions [ 0.765216] OF: Bad cell count for /palmbus@10000000/spi@b00/flash@0/partitions [ 0.780321] Creating 6 MTD partitions on "spi0.0": [ 0.789982] 0x000000000000-0x000000030000 : "uboot" [ 0.806431] 0x000000030000-0x000000034000 : "uboot-env" [ 0.821202] 0x000000034000-0x000000038000 : "factory" [ 0.835991] OF: Bad cell count for /palmbus@10000000/spi@b00/flash@0/partitions [ 0.851408] 0x000000038000-0x000000040000 : "nvram" [ 0.866345] 0x000000040000-0x000000050000 : "devdata" [ 0.880788] 0x000000050000-0x000000800000 : "firmware" [ 0.895912] 2 uimage-fw partitions found on MTD device firmware [ 0.907892] Creating 2 MTD partitions on "firmware": [ 0.917832] 0x000000000000-0x0000001ec659 : "kernel" [ 0.927756] mtd: partition "kernel" doesn't end on an erase/write block -- force read-only [ 0.948519] 0x0000001ec659-0x0000007b0000 : "rootfs" [ 0.958592] mtd: partition "rootfs" doesn't start on an erase/write block boundary -- force read-only [ 0.981015] mtd: setting mtd7 (rootfs) as root device [ 0.991406] 1 squashfs-split partitions found on MTD device rootfs [ 1.003807] 0x000000560000-0x0000007b0000 : "rootfs_data" [ 1.029455] rtl8367b rtl8367b: cannot find mdio node phandle [ 1.040945] rtl8367b rtl8367b: using GPIO pins 513 (SDA) and 514 (SCK) [ 1.054969] rtl8367b rtl8367b: RTL8367RB chip found (num:6000 ver:1000) [ 2.134110] rtl8367b rtl8367b: cpu_port:6, assigned to extif1 [ 2.948357] mtk_soc_eth 10100000.ethernet: mdio-bus disabled [ 2.959805] mtk_soc_eth 10100000.ethernet: using fixed link parameters [ 2.972860] mtk_soc_eth 10100000.ethernet eth0 (uninitialized): link up (1000Mbps/Full duplex) [ 2.991416] mtk_soc_eth 10100000.ethernet eth0: mediatek frame engine at 0xb0100000, irq 5 [ 3.009294] rt2880_wdt 10000120.watchdog: Initialized [ 3.022825] NET: Registered PF_INET6 protocol family [ 3.044433] Segment Routing with IPv6 [ 3.052069] In-situ OAM (IOAM) with IPv6 [ 3.060297] NET: Registered PF_PACKET protocol family [ 3.070521] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 3.096969] 8021q: 802.1Q VLAN Support v1.8 [ 3.176965] clk: Disabling unused clocks [ 3.204577] VFS: Mounted root (squashfs filesystem) readonly on device 31:7. [ 3.233306] Freeing unused kernel image (initmem) memory: 1212K [ 3.245207] This architecture does not have kernel memory protection. [ 3.258090] Run /sbin/init as init process [ 6.422952] init: Console is alive [ 6.430978] init: - watchdog - [ 9.543944] kmodloader: loading kernel modules from /etc/modules-boot.d/* [ 10.495246] gpio_button_hotplug: loading out-of-tree module taints kernel. [ 10.510538] gpio-keys keys: does not support key code:0 [ 10.521117] gpio-keys: probe of keys failed with error -22 [ 10.551390] kmodloader: done loading kernel modules from /etc/modules-boot.d/* [ 10.577131] init: - preinit - [ 19.164954] random: crng init done Cannot parse config file '/etc/fw_env.config': No such file or directory Failed to find NVMEM device [ 23.773327] mtk_soc_eth 10100000.ethernet eth0: link up (1000Mbps/Full duplex) [ 23.791402] 8021q: adding VLAN 0 to HW filter on device eth0 Press the [f] key and hit [enter] to enter failsafe mode Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level [ 29.383124] jffs2: notice: (391) jffs2_build_xattr_subsystem: complete building xattr subsystem, 9 of xdatum (6 unchecked, 3 orphan) and 10 of xref (3 dead, 0 orphan) found. [ 29.418520] mount_root: switching to jffs2 overlay [ 29.436885] overlayfs: upper fs does not support tmpfile. [ 29.464741] urandom-seed: Seeding with /etc/urandom.seed [ 29.792210] mtk_soc_eth 10100000.ethernet eth0: link down [ 29.831011] procd: - early - [ 29.837695] procd: - watchdog - [ 31.940237] procd: - watchdog - [ 31.949766] procd: - ubus - [ 32.961813] procd: - init - Please press Enter to activate this console. [ 37.429368] kmodloader: loading kernel modules from /etc/modules.d/* [ 40.221990] urngd: v1.0.2 started. [ 40.640451] Loading modules backported from Linux version v6.12.6-0-ge9d65b48ce1a [ 40.655529] Backport generated by backports.git v6.1.110-1-35-g410656ef04d2 [ 41.486069] PPP generic driver version 2.4.2 [ 41.517231] NET: Registered PF_PPPOX protocol family [ 41.738935] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3883, rev 0400 detected [ 41.755383] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 3853 detected [ 42.405697] kmodloader: done loading kernel modules from /etc/modules.d/* [ 96.123283] mtk_soc_eth 10100000.ethernet eth0: link up (1000Mbps/Full duplex) [ 96.138554] 8021q: adding VLAN 0 to HW filter on device eth0 [ 96.219282] br-lan: port 1(eth0) entered blocking state [ 96.229877] br-lan: port 1(eth0) entered disabled state [ 96.240451] mtk_soc_eth 10100000.ethernet eth0: entered allmulticast mode [ 96.254628] mtk_soc_eth 10100000.ethernet eth0: entered promiscuous mode [ 97.125189] br-lan: port 1(eth0) entered blocking state [ 97.135736] br-lan: port 1(eth0) entered forwarding state BusyBox v1.36.1 (2025-06-23 20:40:36 UTC) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt 24.10.2, r28739-d9340319c6 ----------------------------------------------------- === WARNING! ===================================== There is no root password defined on this device! Use the "passwd" command to set up a new password in order to prevent unauthorized SSH logins. -------------------------------------------------- root@OpenWrt:~# free total used free shared buff/cache available Mem: 58352 19940 15864 152 22548 14780 Swap: 0 0 0 root@OpenWrt:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 4096 4096 0 100% /rom tmpfs 29176 152 29024 1% /tmp /dev/mtdblock8 2368 232 2136 10% /overlay overlayfs:/overlay 2368 232 2136 10% / tmpfs 512 0 512 0% /dev root@OpenWrt:~#


  1. On RT3883/3662, the DRAM may be (in most cases) initialized to some extent before the bootloader gains control. For instance, the bootloader cannot change column size or row size.
  2. Bootloader source code: https://github.com/Ntemis/u-boot-mips, requires 32-bit Linux to compile. Known to work on Debian 12 x86 on KVM.
  3. iperf3 lan-to-wan (all wired) benchmark result: 280-350Mbps.
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/08/26 17:43
  • by rikka0w0