TL-WR1043ND-v1.patch
| boards/TPLink/TL-WR1043ND-v1/README Mon Jan 16 10:09:56 2012 +0100 | ||
|---|---|---|
| 1 |
Further work is in progress, for now the kernel boots and the rootfs mounts. |
|
| 2 | ||
| 3 |
This was tested with TL-WR1043ND Ver:1.8, but I expect all 1.x should work. |
|
| 4 | ||
| 5 |
Many thanks to Adrian Chadd and Alexandr Rybalko for the kind help with this |
|
| 6 |
board definition, which is mostly based on Adrian's work on: |
|
| 7 |
http://code.google.com/p/freebsd-wifi-build/wiki/TpLinkTLWR1043ND |
|
| 8 | ||
| 9 | ||
| 10 | ||
| 11 |
How to build |
|
| 12 |
-------------------------------------------------------------------------------- |
|
| 13 | ||
| 14 |
as root: |
|
| 15 |
make FREEBSD_SRC_TREE=/your/path/to/ZRouter's/modified/FreeBSD/head TARGET_PAIR=TPLink/TL-WR1043ND-v1 |
|
| 16 | ||
| 17 |
Find the TPLink_TL-WR1043ND-v1.bin in /usr/obj/... and copy it to |
|
| 18 |
your TFTP server. |
|
| 19 | ||
| 20 | ||
| 21 | ||
| 22 |
How to flash |
|
| 23 |
-------------------------------------------------------------------------------- |
|
| 24 | ||
| 25 |
erase 0xbf020000 +7c0000 |
|
| 26 |
tftpboot 0x81000000 TPLink_TL-WR1043ND-v1.bin |
|
| 27 |
cp.b 0x81000000 0xbf020000 0x7c0000 |
|
| 28 |
bootm 0xbf020000 |
|
| 29 | ||
| 30 |
(hint: you can concatenate the commands by ";") |
|
| 31 | ||
| 32 | ||
| 33 | ||
| 34 |
TODO |
|
| 35 |
-------------------------------------------------------------------------------- |
|
| 36 | ||
| 37 |
* scripts which are writing to flash don't work |
|
| 38 |
("dd: /dev/map/config: Invalid argument")
|
|
| 39 | ||
| 40 |
* invert LEDs, now `echo 1 > /dev/led/status` switches off |
|
| 41 |
|
|
| 42 | ||
| 43 | ||
| 44 |
Eric Kraußer |
|
| 45 | ||
| boards/TPLink/TL-WR1043ND-v1/board.hints Mon Jan 16 10:09:56 2012 +0100 | ||
|---|---|---|
| 1 |
# from head/sys/mips/conf/TP-WN1043ND.hints by Adrian Chadd |
|
| 2 | ||
| 3 | ||
| 4 |
# arge |
|
| 5 |
hint.arge.0.at="nexus0" |
|
| 6 |
hint.arge.0.maddr=0x19000000 |
|
| 7 |
hint.arge.0.msize=0x1000 |
|
| 8 |
hint.arge.0.irq=2 |
|
| 9 | ||
| 10 |
hint.arge.1.at="nexus0" |
|
| 11 |
hint.arge.1.maddr=0x1a000000 |
|
| 12 |
hint.arge.1.msize=0x1000 |
|
| 13 |
hint.arge.1.irq=3 |
|
| 14 | ||
| 15 |
# XXX The ath device hangs off of the AHB, rather than the Nexus. |
|
| 16 |
hint.ath.0.at="nexus0" |
|
| 17 |
hint.ath.0.maddr=0x180c0000 |
|
| 18 |
hint.ath.0.msize=0x30000 |
|
| 19 |
hint.ath.0.irq=0 |
|
| 20 | ||
| 21 | ||
| 22 |
# Hard-code the PHY for now, until there's switch phy support. |
|
| 23 |
hint.arge.0.phymask=0x000c |
|
| 24 |
hint.arge.0.media=1000 |
|
| 25 |
hint.arge.0.fduplex=1 |
|
| 26 | ||
| 27 |
# Where is the MAC address stored in flash for this particular unit. |
|
| 28 |
hint.arge.0.eeprommac=0x1f01fc00 |
|
| 29 | ||
| 30 |
# This isn't used, but configure it anyway. |
|
| 31 |
# This should eventually just not be configured, but the if then |
|
| 32 |
# needs to be properly disabled or spurious interrupts occur. |
|
| 33 |
hint.arge.1.phymask=0x0 |
|
| 34 | ||
| 35 |
# Where the ART is |
|
| 36 |
hint.ath.0.eepromaddr=0x1fff1000 |
|
| 37 | ||
| 38 |
# |
|
| 39 |
# Define a slightly custom flash layout. |
|
| 40 |
# The default flash layout: |
|
| 41 |
# |
|
| 42 |
# 128k: uboot |
|
| 43 |
# 1024k: kernel |
|
| 44 |
# 4096k: rootfs |
|
| 45 |
# 2816: unknown |
|
| 46 |
# 64k: board config? |
|
| 47 |
# 64k: ART |
|
| 48 |
# |
|
| 49 |
# from printenv: |
|
| 50 |
# bootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 init=/sbin/init |
|
| 51 |
# mtdparts=ar9100-nor0:128k(u-boot),1024k(kernel),4096k(rootfs),64k(art) |
|
| 52 |
# This isn't a lot of space! |
|
| 53 |
# So: |
|
| 54 |
# 128k: uboot |
|
| 55 |
# ????: kernel |
|
| 56 |
# ????: rootfs |
|
| 57 |
# 64k: config |
|
| 58 |
# 64k: ART |
|
| 59 | ||
| 60 |
hint.map.0.at="flash/spi0" |
|
| 61 |
hint.map.0.start=0x00000000 |
|
| 62 |
hint.map.0.end=0x000020000 |
|
| 63 |
hint.map.0.name="bootloader" |
|
| 64 |
hint.map.0.readonly=1 |
|
| 65 | ||
| 66 |
hint.map.1.at="flash/spi0" |
|
| 67 |
hint.map.1.start=0x00020000 |
|
| 68 |
hint.map.1.end="search:0x00100000:0x10000:.!/bin/sh" |
|
| 69 |
hint.map.1.name="kernel" |
|
| 70 |
hint.map.1.readonly=1 |
|
| 71 | ||
| 72 |
hint.map.2.at="flash/spi0" |
|
| 73 |
hint.map.2.start="search:0x00100000:0x10000:.!/bin/sh" |
|
| 74 |
hint.map.2.end=0x007e0000 |
|
| 75 |
hint.map.2.name="rootfs" |
|
| 76 |
hint.map.2.readonly=1 |
|
| 77 | ||
| 78 |
hint.map.3.at="flash/spi0" |
|
| 79 |
hint.map.3.start=0x00020000 |
|
| 80 |
hint.map.3.end=0x007e0000 |
|
| 81 |
hint.map.3.name="upgrade" |
|
| 82 |
hint.map.3.readonly=0 |
|
| 83 | ||
| 84 |
hint.map.4.at="flash/spi0" |
|
| 85 |
hint.map.4.start=0x007e0000 |
|
| 86 |
hint.map.4.end=0x007f0000 |
|
| 87 |
hint.map.4.name="config" |
|
| 88 |
hint.map.4.readonly=0 |
|
| 89 | ||
| 90 |
# This is radio calibration section. It is (or should be!) unique |
|
| 91 |
# for each board, to take into account thermal and electrical differences |
|
| 92 |
# as well as the regulatory compliance data. |
|
| 93 |
hint.map.5.at="flash/spi0" |
|
| 94 |
hint.map.5.start=0x007f0000 |
|
| 95 |
hint.map.5.end=0x00800000 |
|
| 96 |
hint.map.5.name="art" |
|
| 97 |
hint.map.5.readonly=1 |
|
| 98 | ||
| 99 |
# GPIO specific configuration block |
|
| 100 |
# Don't flip on anything that isn't already enabled. |
|
| 101 |
# This includes leaving the SPI CS1/CS2 pins as GPIO pins as they're |
|
| 102 |
# not used here. |
|
| 103 |
hint.gpio.0.function_set=0x00000000 |
|
| 104 |
hint.gpio.0.function_clear=0x00000000 |
|
| 105 | ||
| 106 |
# These are the GPIO LEDs and buttons which can be software controlled. |
|
| 107 |
hint.gpio.0.pinmask=0x001c02ae |
|
| 108 |
# pin 1 - USB (LED) |
|
| 109 |
# pin 2 - System (LED) |
|
| 110 |
# Pin 3 - Reset (input) |
|
| 111 |
# Pin 5 - QSS (LED) |
|
| 112 |
# Pin 7 - QSS Button (input) |
|
| 113 |
# Pin 8 - wired into the chip reset line |
|
| 114 |
# Pin 9 - WLAN |
|
| 115 |
# Pin 10 - UART TX (not GPIO) |
|
| 116 |
# Pin 13 - UART RX (not GPIO) |
|
| 117 |
# Pin 18 - RTL8366RB switch data line |
|
| 118 |
# Pin 19 - RTL8366RB switch clock line |
|
| 119 |
# Pin 20 - "GPIO20" |
|
| 120 |
# LEDs are configured separately and driven by the LED device |
|
| 121 | ||
| 122 |
# the output needs to be inverted (flags=0x????) |
|
| 123 |
# on some LEDs or "echo 1 > /dev/led/status" will switch off the LED |
|
| 124 |
# see sys/sys/gpio.h in FreeBSD sources |
|
| 125 | ||
| 126 |
# USB |
|
| 127 |
hint.gpioled.0.at="gpiobus0" |
|
| 128 |
hint.gpioled.0.name="usb" |
|
| 129 |
hint.gpioled.0.pins=0x0002 |
|
| 130 |
#hint.gpioled.0.flags=0x???? |
|
| 131 | ||
| 132 |
# SYS |
|
| 133 |
hint.gpioled.1.at="gpiobus0" |
|
| 134 |
hint.gpioled.1.name="status" |
|
| 135 |
hint.gpioled.1.pins=0x0004 |
|
| 136 |
#hint.gpioled.1.flags=0x???? |
|
| 137 | ||
| 138 |
# QSS |
|
| 139 |
hint.gpioled.2.at="gpiobus0" |
|
| 140 |
hint.gpioled.2.name="qss" |
|
| 141 |
hint.gpioled.2.pins=0x0020 |
|
| 142 | ||
| 143 |
# WLAN |
|
| 144 |
hint.gpioled.3.at="gpiobus0" |
|
| 145 |
hint.gpioled.3.name="wlan" |
|
| 146 |
hint.gpioled.3.pins=0x0200 |
|
| 147 |
#hint.gpioled.3.flags=0x???? |
|
| 148 | ||
| boards/TPLink/TL-WR1043ND-v1/board.mk Mon Jan 16 10:09:56 2012 +0100 | ||
|---|---|---|
| 1 | ||
| 2 |
################################################### |
|
| 3 |
# |
|
| 4 |
# Board used hardware/chips |
|
| 5 |
# |
|
| 6 |
################################################### |
|
| 7 | ||
| 8 |
SOC_VENDOR=Atheros |
|
| 9 |
SOC_CHIP=AR9132 |
|
| 10 |
BOARD_FLASH_SIZE=8M |
|
| 11 | ||
| 12 | ||
| 13 |
################################################### |
|
| 14 |
# |
|
| 15 |
# Vars for kernel config |
|
| 16 |
# |
|
| 17 |
################################################### |
|
| 18 | ||
| 19 |
# ident |
|
| 20 |
KERNCONF_IDENT=${TARGET_VENDOR}_${TARGET_DEVICE}
|
|
| 21 | ||
| 22 |
# Enable the uboot environment stuff rather then the redboot stuff. |
|
| 23 |
KERNCONF_OPTIONS+= AR71XX_ENV_UBOOT |
|
| 24 | ||
| 25 |
# Force the board memory - 32MB |
|
| 26 |
KERNCONF_OPTIONS+= AR71XX_REALMEM=32*1024*1024 |
|
| 27 | ||
| 28 | ||
| 29 |
# Include usb and SoC usb controller drivers |
|
| 30 |
WITH_USB=yes |
|
| 31 | ||
| 32 |
# Builded modules |
|
| 33 |
KERNCONF_MODULES_OVERRIDE+=usb/uplcom usb/u3g usb/umodem usb/umass usb/ucom cam zlib |
|
| 34 | ||
| 35 |
KERNCONF_DEVICES+= switch |
|
| 36 | ||
| 37 |
# Additional utilities |
|
| 38 |
WORLD_SUBDIRS_ZROUTER+=target/sbin/upgrade |
|
| 39 | ||
| 40 |
.if !defined(WITHOUT_WIRELESS) |
|
| 41 |
KERNCONF_OPTIONS+= IEEE80211_DEBUG |
|
| 42 |
KERNCONF_OPTIONS+= IEEE80211_SUPPORT_MESH |
|
| 43 |
KERNCONF_OPTIONS+= IEEE80211_SUPPORT_TDMA |
|
| 44 |
KERNCONF_DEVICES+= wlan |
|
| 45 |
# ? not for ath? |
|
| 46 |
#KERNCONF_DEVICES+= wlan_amrr |
|
| 47 |
KERNCONF_DEVICES+= wlan_wep |
|
| 48 |
KERNCONF_DEVICES+= wlan_ccmp |
|
| 49 |
KERNCONF_DEVICES+= wlan_tkip |
|
| 50 |
KERNCONF_DEVICES+= wlan_xauth |
|
| 51 | ||
| 52 |
KERNCONF_OPTIONS+= AH_DEBUG |
|
| 53 |
KERNCONF_OPTIONS+= ATH_DEBUG |
|
| 54 |
KERNCONF_OPTIONS+= ATH_DIAGAPI |
|
| 55 |
KERNCONF_OPTIONS+= AH_SUPPORT_AR5416 |
|
| 56 |
# Makes other chipsets not function! |
|
| 57 |
KERNCONF_OPTIONS+= AH_SUPPORT_AR9130 |
|
| 58 |
KERNCONF_OPTIONS+= AH_RXCFG_SDMAMW_4BYTES |
|
| 59 |
KERNCONF_OPTIONS+= ATH_ENABLE_11N |
|
| 60 | ||
| 61 |
KERNCONF_DEVICES+= ath |
|
| 62 |
KERNCONF_DEVICES+= ath_rate_sample |
|
| 63 |
KERNCONF_DEVICES+= ath_ahb |
|
| 64 |
# not needed anymore? |
|
| 65 |
#KERNCONF_DEVICES+= ath_hal |
|
| 66 |
KERNCONF_DEVICES+= ath_ar5212 |
|
| 67 |
KERNCONF_DEVICES+= ath_ar5416 |
|
| 68 |
KERNCONF_DEVICES+= ath_ar9130 |
|
| 69 |
.endif |
|
| 70 | ||
| 71 | ||
| 72 |
################################################### |
|
| 73 |
# |
|
| 74 |
# Limits |
|
| 75 |
# |
|
| 76 |
################################################### |
|
| 77 | ||
| 78 |
# Image must not be bigger than 'upgrade' geom_map partition |
|
| 79 |
FIRMWARE_IMAGE_SIZE_MAX=0x007c0000 |
|
| 80 | ||
| 81 |
# the hint.map.?.start address from board.hints where hint.map.?.name="kernel" |
|
| 82 |
KERNEL_MAP_START=0x00020000 |
|
| 83 | ||
| 84 | ||
| 85 |
################################################### |
|
| 86 |
# |
|
| 87 |
# Firmware Image Options |
|
| 88 |
# |
|
| 89 |
################################################### |
|
| 90 | ||
| 91 |
TARGET_PROFILES+=SMALL_ mpd ssh shttpd dlink.ua.web hostap dhcp nfs_client |
|
| 92 | ||
| 93 |
MKULZMA_BLOCKSIZE=65536 |
|
| 94 | ||
| 95 |
PACKING_KERNEL_IMAGE=kernel.strip.kbin.gz.sync |
|
| 96 |
PACKING_ROOTFS_IMAGE=rootfs_clean.iso.ulzma |
|
| 97 | ||
| 98 |
TPLINK_BOARDTYPE="TL-WR1043NDv1" |
|
| 99 | ||
| 100 |
IMAGE_SUFFIX=bin |
|
| 101 |
NEW_IMAGE_TYPE=tplink_image |
|
| 102 | ||
| boards/TPLink/TL-WR1043ND-v1/files/etc/rc.d/ADAPTATION Mon Jan 16 10:09:56 2012 +0100 | ||
|---|---|---|
| 1 |
#!/bin/sh |
|
| 2 | ||
| 3 |
# PROVIDE: ADAPTATION |
|
| 4 | ||
| 5 |
. /etc/rc.subr |
|
| 6 |
. /etc/network.subr |
|
| 7 | ||
| 8 |
name="ADAPTATION" |
|
| 9 |
start_cmd="adapt_start" |
|
| 10 |
start_precmd="adapt_prestart" |
|
| 11 |
start_postcmd="adapt_poststart" |
|
| 12 |
stop_cmd="adapt_stop" |
|
| 13 | ||
| 14 |
adapt_prestart() |
|
| 15 |
{
|
|
| 16 |
#ifconfig rt0 name lan0 |
|
| 17 |
#ifconfig vlan2 create vlan 2 vlandev lan0 |
|
| 18 |
#ifconfig vlan2 name wan0 |
|
| 19 |
# name wlan0 will be used when hostap or client are created |
|
| 20 |
#ifconfig rt28600 name wifi0 |
|
| 21 |
#hostname `kenv HostName` |
|
| 22 |
#wan_mac_addr=`kenv WAN_MAC_ADDR` |
|
| 23 |
# lan mac wan+1 |
|
| 24 |
# wlan mac wan+2 |
|
| 25 | ||
| 26 |
} |
|
| 27 | ||
| 28 |
adapt_start() |
|
| 29 |
{
|
|
| 30 |
} |
|
| 31 | ||
| 32 |
adapt_poststart() |
|
| 33 |
{
|
|
| 34 |
} |
|
| 35 | ||
| 36 |
adapt_stop() |
|
| 37 |
{
|
|
| 38 |
} |
|
| 39 | ||
| 40 |
load_rc_config $name |
|
| 41 | ||
| 42 |
run_rc_command $* |
|