Show pagesourceOld revisionsBacklinksBack to top × Table of Contents NETGEAR WNR2000 v4 Supported Versions Hardware Highlights Installation How to Install OpenWrt on the Netgear wnr2000v4 through u-boot-env modification on Linux: Installing OpenWrt onto a RAMdisk on WNR2000v1 Source code for the stock firmware versions Misc Tags NETGEAR WNR2000 v4 This device is NOT RECOMMENDED for future use with OpenWrt due to low flash/ram. DO NOT BUY DEVICES WITH 4MB FLASH / 32MB RAM if you intend to flash an up-to-date and secure OpenWrt version onto it! See 4/32 warning for details. 1) This device does not have sufficient resources (flash and/or RAM) to provide secure and reliable operation. This means that even setting a password or changing simple network settings might not be possible any more, rendering the device effectively useless. See OpenWrt on 4/32 devices what you can do now. 2) OpenWrt support for this device will end after 2019. 19.07 will be the last official build for 4/32 devices. After 19.07, no further OpenWrt images will be built for 4/32 devices. See OpenWrt on 4/32 devices what you can do now. Supported Versions BrandModelVersionCurrent ReleaseOEM InfoForum TopicTechnical DataNETGEARWNR2000v417.01.7https://www.netgear.de/support/product/WNR2000v4https://forum.openwrt.org/t/report-devices-here-with-18-06-0-provided-image-too-big-to-save-overlay/18161/72?u=tmomas, https://forum.openwrt.org/viewtopic.php?id=50478View/Edit data Hardware Highlights ModelVersionSoCCPU MHzFlash MBRAM MBWLAN HardwareWLAN2.4WLAN5.0100M portsGbit portsModemUSBWNR2000v4Atheros AR9341533432Atheros AR9341b/g/n-5-- Installation ModelVersionCurrent ReleaseFirmware OpenWrt InstallFirmware OpenWrt UpgradeFirmware OEM StockWNR2000v417.01.7https://downloads.openwrt.org/releases/17.01.7/targets/ar71xx/generic/lede-17.01.7-ar71xx-generic-wnr2000v4-squashfs-sysupgrade.binhttps://www.netgear.de/support/product/WNR2000v4 → Install OpenWrt (generic explanation) How to Install OpenWrt on the Netgear wnr2000v4 through u-boot-env modification on Linux: 1. Change the IP-Address of your computer into: 192.168.1.10 2. Flash to Stock-Firmware version 1.0.0.58: → Here's where you can get it: http://kb.netgear.com/app/answers/detail/a_id/26592/~/wnr2000v4-firmware-version-1.0.0.58 3. Start running a TFTP Server on your local machine. 4. Download and use a pre-made u-boot-env image Warning: There is a slight chance to brick your router by using this pre-made u-boot-env image. It is 100% your own decision to try this method at your own risk. However, it worked for me. Download this u-boot-env into your TFTP downloads directory: https://drive.google.com/file/d/0B7VI0K9knyDiNnJNUE1VU21wNnc/view Alternatively, you can create your own u-boot-env image. A tutorial can be found here: https://forum.openwrt.org/viewtopic.php?pid=273444#p273444 5. Download the current OpenWrt image (15.05.1 - Chaos Calmer): wget http://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/openwrt-15.05.1-ar71xx-generic-wnr2000v4-squashfs-sysupgrade.bin Download this file into your TFTP downloads directory and maybe for usability rename it into: sysfsupgrade.bin 6. Create and Use the UDPtelnetenable.py Script In Linux there's a python script that you run to enable access to telnet with. You need a modified version of it which allows you to UDPtelnetenable. This script is written in python2 and requires the Python Cryptography Toolkit (pycrypto). This is the source code for the UDPtelnetenable.py: # Copyright (c) 2009 Paul Gebheim # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import sys import socket import array from optparse import OptionParser from Crypto.Cipher import Blowfish from Crypto.Hash import MD5 TELNET_PORT = 23 # The version of Blowfish supplied for the telenetenable.c implementation # assumes Big-Endian data, but the code does nothing to convert the # little-endian stuff it's getting on intel to Big-Endian # # So, since Crypto.Cipher.Blowfish seems to assume native endianness, we need # to byteswap our buffer before and after encrypting it # # This helper does the byteswapping on the string buffer def ByteSwap(data): a = array.array('i') if(a.itemsize < 4): a = array.array('L') if(a.itemsize != 4): print "Need a type that is 4 bytes on your platform so we can fix the data!" exit(1) a.fromstring(data) a.byteswap() return a.tostring() def GeneratePayload(mac, username, password=""): # eventually reformat mac mac = mac.replace(":","").upper() # Pad the input correctly assert(len(mac) < 0x10) just_mac = mac.ljust(0x10, "\x00") assert(len(username) <= 0x10) just_username = username.ljust(0x10, "\x00") assert(len(password) <= 0x10) just_password = password.ljust(0x10, "\x00") cleartext = (just_mac + just_username + just_password).ljust(0x70, '\x00') md5_key = MD5.new(cleartext).digest() payload = ByteSwap((md5_key + cleartext).ljust(0x80, "\x00")) secret_key = "AMBIT_TELNET_ENABLE+" + password return ByteSwap(Blowfish.new(secret_key, 1).encrypt(payload)) def SendPayload(ip, payload): for res in socket.getaddrinfo(ip, TELNET_PORT, socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_IP): af, socktype, proto, canonname, sa = res try: s = socket.socket(af, socktype, proto) except socket.error, msg: s = None continue try: s.connect(sa) except socket.error, msg: s.close() s= None continue break if s is None: print "Could not connect to '%s:%d'" % (ip, TELNET_PORT) else: s.send(payload) s.close() print "Sent telnet enable payload to '%s:%d'" % (ip, TELNET_PORT) def main(): args = sys.argv[1:] if len(args) < 3 or len(args) > 4: print "usage: python telnetenable.py <ip> <mac> <username> [<password>]" ip = args[0] mac = args[1] username = args[2] password = "" if len(args) == 4: password = args[3] payload = GeneratePayload(mac, username, password) SendPayload(ip, payload) main() Now run the UDPtelnetenable through the following command: python UDPtelnetenable.py 192.168.1.1 $(Your MAC-ADRESS found by running `arp -a` as root) admin password 7. Connect to your router through Telnet telnet 192.168.1.1 8. Flash the u-boot-env through TFTP Now, from WNR2000V4 root shell, assuming TFTP server at 192.168.1.10:69 cd /tmp tftp -g -r uboot_env_bootcmd_nocrc.backup 192.168.1.10 69 mtd -f write uboot_env_bootcmd_nocrc.backup u-boot-env 9. Upload the new sysupgrade bin file and reboot To do so, we use the following commands: tftp -g -r sysfsupgrade.bin 192.168.1.10 69 mtd -f -r write sysfsupgrade.bin firmware If everything worked, the router will reboot by itself with the new firmware. Installing OpenWrt onto a RAMdisk on WNR2000v1 The original U-Boot bootloader runs a CRC check on the flash before it executes the bootcmd command. This prevents OpenWrt from being run from flash. As long as you do not replace the OEM bootloader, you can only create an OpenWrt ramdisk image and load it via tftp. This requires access to the serial console which you can get by doing the following: configure the NIC of a PC with a tftp server at 192.168.1.12 copy openwrt-ar71xx-uImage-initramfs-lzma.bin into the directory of the tftp server (e.g. /tftpboot) On the WNR2000v4 serial console: Press any key after Hit any key to stop autoboot tftpboot 0x81000000 openwrt-ar71xx-uImage-initramfs-lzma.bin - This should print a couple of # signs setenv bootargs board=WNR2000v4 bootm - This boots the kernel Source code for the stock firmware versions If you should happen to need source code for any of your current stock firmware versions you can get those from one of the following: Main link to all Netgear GPL files (all devices): Netgear KB Article 2649 - Netgear Open Source Code for Programmers - GPL For 1.0.0.30 http://www.downloads.netgear.com/files/GPL/WNR2000v4-V1.0.0.30_gpl_src.zip For 1.0.0.40 http://www.downloads.netgear.com/files/GPL/wnr2000v4-V1.0.0.40_gpl_src.zip For 1.0.0.50 http://www.downloads.netgear.com/files/GPL/wnr2000v4-V1.0.0.50_GPL.zip For 1.0.0.58 http://www.downloads.netgear.com/files/GPL/WNR2000v4-V1.0.0.58_GPL.zip For 1.0.0.60 http://www.downloads.netgear.com/files/GPL/wnr2000v4-V1.0.0.60_gpl_src.zip For 1.0.0.70 http://www.downloads.netgear.com/files/GPL/wnr2000v4-V1.0.0.70_gpl_src.zip Misc cat /proc/cpuinfo shows system type : Atheros AR934x processor : 0 cpu model : MIPS 74Kc V4.12 BogoMIPS : 267.26 wait instruction : yes microsecond timers : yes tlb_entries : 32 extra interrupt vector : yes hardware watchpoint : yes, count: 4, address/irw mask: [0x0000, 0x0ff8, 0x0013, 0x0830] ASEs implemented : mips16 dsp shadow register sets : 1 core : 0 VCED exceptions : not available VCEI exceptions : not available cat /proc/athversion shows: 9.2.0_U10.1020 cat /proc/buddyinfo shows: Node 0, zone Normal 8 21 9 8 4 2 2 2 1 1 1 cat /proc/devices shows: Character devices: 1 mem 4 ttyS 5 /dev/tty 5 /dev/console 5 /dev/ptmx 10 misc 77 ATH_GPIOC 90 mtd 108 ppp 128 ptm 136 pts 240 atherosgpio Block devices: 259 blkext 31 mtdblock cat /proc/mtd shows: dev: size erasesize name mtd0: 00030000 00010000 "u-boot" mtd1: 00010000 00010000 "u-boot-env" mtd2: 000d0000 00010000 "kernel" mtd3: 00290000 00010000 "rootfs" mtd4: 00060000 00010000 "rootfs_data" mtd5: 00020000 00010000 "language" mtd6: 00010000 00010000 "pot" mtd7: 00010000 00010000 "traffic_meter" mtd8: 00010000 00010000 "config" mtd9: 00010000 00010000 "art" mtd10: 00360000 00010000 "firmware" cat /proc/partitions shows: major minor #blocks name 31 0 192 mtdblock0 31 1 64 mtdblock1 31 2 832 mtdblock2 31 3 2624 mtdblock3 31 4 384 mtdblock4 31 5 128 mtdblock5 31 6 64 mtdblock6 31 7 64 mtdblock7 31 8 64 mtdblock8 31 9 64 mtdblock9 31 10 3456 mtdblock10 cat /proc/mounts shows: rootfs / rootfs rw 0 0 /dev/root / squashfs ro,relatime 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,relatime 0 0 tmpfs /tmp tmpfs rw,nosuid,nodev,relatime 0 0 tmpfs /dev tmpfs rw,relatime,size=512k 0 0 devpts /dev/pts devpts rw,relatime,mode=600 0 0 root /tmp/root tmpfs rw,relatime 0 0 /dev/root /mnt squashfs ro,relatime 0 0 root /mnt tmpfs rw,relatime 0 0 Tags How to add tags AR9341, 4Flash, 32RAM 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.OKMore information about cookies ar9341 4Flash 32RAM Last modified: 2021/12/05 06:52by tmomas