Hi all. The Ubiquiti UniFi Pro (UAP-PRO) just started shipping not too long ago, and I figured I'd take a stab at getting OpenWRT on it.
From what I can tell, it's an AR9344 board, 128mb RAM, 16mb flash. The serial console runs on it for only the boot loader, so I can't get the full output from the kernel loading, but here's what I get from it's dmesg:
[ 0.000000] Linux version 2.6.32.33 (build-unifi@ubnt-builder1) (gcc version 4.1.2) #1 Mon Apr 30 19:05:03 PDT 2012
[ 0.000000] flash_size passed from bootloader = 16
[ 0.000000] arg 1: console=tty0
[ 0.000000] arg 2: mtdparts=ath-nor0:256k(u-boot),64k(u-boot-env),15744k(jffs2),256k(cfg),64k(EEPROM)
[ 0.000000] arg 3: mem=128M
[ 0.000000] arg 4: ubntbootid=0
[ 0.000000] CPU revision is: 0001974c (MIPS 74Kc)
[ 0.000000] ath_sys_frequency: cpu srif ddr srif cpu 560 ddr 450 ahb 225
[ 0.000000] Determined physical RAM map:
[ 0.000000] memory: 02000000 @ 00000000 (usable)
[ 0.000000] User-defined physical RAM map:
[ 0.000000] memory: 08000000 @ 00000000 (usable)
[ 0.000000] Initrd not found or empty - disabling initrd
[ 0.000000] Zone PFN ranges:
[ 0.000000] Normal 0x00000000 -> 0x00008000
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[1] active PFN ranges
[ 0.000000] 0: 0x00000000 -> 0x00008000
[ 0.000000] On node 0 totalpages: 32768
[ 0.000000] free_area_init_node: node 0, pgdat 80293210, node_mem_map 81000000
[ 0.000000] Normal zone: 256 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 32512 pages, LIFO batch:7
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
[ 0.000000] Kernel command line: console=tty0 mtdparts=ath-nor0:256k(u-boot),64k(u-boot-env),15744k(jffs2),256k(cfg),64k(EEPROM) mem=128M ubntbootid=0
[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 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] Writing ErrCtl register=00000000
[ 0.000000] Readback ErrCtl register=00000000
[ 0.000000] Memory: 123760k/131072k available (2133k kernel code, 7124k reserved, 500k data, 3244k init, 0k highmem)
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:128
[ 0.000000] plat_time_init: plat time init done
[ 0.000000] Calibrating delay loop... 278.52 BogoMIPS (lpj=139264)
[ 0.022000] Mount-cache hash table entries: 512
[ 0.024000] NET: Registered protocol family 16
[ 0.025000] PCI init:ath_pcibios_init
[ 0.025000] ath_pcibios_init(294): PCI CMD write: 0x356
[ 0.025000] registering PCI controller with io_map_base unset
[ 0.028000] bio: create slab <bio-0> at 0
[ 0.029000] vgaarb: loaded
[ 0.030000] pci 0000:00:00.0: reg 10 64bit mmio: [0x000000-0x01ffff]
[ 0.030000] pci 0000:00:00.0: reg 30 32bit mmio pref: [0x000000-0x00ffff]
[ 0.030000] pci 0000:00:00.0: supports D1
[ 0.030000] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[ 0.030000] pci 0000:00:00.0: PME# disabled
[ 0.030000] Returning IRQ 64
[ 0.031000] Switching to clocksource MIPS
[ 0.033000] NET: Registered protocol family 2
[ 0.033000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.034000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.034000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.035000] TCP: Hash tables configured (established 4096 bind 4096)
[ 0.035000] TCP reno registered
[ 0.035000] NET: Registered protocol family 1
[ 4.405000] ATH GPIOC major 0
[ 4.407000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 4.407000] JFFS2 version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[ 4.407000] msgmni has been set to 242
[ 4.408000] io scheduler noop registered
[ 4.408000] io scheduler deadline registered (default)
[ 4.409000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[ 4.410000] serial8250.0: ttyS0 at MMIO 0xb8020000 (irq = 19) is a 16550A
[ 4.411000] 5 cmdlinepart partitions found on MTD device ath-nor0
[ 4.411000] Creating 5 MTD partitions on "ath-nor0":
[ 4.411000] 0x000000000000-0x000000040000 : "u-boot"
[ 4.412000] 0x000000040000-0x000000050000 : "u-boot-env"
[ 4.413000] 0x000000050000-0x000000fb0000 : "jffs2"
[ 4.414000] 0x000000fb0000-0x000000ff0000 : "cfg"
[ 4.414000] 0x000000ff0000-0x000001000000 : "EEPROM"
[ 4.415000] u32 classifier
[ 4.415000] Performance counters on
[ 4.415000] input device check on
[ 4.415000] Actions configured
[ 4.417000] TCP westwood registered
[ 4.417000] NET: Registered protocol family 10
[ 4.419000] lo: Disabled Privacy Extensions
[ 4.420000] NET: Registered protocol family 17
[ 4.420000] Bridge firewalling registered
[ 4.420000] 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
[ 4.420000] All bugs added by David S. Miller <davem@redhat.com>
[ 4.421000] athwdt_init: Registering WDT success
[ 4.421000] ath_otp_init: Registering OTP success
[ 4.421000] ath_clksw_init: Registering Clock Switch Interface success
[ 4.437000] Freeing unused kernel memory: 3244k freed
[ 4.437000] Please be patient, while UniFi loads ...
[ 4.440000] Algorithmics/MIPS FPU Emulator v1.5
[ 4.476000] ubnthal: module license 'unspecified' taints kernel.
[ 4.476000] Disabling lock debugging due to kernel taint
[ 4.488000] flash (0xbfff1000) magic (0x0202) is wrong
[ 4.488000] flash (0xbfff1000) magic (0x0202) is wrong
[ 4.489000] flash (0xbfff1000) magic (0x0202) is wrong
[ 4.489000] flash (0xbfff5000) magic (0x0202) is wrong
[ 4.489000] flash (0xbfff5000) magic (0x0202) is wrong
[ 4.489000] flash (0xbfff5000) magic (0x0202) is wrong
[ 4.490000] creating procfs for ubnthal
[ 4.490000] creating proc entry for system.info
[ 4.490000] creating proc entry for board
[ 4.490000] creating proc entry for wifi0
[ 4.490000] creating proc entry for wifi1
[ 4.490000] creating procfs for status
[ 4.490000] creating proc entry for IsDefault
[ 4.490000] creating proc entry for IsLocated
[ 4.490000] creating proc entry for IsIsolated
[ 4.498000] gpiodev: (reset_timeout=3 factory_countdown=1000000)
[ 4.499000] creating /proc/gpio/
[ 4.499000] /proc/gpio/led_status
[ 4.499000] /proc/gpio/led_freq
[ 4.499000] /proc/gpio/poe_passthrough
[ 6.351000] **** drop_caches_sysctl_handler: all done timer added ...****
[ 7.795000] SCSI subsystem initialized
[ 7.878000] fuse init (API version 7.13)
[ 7.902000] pktgen 2.72: Packet Generator for packet performance testing.
[ 8.921000] ATHR_GMAC: Length per segment 1536
[ 8.921000] ATHR_GMAC: fifo cfg 3 01f00140
[ 8.921000] ATHR_GMAC: RX TASKLET - Pkts per Intr:16
[ 8.921000] ATHR_GMAC: Mac address for unit 0:87987e7c
[ 8.921000] ATHR_GMAC: 00:27:22:6a:06:2d
[ 9.478000] MAC0: AR8327 Detected
[ 9.478000] ATHR_GMAC: Max segments per packet : 1
[ 9.478000] ATHR_GMAC: Max tx descriptor count : 128
[ 9.478000] ATHR_GMAC: Max rx descriptor count : 128
[ 9.478000] ATHR_GMAC: Mac capability flags : 42381
[ 9.478000] ATHR_GMAC: RX TASKLET - Pkts per Intr:16
[ 9.478000] ATHR_GMAC: Mac address for unit 1:87987e7c
[ 9.478000] ATHR_GMAC: 02:27:22:6a:06:2d
[ 10.034000] athrs17_register_ops phyid1 004d phyid2 d042
[ 10.035000] MAC1: AR8227 Detected
[ 10.035000] ATHR_GMAC: Max segments per packet : 1
[ 10.035000] ATHR_GMAC: Max tx descriptor count : 128
[ 10.035000] ATHR_GMAC: Max rx descriptor count : 128
[ 10.035000] ATHR_GMAC: Mac capability flags : 42D80
[ 10.464000] ath_hal: 0.9.17.1 (AR5416, AR9380, DEBUG, REGOPS_FUNC, WRITE_EEPROM, 11D)
[ 10.770000] ath_dfs: Version 2.0.0
[ 10.770000] Copyright (c) 2005-2006 Atheros Communications, Inc. All Rights Reserved
[ 11.074000] ath_rate_atheros: Copyright (c) 2001-2005 Atheros Communications, Inc, All Rights Reserved
[ 11.474000] ath_dev: Copyright (c) 2001-2007 Atheros Communications, Inc, All Rights Reserved
[ 13.140000] ath_ahb: 9.2.0_U10.5.13 (Atheros/multi-bss)
[ 13.140000] __ath_attach: Set global_scn[0]
[ 13.140000] ACBKMinfree = 48
[ 13.140000] ACBEMinfree = 32
[ 13.140000] ACVIMinfree = 16
[ 13.140000] ACVOMinfree = 0
[ 13.140000] CABMinfree = 48
[ 13.140000] UAPSDMinfree = 0
[ 13.144000] Bootstrap clock 40MHz
[ 13.148000] Wasp Enterprise mode: 0x00000000
[ 13.148000] ar9300RadioAttach: Need analog access recipe!!
[ 13.148000] Restoring Cal data from Flash
[ 13.149000] ath_hal: Ubiquiti Wasp
[ 13.149000] dfs_attach: use DFS enhancements
[ 13.152000] DFS domain=0
[ 13.152000] dfs_init_radar_filters: Unknown dfs domain 0
[ 13.156000] ath_get_caps[5125] rx chainmask mismatch actual 3 sc_chainmak 0
[ 13.156000] ath_get_caps[5100] tx chainmask mismatch actual 3 sc_chainmak 0
[ 13.170000] wifi0: Atheros 9340: mem=0xb8100000, irq=2
[ 13.170000] ath_pci: 9.2.0_U10.5.13 (Atheros/multi-bss)
[ 13.170000] wevent: registered
[ 13.170000] qos: registered
[ 13.170000] PCI: Setting latency timer of device 0000:00:00.0 to 64
[ 13.170000] __ath_attach: Set global_scn[1]
[ 13.170000] ACBKMinfree = 48
[ 13.170000] ACBEMinfree = 32
[ 13.170000] ACVIMinfree = 16
[ 13.170000] ACVOMinfree = 0
[ 13.170000] CABMinfree = 48
[ 13.170000] UAPSDMinfree = 0
[ 13.175000] ar9300RadioAttach: Need analog access recipe!!
[ 13.177000] Restoring Cal data from Flash
[ 13.178000] ath_hal: Ubiquiti Peacock
[ 13.180000] dfs_attach: use DFS enhancements
[ 13.183000] DFS domain=0
[ 13.183000] dfs_init_radar_filters: Unknown dfs domain 0
[ 13.183000] ath_get_caps[5125] rx chainmask mismatch actual 7 sc_chainmak 0
[ 13.183000] ath_get_caps[5100] tx chainmask mismatch actual 7 sc_chainmak 0
[ 13.197000] wifi1: Atheros 9580: mem=0x10000000, irq=64 hw_base=0xb0000000
[ 13.309000] device eth0 entered promiscuous mode
[ 13.320000] athr_gmac_ring_alloc Allocated 2048 at 0x8595b000
[ 13.320000] athr_gmac_ring_alloc Allocated 2048 at 0x878cc800
[ 13.869000] WASP ----> S17 PHY *
[ 13.869000] Setting Drop CRC Errors, Pause Frames and Length Error frames
[ 13.875000] athrs17_reg_init:done
[ 13.875000] Setting PHY...
[ 14.880000] Phy setup Complete
[ 14.882000] [az] 802.3az init done..
[ 14.884000] [az] 802.3az init done..
[ 14.886000] [az] 802.3az init done..
[ 14.888000] [az] 802.3az init done..
[ 14.889000] [az] 802.3az init done..
[ 14.896000] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 16.892000]
[ 16.892000] Enet:0 port0 up
[ 16.895000] ATH_MAC_TIMER: enet unit:0 is up...
[ 16.895000] GMii 1000Mbps full duplex
[ 16.895000] ATH_MAC_TIMER: done cfg2 0x7215 ifctl 0x0 miictrl
[ 16.895000] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 16.896000] br0: port 1(eth0) entering learning state
[ 17.896000] br0: port 1(eth0) entering forwarding state
[ 24.955000] br0: no IPv6 routers present
[ 26.987000] eth0: no IPv6 routers presentFully expecting it to not work, I tried just building the lastest version and seeing what happens. When I try flashing it, I get this:
BZ.v2.3.2# /sbin/fwupdate.real -c /tmp/uappro.factory.bin -d
Found mtd block: /dev/mtd0(u-boot)
Found mtd block: /dev/mtd1(u-boot-env)
Found mtd block: /dev/mtd2(jffs2)
Found mtd block: /dev/mtd3(cfg)
Found mtd block: /dev/mtd4(EEPROM)
Got U-Boot variable: mtdparts = mtdparts=mtdparts=ath-nor0:256k(u-boot),64k(u-boot-env),15744k(jffs2),256k(cfg),64k(EEPROM)
Adding U-Boot partition: u-boot 9F000000 00040000
Adding U-Boot partition: u-boot-env 9F040000 00010000
Adding U-Boot partition: jffs2 9F050000 00F60000
Adding U-Boot partition: cfg 9FFB0000 00040000
Adding U-Boot partition: EEPROM 9FFF0000 00010000
Calculating flash size:
Adding block: /dev/mtd0("u-boot") - size: 00040000
Adding block: /dev/mtd1("u-boot-env") - size: 00010000
Adding block: /dev/mtd2("jffs2") - size: 00F60000
Adding block: /dev/mtd3("cfg") - size: 00040000
Adding block: /dev/mtd4("EEPROM") - size: 00010000
Total flash size: 01000000
Flash start: 9F000000
Flash end: A0000000
Header MAGIC 'OPEN'
Current: BZ.ar934x.v2.3.2.946.120430.1858
New ver: UBNTXM.ar7240.v6.0.0-OpenWrt-r32576
Invalid version 'UBNTXM.ar7240.v6.0.0-OpenWrt-r32576'The CPU appears to be supported in OpenWRT, since the TP-Link TL-WDR4300 uses the same platform (AR9344). So this may just be as easy as changing the string in the firmware. What I'm not sure of is exactly WHAT to change. fwupdate is clearly checking the string, but I'm not sure what bits it cares about. I'm guessing the cpu type needs to be exactly the same, but can someone verify this before I start monkeying with the "target/linux/ar71xx/image/Makefile" file and kill the device?
Thanks!
--Brian
