User Tools

Site Tools


toh:netgear:wndr3700

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
toh:netgear:wndr3700 [2012/12/08 11:50]
hnyman clarify
toh:netgear:wndr3700 [2016/01/20 17:22] (current)
richbhanover Added tab box showing all characteristics
Line 1: Line 1:
 +====== Netgear WNDR3700 and WNDR37AV ======
  
 +{{:​media:​netgear:​wndr3700:​wndr3700_v2_general_view.png?​300|}}
 +
 +The Netgear WNDR3700 has multiple different versions as shown in this table. ​
 +
 +^ Version ^ Notes ^
 +| v1 | Based on the [[doc:​hardware:​soc:​soc.qualcomm.ar71xx|Atheros ar71xx platform]]. Also sold as WNDR37AV-100PES,​ WNDR3700-100PES ​ |
 +| v2 | Based on the [[doc:​hardware:​soc:​soc.qualcomm.ar71xx|Atheros ar71xx platform]]. Box side panel lists WNDR3700**v2**,​ also sold as WNDRMAC-100PES,​ WNDR3700-100PRS |
 +| v3 | Based on the [[doc:​hardware:​soc/​soc.broadcom.bcm47xx|Broadcom SoC]]. |
 +| v4 | Based on the Atheros platform like v1 and v2, NAND flash, same PCB as [[toh:​netgear:​WNDR4300]],​ but only 2T2R. See also [[https://​forum.openwrt.org/​viewtopic.php?​id=41094|this forum thread]]. May be labeled as WNDR3700-100PES on the packaging'​s side panel (like some v1 models). | 
 +| v5 | <color red>Not supported</​color>​ Based on the MediaTek SoC. See [[https://​forum.openwrt.org/​viewtopic.php?​id=56737|this forum thread]] for info and actual status. This, too, may be labeled WNDR3700-100PES on the packaging. |
 +| WNDR37AV | Netgear has sold a number of WNDR3700v2 units in boxes marked WNDR37AV. The hardware is exactly identical to version 2 (even to the point of many users finding a router physically labeled "​WNDR3700"​ or "​WNDR3700v2"​ inside of a box labeled "​WNDR37AV"​). |
 +
 +<WRAP left round info 80%>
 +You can not tell the version number by looking at the revision number. V1 and v2 seem to share the same EAN barcodes. [[http://​forum1.netgear.com/​showthread.php?​t=63234|Here]] you can read how to determine your versions within Netgear'​s firmware. Another way is to look at the box your router came in - under "​Package Contents"​ it will say "N600 Wireless Dual Band Gigabit Router (WNDR3700**v2**)"​ for version 2, and plain WNDR3700 for version 1, see {{media:​netgear:​wndr3700:​wndr3700v1v2.jpg?​linkonly|WNDR3700 boxes v1 vs. v2}}
 +</​WRAP>​
 +
 +<WRAP left round info 80%>
 +There are rumours that a certain batch of version 1 routers have problems with the 2,4 GHz radio suddenly dying. These came in boxes marked as -01R14 or -01R15 on the barcode label. It is also said that -01R21 or -02R01 are expected to be working o.k. Board version 4 is said to be reliable. If you look at the pictures you may see at least 3 places with some kind of "​version"​ numbering. ​ See [[http://​spreadsheets.google.com/​pub?​key=0AjNDNODfzgytdEJvZ0N0SkFLejFJZzBHcnFaaUg4OGc&​hl=en&​output=html|this spreadsheet]].
 +</​WRAP>​
 +
 +===== Device Info and Specifics =====
 +
 +==== Hardware Highlights from ToH TechData ====
 +
 +---- datatable ----
 +cols    : Versions, Platform, CPU MHz, Flash MB_mbflashs,​ RAM MB_mbram, WLAN Hardware, WLAN 2.4Ghz, WLAN 5.0Ghz, Ethernet Gbit ports_, USB ports_
 +header ​ : Version, SoC, CPU MHz, Flash MB, RAM MB, WLAN Hardware, WLAN2.4, WLAN5.0, Gbit ports, USB
 +align   : c,​l,​c,​c,​c,​l,​c,​c,​c,​c,​c,​c
 +filter ​ : Brand=Netgear
 +filter ​ : Model=WNDR3700
 +----
 +
 +==== Other Hardware Highlights ====
 +^ Ver ^ CPU ^ Ram ^ Flash ^ Network ^ Wireless ^ USB ^ Serial ^ JTag ^ Wiki ^ FCC ^
 +| v1 | Atheros AR7161 rev 2 680MHz | 64MiB | 8MiB | 1 WAN + 4x LAN (GBit) | AR9220 [an 2x2:2] + AR9223 [bgn 2x2:2] | Yes | Yes | Yes | [[https://​wikidevi.com/​wiki/​Netgear_WNDR3700v1|here]] | [[https://​apps.fcc.gov/​oetcf/​eas/​reports/​ViewExhibitReport.cfm?​mode=Exhibits&​RequestTimeout=500&​calledFromFrame=N&​application_id=278475&​fcc_id='​PY308300092'​|here]] |
 +| v2 | Atheros AR7161 rev 2 680MHz | 64MiB | 16MiB | 1 WAN + 4x LAN (GBit) | AR9220 [an 2x2:2] + AR9223 [bgn 2x2:2] | Yes | Yes | Yes | [[https://​wikidevi.com/​wiki/​Netgear_WNDR3700v2|here]] | [[https://​apps.fcc.gov/​oetcf/​eas/​reports/​ViewExhibitReport.cfm?​mode=Exhibits&​RequestTimeout=500&​calledFromFrame=N&​application_id=290558&​fcc_id='​PY308300092'​|here]] |
 +| v3 | Broadcom BCM4718A1 | 64MiB | 8MiB | 1 WAN + 4x LAN (GBit) | BCM4331 [an 2x2:2] + BCM4718A1 [bgn 2x2:2] | Yes | ? | ? | [[https://​wikidevi.com/​wiki/​Netgear_WNDR3700v3|here]] | [[https://​apps.fcc.gov/​oetcf/​eas/​reports/​ViewExhibitReport.cfm?​mode=Exhibits&​RequestTimeout=500&​calledFromFrame=N&​application_id=651807&​fcc_id='​PY311200166'​|here]] |
 +| v4 | Atheros AR9344 560MHz | 128MiB | 128MiB NAND | 1 WAN + 4x LAN (GBit) | AR9582 [an 2x2:2] + AR9344 [bgn 2x2:2] | Yes | Yes | Yes | [[https://​wikidevi.com/​wiki/​Netgear_WNDR3700v4|here]] | [[https://​apps.fcc.gov/​oetcf/​eas/​reports/​ViewExhibitReport.cfm?​mode=Exhibits&​RequestTimeout=500&​calledFromFrame=N&​application_id=847398&​fcc_id='​PY312100186'​|here]] |
 +| v5 | MediaTek MT7621ST 880 MHz | 128MiB | 128MiB | 1 WAN + 4x LAN (GBit) | ? | Yes | Yes | ? | ? | FCC ID PY314200275 |
 +
 +===== Supported Versions =====
 +
 +---- datatable ----
 +cols    : Brand, Model, Versions, Supported Current Rel, OEM device homepage URL_url, Forum Topic URL_url, Device Techdata_pageid
 +align   : c,​c,​c,​c,​c,​c,​c
 +filter ​ : Brand=Netgear
 +filter ​ : Model=WNDR3700
 +sort    : Versions
 +----
 +
 +===== Experimental Versions =====
 +
 +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 + ​* ​  The official Table of Hardware only lists current, stable versions of OpenWrt. ​ *
 + ​* ​  Use this space to describe any on-going efforts to create a newer version ​      *
 + ​* ​  of the firmware for this device. Provide links to firmware images, ​             *
 + ​* ​  ​active threads on the forum, or other sources of information. ​                  *
 + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 +
 +//None at this time.//
 +
 +
 +===== Downloading =====
 +
 +^ Version ^ Download link ^
 +| v1 (North America) | http://​downloads.openwrt.org/​barrier_breaker/​14.07/​ar71xx/​generic/​openwrt-ar71xx-generic-wndr3700-squashfs-factory-NA.img |
 +| v1 (rest of the world) | http://​downloads.openwrt.org/​barrier_breaker/​14.07/​ar71xx/​generic/​openwrt-ar71xx-generic-wndr3700-squashfs-factory.img |
 +| v2 | http://​downloads.openwrt.org/​barrier_breaker/​14.07/​ar71xx/​generic/​openwrt-ar71xx-generic-wndr3700v2-squashfs-factory.img |
 +| v3 | http://​downloads.openwrt.org/​barrier_breaker/​14.07/​brcm47xx/​mips74k/​openwrt-wndr3700_v3-squashfs.chk |
 +| v4 | http://​downloads.openwrt.org/​barrier_breaker/​14.07/​ar71xx/​nand/​openwrt-ar71xx-nand-wndr3700v4-ubi-factory.img |
 +
 +The files ending with ''​-sysupgrade.bin''​ are for upgrading existing OpenWrt installations.
 +
 +To create your own customized firmware, see [[doc:​howtobuild:​build.wndr3700]].
 +
 +===== Installation =====
 +
 +=== How to flash the firmware to device? ===
 +Please consult ->​[[doc:​howto:​generic.flashing|Installing OpenWrt (generic)]] and additionally read on here for WNDR3700 specifics.
 +
 +== OEM easy installation ==
 +
 +To install simply use the stock WNDR3700 GUI to upload and install OpenWrt. Remember to use a **factory.img** image. Non North American users will get an warning regarding that OpenWrt identifies itself an NA, don't worry. You can just simple ignore this.
 +[[https://​forum.openwrt.org/​viewtopic.php?​id=24993|Netgear WNDR3700 - OpenWrt New User(s)]]
 +
 +== OEM installation using the TFTP method (recommended) ==
 +
 +Hold the '​System Restore'​ button on the underside of the router while powering it on, and hold the button until the power led blinks **green**. Then, upload the .img firmware as described in [[doc/​howto/​generic.flashing.tftp|Installing OpenWrt via TFTP]] (see the section titled Bootloader contains TFTP server). However, note that the router will not accept the firmware when the filename is too long! Using firmware.img as filename should work.  After upload, the power led is turned off and flashing starts, after that is finished the router will restart and the power led will eventually become stable green (it will be stable orange for quite some time first).
 +
 +== OEM installation via serial console and TFTP ==
 +
 +  * Connect via serial console (also accounts for [[wndr3700#​usb.serial.console|USB Serial Console]])
 +  * Interrupt U-Boot by pressing any key
 +  * You may need to enable writes to the flash by issuing "​protect off all"
 +  * At the U-Boot promt enter the ''​fsload''​ command
 +  * A TFTP server starts listening on port 192.168.1.1
 +  * Start TFTPing the image now
 +    * For the V1: ''​openwrt-ar71xx-generic-wndr3700-squashfs-factory.img''​
 +    * For the V2: ''​openwrt-ar71xx-generic-wndr3700**v2**-squashfs-factory.img''​
 +
 +<​code>​
 +tftp 192.168.1.1
 +mode binary
 +put openwrt-ar71xx-generic-wndr3700XXX-squashfs-factory.img
 +quit
 +</​code>​
 +
 +===== Upgrading =====
 +See [[doc:​howto:​generic.sysupgrade]].
 +
 +===== Configuration =====
 +See [[doc:​howto:​basic.config]].
 +
 +===== Advanced Operation =====
 +
 +==== Pre-built Customized firmware ====
 +Besides generic OpenWRT firmware distribution,​ there are customized builds based on it and managed by individuals in the community.
 +
 +[[https://​forum.openwrt.org/​viewforum.php?​id=16|Announcements and updates]] can be found on the OpenWRT users forum.
 +
 +Typically, these builds are intended to extend functionality and/or to improve performance of the firmware, as well as provide the end-user with a preconfigured setup.
 +
 +**Warning**:​ As custom builds are mostly based on the [[about:​history#​bleeding_edgetrunk|trunk (bleeding edge) branch]], they are much more prone to bugs and regressions.
 +
 +In order to address this, some members also release builds based on the [[about:​history#​stable.releases|stable branch]], thus reducing the potential of regressions,​ yet providing the advantages of customization (check out the link to hnyman'​s build below).
 +
 +Specifically for WNDR3700, these are the longer maintained and the more frequently updated builds (as of July 2015):
 +
 +  * [[https://​forum.openwrt.org/​viewtopic.php?​id=28392|IPv6 oriented Openwrt build for WNDR3700]] (managed by hnyman; trunk and stable builds)
 +  * [[https://​forum.openwrt.org/​viewtopic.php?​id=47382|OpenWRT builds (BB) fully featured for various routers]] (managed by mk13139; trunk and stable builds)
 +  * [[https://​forum.openwrt.org/​viewtopic.php?​id=50914|Optimized and feature rich trunk build for select routers]] (managed by arokh; trunk-only builds)
 +
 +==== Flash Layout ====
 +->​[[doc:​techref:​flash.layout]]
 +
 +==== Specific Configuration ====
 +=== Interfaces ===
 +The default network configuration is:
 +^ Interface Name   ^ Description ​         ^ Default configuration ​  ^
 +| br-lan ​          | LAN & WiFi           | 192.168.1.1/​24 ​         |
 +| eth0             | LAN ports (1 to 4)   | None                    |
 +| eth1             | WAN port             | DHCP                    |
 +| wlan0            | WiFi                 | Disabled ​               |
 +| wlan1            | WiFi                 | Disabled ​               |
 +
 +=== Switch Ports (for VLANs) ===
 +:!: There seems to be an issue with the internal switch. I've observed this with all kinds of laptops and OS's on a dozen access points. The problem is that sometimes traffic with a destination of a wifi client will no longer be routed to it, leading to a non-working wifi client. My advice would be to uncheck '​learning and aging' under Network -> Switch in LUCI, although this effectively may turn your switch into a hub. See https://​dev.openwrt.org/​ticket/​13612
 +
 +Numbers 0-3 are Ports 4 to 1 as labeled on the unit, 5 is the internal connection to the router itself. Don't be fooled: Port 1 on the unit is number 3 when configuring VLANs. vlan0 = eth0.0, vlan1 = eth0.1 and so on.
 +^ Port         ^ Switch port   ^
 +| CPU (eth0) ​  | 5             |
 +| No port      | 4             |
 +| LAN 1        | 3             |
 +| LAN 2        | 2             |
 +| LAN 3        | 1             |
 +| LAN 4        | 0             |
 +
 +{{media:​netgear:​wndr3700:​wndr3700-c.png}}
 +
 +WAN port is a gigabit port. VLANs can be configured to work on both LAN and WAN.
 +
 +To create a VLANx on WAN port (eth1) declare an interface as "​eth1.x"​.
 +It can be further bridged with one of the switch ports if necessary.
 +
 +For the LAN interface two actions are needed:
 +  * Declare "​eth0.x"​ interface
 +  * Define switch_vlan configuration for each of the switch ports.
 +
 +When vlans are defined on the switch ports VLAN0 cannot be used on eth0 any more. So the default router configuration must be changed, otherwise traffic stops on the switch ports and hard reset is needed.
 +
 +Here is an example.
 +WAN port is trunked on VLAN6 and VLAN4. VLAN6 has dhcp protocol defined. VLAN4 is bridged with one of the switch ports.
 +LAN ports 1-3 are assigned to default VLAN1 (VLAN0 is not possible for some reason).
 +LAN port 4 is assigned to VLAN4 and bridged with WAN.
 +
 +So all the traffic that goes to switch port 4 will also pass to WAN's vlan4.
 +Switch port numbering is other way around from physical ports.
 +
 +<​code>​
 +config interface lan
 + option ifname eth0.1
 + option type bridge
 + option proto static
 + option ipaddr 192.168.1.1
 + option netmask 255.255.255.0
 +
 +config interface wan
 + option ifname eth1.6
 + option proto dhcp
 +
 +config interface vlan4
 + option type bridge
 + option ifname "​eth0.4 eth1.4"​
 + option proto static
 + option ipaddr 192.168.20.1
 + option netmask 255.255.255.0
 + option defaultroute 0
 +
 +config switch
 + option name rtl8366s
 + option reset 1
 + option enable_vlan 1
 + option blinkrate 2
 +
 +config switch_vlan
 + option device rtl8366s
 + option vlan 0
 + option ports "​5*"​
 +
 +config switch_vlan
 + option device rtl8366s
 + option vlan 1
 + option ports "​1 2 3 5t"
 +
 +config switch_vlan
 + option device rtl8366s
 + option vlan 4
 + option ports "​0 5t"
 +</​code>​
 +
 +**Note:** The VLAN switch configuration in Attitude Adjustment 12.09 has a bug ( https://​dev.openwrt.org/​ticket/​7795 ), so that you need to first disable VLAN trunk and than reenable it like this:
 +
 +<​code>​
 +# swconfig dev rtl8366s vlan 1 set ports '0 1 2 3t 5'
 +# swconfig dev rtl8366s vlan 1 set ports '0 1 2 3t 5t'
 +</​code>​
 +
 +Note: The switch ports are not properly shown in the Backfire 10.03.1-rc4 Luci-interface,​ unless you add the chip name to the '​config switch'​ line: like '​config switch rtl8366s'​. After making that addition, Luci shows the VLANs properly at the Network/​Switch page. (Reference: https://​dev.openwrt.org/​ticket/​7830 )
 +
 +
 +=== Switch LED configuration ===
 +The switch on wndr3700 supports following led groups:
 +  * Group 1: green leds for all ports on the switch
 +  * Group 2: orange leds for all ports on the switch
 +
 +Each group can be configured into one of 16 different modes:
 +  * Mode 0: LED off
 +  * Mode 1: Collision, Full duplex Indicator. Blinks when collision happens. Led is on for full duplex, and off for half duplex mode.
 +  * Mode 2: Link, Activity Indicator. On for link established. Link/Act Blinks when the corresponding port is transmitting or receiving.
 +  * Mode 3: 1000Mb/s Speed Indicator. On for 1000Mb/s.
 +  * Mode 4: 100Mb/s Speed Indicator. On for 100Mb/s.
 +  * Mode 5: 10Mb/s Speed Indicator. On for 10Mb/s.
 +  * Mode 6: 1000Mb/s Speed/​Activity Indicator. On for 1000Mb/s. Blinks when the corresponding port is transmitting or receiving.
 +  * Mode 7: 100Mb/s Speed/​Activity Indicator. On for 100Mb/s. Blinks when the corresponding port is transmitting or receiving.
 +  * Mode 8: 10Mb/s Speed/​Activity Indicator. On for 10Mb/s. Blinks when the corresponding port is transmitting or receiving.
 +  * Mode 9: 10/100Mb/s Speed/​Activity Indicator. On for 10/100Mb/s. Blinks when the corresponding port is transmitting or receiving.
 +  * Mode 10: Fiber link Indicator. On for Fiber.
 +  * Mode 11: Fault Indicator. On for Fault.
 +  * Mode 12: Link, Activity Indicator. On for link established. Link/Rx Blinks when the corresponding port is transmitting.
 +  * Mode 13: Link, Activity Indicator. On for link established. Link/Tx Blinks when the corresponding port is receiving.
 +  * Mode 14: Link on Master Indicator. On for link Master established.
 +  * Mode 15: LED value is read from a separate register
 +
 +A sample configuration is orange LEDs for 10/100 Mb/s connections and green for 1000 Mb/s which are blinking on activity.
 +<​code>​swconfig dev rtl8366s port 1 set led 6
 +swconfig dev rtl8366s port 2 set led 9</​code>​
 +
 +(Notice how swconfig port number is actually the led group number and last number is the desired mode)
 +
 +You can also control blinkrate of the leds with values: 0 = 43ms, 1 = 84ms, 2 = 120ms, 3 = 170ms, 4 = 340ms, 5 = 670ms.
 +<​code>​swconfig dev rtl8366s set blinkrate 2</​code>​
 +
 +Note: The default LED config built into Backfire 10.03.1-rc4 (and earlier) does not match the explanation printed on the router'​s bottom. To make the LED behaviour match the printed explanation (green LED for 1000Mb/s), use mode 6 for port 1, mode 9 for port 2 and mode 2 for port 5. This has later been patched to [[about:​history#​bleeding.edge.trunk|trunk (bleeding edge)]] and Backfire branch. You can either use the swconfig command or directly edit the file '/​etc/​config/​network'​. Reference: https://​dev.openwrt.org/​ticket/​8103
 +
 +=== Deactivate all LEDs ===
 +Put below in rc.local
 +<​code>​
 +for i in /​sys/​class/​leds/​* ; do echo 0 > "​$i"/​brightness;​ done
 +for i in 0 1 2 3 4; do swconfig dev switch0 port $i set led 0; done
 +</​code>​
 +
 +=== Activate USB LED in Backfire ===
 +Install the package '​kmod-leds-wndr3700-usb'​. ​
 +
 +Add a USB LED configuration entry to /​etc/​config/​system (you can edit the file manually or use Luci/​System/​LED_Configuration page) 
 +
 +<​code>​
 +config '​led'​
 + option '​name'​ 'USB LED'
 + option '​sysfs'​ '​wndr3700:​green:​usb'​
 + option '​default'​ '​0'​
 +</​code>​
 +
 +But that still just adds a default state to the LED. The LED will not yet turn itself on. You need to create an entry for the hotplug config: ​
 +
 +You should add an entry to '/​etc/​hotplug.d/​usb/​10-usb'​ and your USB LED should be working. It won't do anything fancy (like blinking when there is disk activity), but it will turn on when a USB disk is connected and turn off when the device is removed. ​
 +
 +Code for the file /​etc/​hotplug.d/​usb/​10-usb : 
 +<code bash>#​!/​bin/​sh
 +# Copyright (C) 2009 OpenWrt.org
 +case "​$ACTION"​ in
 +    add)
 +        # update LEDs
 +        echo "​255"​ >/​sys/​devices/​platform/​wndr3700-led-usb/​leds/​wndr3700:​green:​usb/​brightness
 +        ;;
 +    remove)
 +        # update LEDs
 +        echo "​0"​ >/​sys/​devices/​platform/​wndr3700-led-usb/​leds/​wndr3700:​green:​usb/​brightness
 +        ;;
 +esac</​code>​
 +
 +The LED should now react to inserting/​removing USB devices. ​
 +
 +Note: Reference to original info: https://​forum.openwrt.org/​viewtopic.php?​pid=105502#​p105502 ​
 +
 +==== Hardware Buttons ====
 +->​[[doc:​howto:​hardware.button]]
 +
 +=== Monitor button actions ===
 +
 +WNDR3700 buttons have currently (r25360) different names in Backfire and in [[about:​history#​bleeding.edge.trunk|trunk]] :
 +^          ^ Reset ^ WPS   ^ WiFi  ^
 +^ Backfire | BTN_0 | BTN_1 | BTN_2 |
 +^ Trunk    | reset | wps   | BTN_2 |
 +
 +=== Activate the buttons ===
 +
 +== WiFi button ==
 +
 +The button automatics is done with the ''​wifitoggle''​ package. It only requires hotplugging the button event to the '/​sbin/​wifi'​ script. ​
 +  * The button toggles WiFi off, it at least one radio was on. 
 +  * And if both radios were off, it toggles WiFi on according to the specs set in normal wireless config.
 +
 +To install the ''​wifitoggle''​ package and configure it just follow the steps below:
 +
 +<​code>​
 +opkg update
 +opkg install wifitoggle
 +</​code>​
 +
 +<​code>​
 +uci set wifitoggle.@wifitoggle[0].button=BTN_2
 +uci set wifitoggle.@wifitoggle[0].timer=0
 +uci commit wifitoggle
 +</​code>​
 +
 +== WPS button ==
 +
 +There is support for the WPS button removing the ''​wpad-mini''​ package and installing the full version of ''​wpad''​ & ''​hostapd-utils''​ packages.
 +
 +FIXME Apparently changeset 33393 enables WPS support also for wpad-mini, but that is still unverified. ​ //hnyman 14-09-2012//​
 +
 +If you have a WPS enabled network device (like a modern USB dongle), you can negotiate joining the routers wireless network without manually entering SSID & passkey. You just initiate "WPS authentication"​ by pushing the similar WPS button on the device (or launching the process by its driver/​control software). After the device has initiated the authentication process, you can accept the transaction by using the WPS button on WNDR3700. The connection should then get negotiated, and in most cases in future your PC should remember the received network settings from then on.
 +
 +After finding the information and browsing the hostapd package sourcecode, the needed actions for enabling the WPS button are pretty simple:
 +
 +  - Using WPS authentication in requires replacing the default ''​wpad-mini''​ package with ''​wpad''​ and ''​hostapd-utils''​. The reason is that the tool "​hostapd_cli"​ and some needed support functions are not included in '​wpad-mini'​. WPS authentication itself is launched with a command:<​code>​hostapd_cli -p /​var/​run/​hostapd-phy0 wps_pbc</​code>​It tells the running hostapd daemon to participate in ongoing WPS authentication sequence. It needs to be run separately for each radio (= each existing hostapd process). ​
 +  - And it only works if the '/​etc/​config/​wireless'​ has been modified to include info about WPS authentication being allowed by adding the option '​wps_pushbutton'​ '​1'​ to the wifi-iface section of (each) radio. (Looks like the version of hostapd scripts in OpenWrt does not support the full scope of hostapd'​s capabilities,​ so many of the config options documented in hostapd docs are left unused.)
 +  - That config file is read when radios are turned on, so after editing the config, restart the radios in WNDR3700. At this point, you should be able to test it by running it from command line.\\ If the message gets passed to hostapd, you should see there result '​OK'​ there. Otherwise the result is '​FAIL'​.<​code>​root@OpenWrt:​~#​ wifi
 +[..]
 +root@OpenWrt:​~#​ hostapd_cli -p /​var/​run/​hostapd-phy0 wps_pbc
 +Selected interface '​wlan0'​
 +OK
 +root@OpenWrt:​~#</​code>​
 +  - Add a hotplug button event script to launch the process. I modified directly the hostapd package source ( /​package/​hostapd/​files/​wps-hotplug.sh ), as the hotplug script gets automatically installed to ''/​etc/​hotplug.d/​button/​50-wps''​ with the package. See below.\\ The script launches hostapd_cli for each radio and lights the WPS led for 10 seconds. There is no monitoring of the result, or anything like that. It is just a dumb script using the hostapd_cli command to pass the message to the hostapd daemon.\\ Note: button is called ''​BTN_1''​ in Backfire, ''​wps''​ in trunk. /​etc/​hotplug.d/​button/​50-wps<​code>​
 +if [ "​$ACTION"​ = "​pressed"​ -a "​$BUTTON"​ = "​BTN_1"​ ]; then
 +        for dir in /​var/​run/​hostapd-*;​ do
 +                [ -d "​$dir"​ ] || continue
 +                logger "WPS button active: $dir"
 +                hostapd_cli -p "​$dir"​ wps_pbc
 +        done
 +fi</​code>/​etc/​config/​wireless<​code>​
 +config '​wifi-iface'​
 +        option '​device'​ '​radio0'​
 +        option '​network'​ '​lan'​
 +        option '​mode'​ '​ap'​
 +        option '​ssid'​ '​public'​
 +        option '​encryption'​ '​psk2'​
 +        option '​key'​ '​SecretKey'​
 +        option '​wps_pushbutton'​ '​1'​
 +</​code>​ If everything goes ok, you should see in Syslog not only the button events, but also succesful WPS authentication.
 +
 +== Reset button ==
 +
 +If you just want a straightforward simple reset button functionality,​ you can install the ''​restorefactory''​ package and configure it:
 +
 +<​code>​
 +opkg update
 +opkg install restorefactory
 +</​code>​
 +
 +Minimum configuration is to set the right value for the reset button. Reset button is '​reset'​ in trunk, '​BTN_0'​ in Backfire final.
 +<​code>​
 +uci set system.@restorefactory[0].button=reset
 +uci commit system
 +</​code>​
 +
 +After you reset to the factory defaults you have to reinstall and reconfigure the ''​restorefactory''​ package. You can skip this step if you build your own image which contains a preconfigured ''​restorefactory''​ configuration.
 +
 +
 +==== USB serial console ====
 +Using a USB-serial adapter one can easily create a USB-serial console for this device. See [[doc/​hardware/​port.serial#​usb.enabled.routers]] for more on setting it up.
 +
 +To connect to the console use your favorite terminal software - mine is miniterm and the default baud rate on my system was 9600:
 +''​miniterm -b9600 -d/​dev/​ttyS0''​
 +
 +===== Hardware Modding =====
 +
 +==== Hardware Specifics ====
 +
 +=== Info ===
 +^ ^ v1 ^ v2 ^ v3 ^ v4 ^
 +| **[[wp>​Instruction set|Architecture]]:​** ​ | [[wp>​MIPS architecture|MIPS]] ||||
 +| **Vendor:​** ​                              | [[wp>​Qualcomm Atheros]] | [[wp>​Qualcomm Atheros]] | Broadcom | [[wp>​Qualcomm Atheros]] |
 +| **[[doc:​techref:​Bootloader]]:​** ​          | crippled [[doc:​techref:​bootloader:​uboot|U-Boot]] ||||
 +| **[[doc:​hardware:​soc|System-On-Chip]]:​** ​ | [[http://​www.qca.qualcomm.com/​networking/​brand.php?​brand=4&​product=68|AR7161 ]] || Broadcom | AR9344 |
 +| **[[doc:​hardware:​cpu|CPU]]/​Speed** ​       | [[http://​www.mips.com/​products/​processor-cores/​mips32-24k/​|MIPS32 24Kc]] V7.4 680 MHz   ​(([[http://​www.mips.com/​secure-download/​index.dot?​product_name=/​auth/​MD00346%2D2B%2D24K%2DDTS%2D04.00.pdf|Datasheet specific to the 24Kc CPU core (free registration required)]])) | | | |
 +| **Flash-Chip:​** ​     | v1: [[http://​www.spansion.com/​Support/​Datasheets/​S25FL064P_00_03_e.pdf|Spansion S25FL064P (FL064PIF)]] or [[http://​www.macronix.com/​QuickPlace/​hq/​PageLibrary4825740B00298A3B.nsf/​$defaultview/​3F21BAC2E121E17848257639003A3146/​$File/​MX25L6405D%2C%203V%2C%2064Mb%2C%20v1.5.pdf?​OpenElement|Macronix MX25L6405DMI-12G]] |  [[http://​www.macronix.com/​QuickPlace/​hq/​PageLibrary4825740B00298A3B.nsf/​$defaultview/​3F21BAC2E121E17848257639003A3146/​$File/​MX25L12845E%2C%203V%2C%20128Mb%2C%20v1.7.pdf|Macronix MX25L12845EWI-10G]] | ? | ? |
 +| **Flash size:​** ​     | 8192 KiB | 16384 KiB |8192 KiB | 128 MiB NAND |
 +| **RAM-Chip:​** ​       | 2X [[http://​www.nanya.com/​NanyaAdmin/​GetFiles.ashx?​ID=116|Nanya NT5DS16M16CS-5T]] | ? | ? | ? |
 +| **RAM:​** ​            | 64 MiB ||| 128 MiB |
 +| **Wireless:​** ​       | Atheros AR9223 802.11bgn / Atheros AR9220 802.11an | ? | ? | ? |
 +| **Ethernet:​** ​       | [[http://​realtek.info/​pdf/​rtl8366_8369_datasheet_1-1.pdf|Realtek RTL8366SR]] | ? | ? | ? |
 +| **Internet:​** ​       | n/a             ||||
 +| **USB:​** ​            | Yes 1 x 2.0     ||||
 +| **Serial:​** ​         | [[#​Serial|Yes]] ||||
 +| **JTAG:​** ​           | [[#​JTAG|Yes]] ​  ||||
 +| **Voltage Reg:​** ​    | [[#​VReg|Yes]] ​  ||||
 +
 +=== Photos ===
 +{{media:​netgear:​wndr3700:​wndr3700_pcb_top.jpg?​400}}
 +{{media:​netgear:​wndr3700:​wndr3700_pcb_bottom.jpg?​400}}
 +
 +=== Opening the case ===
 +**Note:** This will void your warranty!
 +
 +  *To remove the cover use a Torx (T-8) screwdriver.
 +  *There are two screws easily visible on the bottom of the case.
 +  *There are four more screws under the rubber feet. The feet are not glued to the plastic and can easily be removed and pushed back into place once reassembled. The feet have rubber tethers, but you can slide them out gently without damaging them, and later you can reinsert them just as easily. Don't forget to put them in a plastic baggie so you don't lose them!
 +
 +=== Serial ===
 +Internal J1 4-pin connector
 +
 +^ Pin Out   ^ Description ​  ^
 +| Pin1      | 3.3V          |
 +| Pin2      | TX            |
 +| Pin3      | RX            |
 +| Pin4      | GND           |
 +
 +{{media:​netgear:​wndr3700:​wndr3700_serial.jpg?​400|WNDR3700 serial pin connector}}
 +
 +3.3V serial port voltage !!!
 +
 +COM port settings: Speed:​115200,​ Data bits:8, Stop bits:1, Parity:​none,​ Flow control:​none
 +
 +=== JTAG ===
 +Internal J3 connector
 +
 +14 Pin header
 +^ Pinout ​  ^^^^
 +| Pin1    | TRST   | Pin2    | GND      |
 +| Pin3    | TDI    | Pin4    | GND      |
 +| Pin5    | TDO    | Pin6    | GND      |
 +| Pin7    | TMS    | Pin8    | GND      |
 +| Pin9    | TCK    | Pin10   | GND      |
 +| Pin11   | RST    | Pin12   | NC       |
 +| Pin13   | NC     | Pin14   | 3.3VDC ​  |
 +
 +See [[doc:​hardware:​port.jtag]] for more JTAG details.
 +
 +=== VReg ===
 +Onboard Voltage Regulator is a STMicroelectronics ST1S10 which is described by ST as a
 +
 +3A, 900 kHz, monolithic synchronous step-down regulator IC
 +
 +Full details of the onboard ST1S10 Voltage Regulator are here 
 +
 +http://​www.st.com/​stonline/​stappl/​st/​com/​TECHNICAL_RESOURCES/​TECHNICAL_LITERATURE/​DATASHEET/​CD00169322.pdf
 +
 +There are three total ST1S10 chips near the capacitors on the upper right of the board.
 +
 +{{media:​netgear:​wndr3700:​wndr3700-4.jpg?​400|}}
 +
 +==== Serial cables (optional) ====
 +
 +=== Construction ===
 +
 +If you have a basic familiarity with RS232 signals and putting together basic electronic components, you should be able to follow these instructions to create a cable to attach to the WNDR3700'​s serial port.
 +
 +The author of this section prefers a two-step process, that of using a USB-to-9-pin-serial (DB9) connector for the computer, and then building a separate 9-pin-serial-to-board interface. This allows you to leave the connector plugged into the board all of the time (and close the plastic case of the router!), without having a USB dongle hanging around when not using it. If you use a ribbon cable to connect to the header on the router, you can actually snake it out between the 4-port LAN jack and the WAN jack and still get the router'​s case back on (albeit a bit snugly), so the system looks pretty clean and polished even after adding the serial port connector.
 +
 +For the computer-to-9-pin-serial part, you probably have two options:
 +
 +  - Buy a Nokia CA-42 cable and be comfortable stripping wires and using a multimeter.
 +  - Buy a premade USB-to-DB9 RS232 serial cable. **IMPORTANT NOTE** I haven'​t bothered to look to see if the standard RS232 voltages are compatible with the WNDR3700 board. I think I recall reading somewhere that the CA-42 cable is 3.3V, and I don't recall offhand what RS232 calls for. If you buy a premade USB-to-DB9 RS232 cable, make sure to check the output levels with a voltmeter to ensure that you don't fry anything!
 +
 +**Never ever connect RS232 directly to your router board !!!**
 +The +/- 12V RS232 will be frying your board. You need a 3V-TTL to RS232 level shifter like MAX3223 in between.
 +
 +For step 1:
 +
 +If you buy a premade USB-to-DB9 RS232 cable, this step is already done. (Whichever method you use, make sure that your OS has drivers for the USB converter that you are planning to use!)
 +
 +If you go the CA-42 cable route, follow the "​Determining the wiring assignment of your cable" steps listed in this page: http://​buffalo.nas-central.org/​index.php/​Use_a_Nokia_Serial_Cable_on_an_ARM9_Linkstation. This page refers to a different router product, but the CA-42 cable being used is the same and your goal is to determine the pin/color assignments. You have to chop off the fancy Nokia connector and then strip wires to test  wire colors with your multimeter to figure out which color corresponds to which Nokia pin number. Once you've figured that out:
 +
 +Pin 6 of the Nokia connector should be wired to pin 3 on the DB9.
 +Pin 7 of the Nokia connector should be wired to pin 2 on the DB9.
 +Pin 8 of the Nokia connector should be wired to pin 5 on the DB9.
 +
 +You should wire this cable with a male DB9 connector, which will connect to the female connector that you put on the board side of things.
 +
 +For step 2:
 +
 +For connecting to the WNDR3700 itself, forum user **whiskas** previously posted the pinout of the connector at http://​img387.imageshack.us/​i/​26102009417.jpg/​. The four pins on the board (reading from left to right in whiskas'​s photo) correspond to DB9 pin numbers 5, 3, 2 and no connection. You'll probably want to buy a crimp-style socket (I used a "IDC 10-pin dual row socket",​ which has more pins than we need but which works fine) and a ribbon cable that connects to it. Buy a 9-pin female DB9, carefully sort out which pins in the ribbon cable need to be connected to what, and crimp them into the right place. If you use crimp-style connectors, you can do this with no tools other than steady hands, and the IDC socket will slide right onto the board without having to solder anything.
 +
 +
 +=== Flashing over serial ===
 +
 +If, for whatever reason, you would prefer to avoid tftp flashing, it's possible to load a new image with ymodem (//loady//) or kermit (//​loadb//​). ​ It's a good idea to use //iminfo// to verify the image'​s checksum before copying it to flash with //​cp.b//​. ​ Remember to use the sysupgrade .bin file even if this is your initial flash from the factory firmware; the extra header in the factory .img is NOT required when flashing from U-Boot.
 +
 +<​code>​
 +ar7100> loady 80800000
 +## Ready for binary (ymodem) download to 0x80800000 at 115200 bps... ​
 +</​code>//​(Begin the ymodem or kermit transfer)//
 +<​code>​
 +## Total Size      = 0x004d0004 = 5046276 Bytes
 +ar7100> iminfo 80800000
 +
 +## Checking Image at 80800000 ...
 +   Image Name:   MIPS OpenWrt Linux-3.3.8
 +   ​Created: ​     2012-07-01 ​ 17:49:09 UTC
 +   Image Type:   MIPS Linux Unknown Image (uncompressed)
 +   Data Size:    914224 Bytes = 892.8 kB
 +   Load Address: bf070000
 +   Entry Point: ​ bf070000
 +   ​Verifying Checksum ... OK
 +ar7100> erase 0xbf070000 +0x004d0004
 +Erase Flash from 0xbf070000 to 0xbf54ffff in Bank # 1 
 +First 0x7 last 0x54 sector size 0x10000
 +  84
 +Erased 78 sectors
 +ar7100> cp.b 0x80800000 0xbf070000 0x004d0004
 +Copy to Flash... write addr: bf070000
 +done
 +ar7100> boot
 +</​code>​
 +
 +Note that the size value (0x004d0004 in this case) will vary from one image to another. ​ Don't omit the "​+"​ in the erase command as it's part of the command'​s syntax.
 +
 +==== U-Boot Mods ====
 +According to the release notes in the NETGEAR-supplied GPL firmware, U-Boot can be upgraded using the following procedure. Note that you do not need to update U-Boot in order to install OpenWrt. Additionally,​ this has not yet been tested by the author of this wiki page, and you can permanently brick your router (with little hope of recovery, other than possibly finding a JTAG interface) if your U-boot image becomes corrupted:
 +
 +<​code>​
 +Please burn u-boot-wndr3700-dni6-V1.7.bin
 +Set up a tftp server on your PC, its ip address is 192.168.1.12.
 +Entering into boot loader
 +ag7100> set serverip 192.168.1.12
 +ag7100> tftp 0x80010000 u-boot-wndr3700-dni6-V1.7.bin
 +ag7100> erase 0xbf000000 +0x70000
 +ag7100> cp.b 0x80010000 0xbf000000 0x50000
 +ag7100> reset
 +Entering into boot loader again
 +ag7100>​bootm
 +Then the device should be in tftp recovery mode. Please run the command
 +"tftp -i 192.168.1.1 put WNDR3700U-V1.0.4.49.img"​ on MS-DOS of your PC.
 +</​code>​
 +
 +==== Hardware Mods ====
 +
 +=== 128 MiB RAM Mod ===
 +
 +**NEW: More and More people reports serious issues after correctly replace ram chips on WNDR3700V2. For now users are advised to stay away from extending RAM on WNDR 3700V2 untill we will have positive feedback on this procedure.**
 +
 +
 +**Warning: There are reports (User batu at http://​eko.one.pl/​forum/​viewtopic.php?​id=2454) that 333Mhz chips dont work with wndr3700v2. Use 400Mhz chips if available.**
 +
 +I used two Samsung K4H511638D-UCCC. You can use chips from other manufacturers,​ but they should be DDR400 32Mx16 organization in the package TSOP-II 66pin. Chips with other organizations,​ such as 64Mx8, do not fit.
 +
 +A list of compatible chips:
 +^ Manufacturer ​  ^ Mark                 ^ Comments ​                                                        ^
 +| Samsung ​       | K4H511638D-UCCC ​     | 400Mhz - definitely not working with wndr3700v2 ​                 |
 +| Samsung ​       | K4H511638B-TCB3 ​     | 333Mhz - not working with wndr3700v2 ​                            |
 +| Samsung ​       | K4H511638D-UCB3 ​     | 333Mhz - definitely not working with wndr3700v2 ​                 |
 +| Hynix          | HY5DU121622CTP-J ​    | 333Mhz - definitely not working with wndr3700v2 ​                 |
 +| Hynix          | HY5DU121622CTP-D43 ​  | 333/400Mhz mixed reports. Propably not working with wndr3700v2 ​  |
 +| Hynix          | HY5DU121622CLTP ​     |                                                                  |
 +| Hynix          | HY5DU121622DTP ​      ​| ​                                                                 |
 +| Hynix          | HY5DU121622DLTP ​     |                                                                  |
 +| Kingston ​      | K4H511638C-UCB3 ​     |                                                                  |
 +| Elpida ​        | D5116AFTA-5B-E ​      ​| ​                                                                 |
 +| NCP            | NP25D3216512K-5 ​     |                                                                  |
 +| Nanya          | NT5DS32M16BS ​        ​| ​                                                                 |
 +| infineon ​      | HYB25D512160BE ​      ​| ​                                                                 |
 +| Micron ​        | MT46V32M16TG ​        ​| ​                                                                 |
 +| Micron ​        | MT46V32M16TG? ​       |                                                                  |
 +| Elixir ​        | N2DS51216BT-5T ​      ​| ​                                                                 |
 +| Elixir ​        | N2DS51216CS-5T ​      ​| ​                                                                 |
 +| Zentel ​        | A3S12D40ETP ​         |                                                                  |
 +
 +{{media:​netgear:​wndr3700:​wndr3700_ram-mod_1.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700_ram-mod_2.jpg?​162x243}}
 +
 +**U-Boot report after adding memory**\\
 +
 +<​code>​
 +''​U-Boot 1.1.4DNI1.6 (May 22 2009 - 16:37:44)
 +
 +WNDR3700U (ar7100) U-boot 0.0.12
 +DRAM:  b8050000: 0xc0140180
 +**128 MB**
 +Top of RAM usable for U-Boot at: 88000000
 +Reserving 315k for U-Boot at: 87fb0000
 +Reserving 192k for malloc() at: 87f80000
 +Reserving 44 Bytes for Board Info at: 87f7ffd4
 +Reserving 36 Bytes for Global Data at: 87f7ffb0
 +Reserving 128k for boot params() at: 87f5ffb0
 +Stack Pointer at: 87f5ff98
 +Now running in RAM - U-Boot at: 87fb0000
 +id read 0x100000ff
 +flash size 8MB, sector count = 128
 +Flash: ​ 8 MB
 +In:    serial
 +Out:   ​serial
 +Err:   ​serial
 +Net:   ​ag7100_enet_initialize...
 +''​
 +</​code>​
 +
 +=== Antenna Mod ===
 +
 +The procedure below covers hardware revision 1. Revision 2 only has U.FL connectors for the 5 GHz antennas (PJ2 and PJ4), while the 2.4 GHz connectors are replaced with dummy connectors (presumably a Hirose testing connectors used in production). So for revision 2 the PJ5 and PJ6 connectors will have to bypassed and the coax cable soldered directly to the PCB.
 +
 +You will need:
 +  * 4 cable U.FL-F (female) to RPSMA-F (female) app. 13 centimeters long
 +  * 4 Antenna (preferably 2 2.4 GHz and 2 5 GHz antenna), e.g. Level One (OAN-0501).
 +
 +On board removes:
 +  - Connectors (SWD) PJ2, PJ4, PJ5, PJ6
 +  - Switches AS6, AS8, AS9, AS10
 +  - Capacitors AC77, AC113, AC148, AC186
 +
 +In place of the connector solder in U. FL connectors.\\
 +Solder shorts instead of capacitors AC77, AC113, AC148, AC186.\\
 +Solder shorts between 3 and 5-pin AS6 and AS8.\\
 +Solder shorts between 3 and 6 pin AS8 and AS10.\\
 +
 +Drill four drill holes 6.5mm in the left side of the upper lid.\\
 +In a hole fasten cables UFL-F/​RPSMA-F.\\
 +Insert the connector into the board as in the photo, and assemble the router.\\
 +Fasten to the connectors RPSMA-F antenna and turn on.\\
 +
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_01.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_02.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_03.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_04.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_05.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_06.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_07.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_08.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_09.jpg?​243x162}}
 +{{media:​netgear:​wndr3700:​wndr3700v1_antenna-mod_10.jpg?​243x162}}
 +
 +===== Troubleshooting and Recovery =====
 +
 +==== Wireless Regulatory Issues? ====
 +Unless you are American, BOTH 2.4GHz and 5GHz will likely not be fully available on OpenWrt 10.03 Backfire (you will experience loss of channels 12, 13 and 14 if these are available where you are, as well as potentially incorrect 5GHz channel availability. Power output levels may be incorrect for your country as well).
 +
 +FIXME Does this problem still exist in version 12.x? I'm using Barrier Breaker r36692+ and I don't have to manually download any sort of file as mentioned below. Just be sure to configure your country in the web interface (LUCI) under Network -> Wifi -> your wifi (EDIT) -> Advanced settings -> Country code, or manually set wireless.radio0.country and wireless.radio1.country and restart wifi. If I choose '​NL'​ for The Netherlands it makes channel 13 available perfectly fine.
 +
 +To sum up the background for this:
 +
 +  * Netgear ships the WNDR3700 with [[wp>​EEPROM]] chip stating that the router should restrict to US settings. Outside America, they ship software that ignores this chip. This is a bad thing as it means that your OpenWrt can't work properly for the next two reasons.
 +  * In the USA, it is illegal to ship router firmware that can (through incorrect settings) bypass radio regulations.
 +  * Atheros (the wireless chip maker in the WNDR3700) asks open source folks not to ship compiled builds that bypass radio restrictions,​ even though their hardware vendors do this. This means if you bought hardware from one of the manufacturers (and you're one of the 95% of the world'​s population that doesn'​t live in the USA) that doesn'​t set the value in the EEPROM correctly, you're kinda screwed if you want to use OpenWrt...
 +
 +Personally, I think this is a ridiculous situation, but there seem to be issues with fixing it. You can do the job yourself as follows:
 +
 +=== Backfire ===
 +
 +You may partially fix this by compiling a custom image with CONFIG_ATH_USER_REGD set in the Ath9k driver. This will, however, take a significant time to compile and result in a restriction to 20dBm max power output across all channels (this is apparently due to a bug according to my reading, but it's not fixed yet as far as I can tell). A much better option that will allow you to use the full legal power output in your country would be to follow the instructions here:
 +
 +http://​smorgasbord.gavagai.nl/​2010/​09/​wifi-regulatory-compliance-and-how-to-fix-it/​
 +
 +They'​re a little complex, so I've uploaded my fixed regulatory.bin to RapidShare to save you all the hassle of learning to compile one yourself. Hopefully someone will move it somewhere more permanent and update this. Anyhow, this is me doing my bit to make this whole process better and usable for more people...what you need to do is as follows:
 +  - If you're living in the USA, congratulations. You don't need to do any of this as you live in the only country anyone seems to care about making things easy for.
 +  - Set up your router so that it is able to access the internet or the later step involving wget will fail (unless you host the file on your local network).
 +  - Enter the following:
 +
 +<​code>​
 +cd /etc/config
 +vi wireless
 +</​code>​
 +
 +Add the following to each radio for your router (this will prevent you exceeding the regulatory limits in your country when you do the next bits):
 +
 +|''​option '​country'​ '​XX'​
 +''​|
 +
 +(Where XX is the two letter country code for your country. For example, Australia is AU).
 +
 +(if those are ISO 2 letter country codes, a list is available here: http://​en.wikipedia.org/​wiki/​ISO_3166-1_alpha-2 If not, then someone please clarify what codes are those.)
 +
 +2. Download the following file: https://​rapidshare.com/​files/​458836427/​regulatory.bin. Put it on a web server (sorry I can't give you a direct link, or you'd be able to do without this step (RapidShare doesn'​t allow direct downloads without looking at their page, so don't try to skip putting it on a web server or server on your network - hopefully someone can improve this process using their private server as the file's only tiny)). ​
 +NEW: Instead of your own webserver, you can also use http://​datatomb.de/​mirror/​stuff/​regulatory.bin
 +
 +Enter the following:
 +
 +<​code>​
 +cd /​usr/​lib/​crda/​
 +rm regulatory.bin
 +wget <web server URL>/​regulatory.bin
 +reboot
 +</​code>​
 +
 +3. When your router comes up again, log in with SSH as you did before. Check the available channels and power outputs are as desired by entering:
 +
 +<​code>​
 +iw list
 +</​code>​
 +
 +4. If you want to see what settings I put in the regulatory DB (they'​re as per the article I linked at the beginning) you can get them here: https://​rapidshare.com/​files/​458836748/​db.txt . If for some reason you want to use this to set the proper regulatory settings for the USA, you need to use UX as the country code...otherwise all country codes are still correct.
 +
 +=== Attitude Adjustment ===
 +SSH to the router and run the following:
 +
 +<​code>​
 +cd /tmp/
 +wget http://​luci.subsignal.org/​~jow/​reghack/​old/​reghack.mips.elf
 +chmod +x reghack.mips.elf ​
 +cp /​lib/​modules/​*/​ath.ko .
 +cp /​lib/​modules/​*/​cfg80211.ko .
 +./​reghack.mips.elf ath.ko
 +./​reghack.mips.elf cfg80211.ko
 +mv *.ko /​lib/​modules/​*/​
 +reboot
 +</​code>​
 +
 +=== OpenWrt Trunk ===
 +SSH to the router and run the following:
 +
 +<​code>​
 +cd /tmp/
 +wget http://​luci.subsignal.org/​~jow/​reghack/​reghack.mips.elf
 +chmod +x reghack.mips.elf ​
 +cp /​lib/​modules/​*/​ath.ko .
 +cp /​lib/​modules/​*/​cfg80211.ko .
 +./​reghack.mips.elf ath.ko
 +./​reghack.mips.elf cfg80211.ko
 +mv *.ko /​lib/​modules/​*/​
 +reboot
 +</​code>​
 +
 +==== Known problems/​issues (stability) ====
 +While the WNDR3700 (and WNDR3800) are great routers, there have been a number of issues with them. Some have been recently fixed, others are still present. Note that most of these issues are related to the Atheros chipset and are not unique to the WNDR3700.
 +Here's a short list of major issues:
 +  * Wifi stopped working after a while (fixed in AA 12.09 in April 2013, https://​dev.openwrt.org/​ticket/​11894)
 +  * Problems with internal switch causing traffic to a particular wifi client to be ignored (workaround present, https://​dev.openwrt.org/​ticket/​13612)
 +  * Failed to stop TX DMA messages in syslog (in AA 12.09 and later these are likely harmless and can be ignored, https://​dev.openwrt.org/​ticket/​11862)
 +  * For more issues, you can search on tickets at http://​dev.openwrt.org/​ for "​wndr3700"​ or the chipset (usually "​ar71"​)
 +
 +:!: Previous versions had major trouble with regards to stability in an office environment. Starting with AA 12.09 however, combined with the internal switch workaround mentioned above, these access points seem finally stable. I (Syzop) use around 20 of these on a high school which are used intensively with many associate/​disassociate events.
 +
 +==== Recovery flash in failsafe mode ====
 +
 +If you happen to brick your router, do not fear. You can use TFTP file transfer to flash the router with a new firmware. Note that this TFTP recovery mode is separate from Openwrt'​s own "​[[doc:​howto:​generic.failsafe|failsafe mode]]"​ and is offered by the original u-boot boot manager by Netgear, so it should be enabled with either an original Netgear firmware, a working Openwrt firmware or a bricked Openwrt firmware.
 +
 +Note:  WNDR3700 may also automatically enter the TFTP recovery mode, if you have flashed a bad firmware image. That is indicated by the power led blinking slowly and steadily, much slower that during a normal Openwrt boot.
 +
 +For TFTP recovery you need:
 +  * A TFTP client for your computer. There are both command-line tools and GUI versions available.
 +  * Your computer must have an IP address from the 192.168.1.x network, as the router failsafe mode defaults to 192.168.1.1. You might need to manually config the address, as some operating systems change the IP to a link-local 196.254.x.x address after a while if there is no DHCP server.
 +  * A new firmware to flash in. Either an original Netgear firmware or an Openwrt "​factory.img"​ firmware. "​Sysupgrade"​ version will not work.
 +  * Access to router'​s reset button
 +
 +Steps needed in the flashing process:
 +  - configure and connect PC
 +  - power on the router
 +  - press and hold the RESET button as soon as the switch LEDs light up.
 +  - keep holding RESET until the power LED begins to flash orange and then green.
 +  - once the power LED is flashing green, release RESET
 +  - start the TFTP transfer to router at 192.168.1.1. ​
 +  - wait a few minutes for the router to complete flash. It should reboot automatically.
 +
 +Please note that the TFTP transfer is quick, as the file is stored in RAM. However, **the flashing process itself will take several minutes**, after which the router should reboot automatically. Be patient -- it will eventually come up as a brand new factory-fresh router with NETGEAR firmware (or Openwrt if you used the Openwrt '​factory'​ firmware version for debricking).
 +Original source: https://​forum.openwrt.org/​viewtopic.php?​pid=103295#​p103295
 +
 +**Alternative advice**
 +
 +Forum user **ole.h** previously posted a method for unbricking the router easily with a TFTP client. Further to his post, if you use the factory reset button method, you don't need to worry about building a serial cable, trying to tap into any crazy boot timing sequence, or do anything else particularly tricky. It is simple and the following step-by-step process (cribbed from the ole.h'​s earlier notes, as well as from http://​cyberstorm.altervista.org/​wag354g/​guides/​howto_unbricking_wag354g_en.txt) will get you going. This assumes that you have a copy of the stock NETGEAR firmware in the current directory.
 +
 +  - Configure your ethernet connection (on the client machine you're using to configure the WNDR3700) using a static IP as 192.168.1.2,​ netmask 255.255.255.0. (The WNDR3700 in factory reset mode is going to come up as 192.168.1.1.)
 +  - Connect your computer to one of the LAN (not WAN) ports on the router.
 +  - Start a continuous ping from your client computer to 192.168.1.1 (Linux and Mac OS ping will continue until stopped by default; Windows ping by default sends 4 pings and then stops, so use "ping -t" under Windows); probably nothing will answer these pings yet, but you can use the output to tell you when the router is ready in the next couple steps.
 +  - Power the router off.
 +  - Hold down the factory reset button on the bottom of the case. Now turn the router back on while continuing to hold the factory reset button...
 +  - Wait until the router is listening on 192.168.1.1 (this takes 45-60 seconds; to confirm, you can ping 192.168.1.1,​ and see if it responds; it's best to start a sequence of ping requests above, before your hands get busy with the factory reset button).
 +  - Release the factory reset button. (If you happen to have a serial cable connected, you'll see that the system is in firmware recovery mode and that it will be waiting for you to upload firmware. But you don't need the serial cable at all.)
 +  - Run a tftp CLIENT on your computer (enter no hostname on the command line) and enter the following:<​code bash>
 +verbose
 +trace
 +rexmt 1
 +binary
 +connect 192.168.1.1
 +put WNDR3700-V1.0.4.35NA.img (or whatever the filename is that you are trying to flash)
 +</​code>​
 +
 +Once done, the router will flash itself to the stock NETGEAR firmware file that you provided and reboot automatically. ​
 +
 +==== Entering Openwrt failsafe mode ====
 +
 +Openwrt offers a generic [[doc:​howto:​generic.failsafe|failsafe mode]], which can be launched during a few seconds early in the boot process. With WNDR3700 the correct moment is **when the power LED changes from steady orange to blinking green**. If you at that moment **press any button** (WPS, Wifi or reset) during the next two seconds, you enter the failsafe mode, in which you can access the console with telnet. Successful entrance to the failsafe mode is indicated by a rapidly blinking power LED.
 +
 +WNDR3700 provides the failsafe waiting moment indication messages both to the serial console and to the network, just like described in the [[doc:​howto:​generic.failsafe|failsafe mode]] article.
 +
 +
 +===== Resources =====
 +  * OEM source code and toolchain: [[http://​kb.netgear.com/​app/​answers/​detail/​a_id/​2649/​~/​netgear-open-source-code-for-programmers-%28gpl%29|Netgear KB Article 2649 - Netgear Open Source Code for Programmers - GPL]]
 +
 +===== Custom OpenWrt image with LuCi integrated =====
 +
 +  * [[http://​www.superwrt.eu/​en/​firmware/​netgear-wndr3700/​]]
 +
 +===== Experimental Tab Box showing all characteristics =====
 +
 +This is a test of the tabbox functionality - see https://​forum.openwrt.org/​viewtopic.php?​pid=308365#​p308365 for details.
 +
 +<WRAP 80%>
 +<tabbox Hardware Highlights>​
 +---- datatable ----
 +cols    : Model, Versions, Platform, CPU MHz, Flash MB_mbflashs,​ RAM MB_mbram, WLAN Hardware, WLAN 2.4Ghz, WLAN 5.0Ghz, Ethernet 100M ports_, Ethernet Gbit ports_, Modem, USB ports_
 +header ​ : Model, Version,​SoC,​CPU MHz,Flash MB,RAM MB,WLAN Hardware,​WLAN2.4,​WLAN5.0,​100M ports,Gbit ports,​Modem,​USB
 +align   : c,​c,​c,​c,​c,​c,​c,​c,​c,​c,​c,​c
 +filter ​    : Model=WNDR3700
 +----
 +---- datalist ----
 +cols    : Comments_, Comments network ports_, Comments USB SATA ports_, WLAN Comments_
 +align   : l
 +filter ​ : Model=WNDR3700
 +----
 +
 +<tabbox OpenWrt Support>
 +/* Special style definitions for the various Tables of Hardware. ​           */
 +{{page>​meta:​infobox:​tohstyles&​noheader&​nofooter&​noeditbtn&​inline&​indent&​link}}
 +---- datatable ----
 +cols    : Model, Versions, Supported Current Rel, OEM device homepage URL_url, Forum Topic URL_url
 +headers : Model, Version, Current Release, OEM Info, Forum Topic
 +filter ​    : Model=WNDR3700
 +----
 +
 +<tabbox Hardware Details>
 +---- datatemplatelist dttpllist ----
 +template: playground:​template_datatemplatelist
 +cols    : Brand, Model, Versions, Device Type, Availability,​ Comments_, Supported Since Rev, Supported since Rel, Supported current Rel,  Instruction Set, Sub Instruction Set, Bootloader, Platform, Target, CPU MHz, Flash MBs, RAM MB, Switch, Ethernet 100M ports_, Ethernet Gbit ports_, Comments network ports_, Modem, VLAN, WLAN 2.4GHz, WLAN 5.0GHz, Detachable Antennas_, WLAN Comments_, ​ USB ports_, SATA ports_, ​ Serial, JTAG, Comments USB SATA ports_,LED count, Button count, Device Techdata_pageid,​ Forum topic URL_url, wikidevi URL_url, OEM Device Homepage URL_url, Firmware OEM Stock URL_url, Firmware OpenWrt Install URL_url, Firmware OpenWrt Upgrade URL_url
 +filter ​    : Model=WNDR3700
 +----
 +
 +<tabbox Firmware Downloads>​
 +---- datatable ----
 +cols       : Model, Versions, Supported Current Rel, Firmware OpenWrt Install URL_url, Firmware OpenWrt Upgrade URL_url, Firmware OEM Stock URL_url
 +headers ​   : Model, Versions, Current Release, OpenWrt Install URL, OpenWrt Upgrade URL, OEM Firmware URL
 +filter ​    : Model=WNDR3700
 +----
 +
 +
 +<tabbox Links>
 +---- datatemplatelist dttpllist ----
 +template: playground:​template_datatemplatelinklist ​
 +cols       : Forum topic URL_url, wikidevi URL_url, OEM Device Homepage URL_url, Firmware OEM Stock URL_url, Firmware OpenWrt Install URL_url, Firmware OpenWrt Upgrade URL_url, Device Techdata_pageid
 +filter ​    : Model=WNDR3700
 +----
 +
 +</​tabbox>​
 +</​WRAP>​
 +
 +===== Tags =====
 +[[meta:​tags|How to add tags]]
 +{{tag>​GigabitEthernet 5Port 2NIC USB 1USB JTAG 802.11abgn 802.11abgn_simultan ath9k 4Ant DetachableAntenna 64RAM 16Flash MIPS MIPS32 24Kc}}