TP-Link TL-WR841HP v3
Supported Versions
Hardware Highlights
Installation
OEM easy installation
Note: This instructions are for the web UI of stock firmware version 3.16.9. Reset router to factory defaults if anything has been previously configured.
- Connect PC to LAN port on router
- Browse to
http://192.168.0.1/
- Log in with username “admin” and password “admin”
- In “Advanced” tab go to System Tools → Firmware Updates (text may vary do to translations)
- Rename the downloaded firmware image to “firmware.bin” and upload it
- Wait for the router to reboot
- Browse to
http://192.168.1.1
if LuCI is installed, or telnet to 192.168.1.1 and set a root password.
Flash Layout
Block size: 64KiB
dev: | size (bytes) | name | start | end |
---|---|---|---|---|
mtd0: | 128KiB | “u-boot” | 0x000000000000 | 0x000000020000 |
mtd1: | 8000KiB | “firmware” | 0x000000020000 | 0x0000007f0000 |
mtd2: | 2329225B | “kernel” | 0x000000000000 | 0x000000238a89 |
mtd3: | 5862772B | “rootfs” | 0x000000238a8c | 0x0000007d0000 |
mtd4: | 2176KiB | “rootfs_data” | 0x0000005b0000 | 0x0000007d0000 |
mtd5: | 64KiB | “art” | 0x0000007f0000 | 0x000000800000 |
Upgrading OpenWrt
LuCI Web Upgrade Process
- Browse to
http://192.168.1.1/cgi-bin/luci/mini/system/upgrade/
LuCI Upgrade URL - Upload image file for sysupgrade to LuCI
- Wait for reboot
Terminal Upgrade Process
If you don't have a GUI (LuCI) available, you can alternatively upgrade via the command line. There are two command line methods for upgrading:
sysupgrade
mtd
Note: It is important that you put the firmware image into the ramdisk (/tmp) before you start flashing.
Hardware
Info
Photos
Bootlogs
OpenWrt bootlog
[ 0.000000] Linux version 5.15.134 (builder@buildhost) (mips-openwrt-linux-musl-gcc (OpenWrt GCC 12.3.0 r23497-6637af95aa) 12.3.0, GNU ld (GNU Binutils) 2.40.0) #0 Mon Oct 9 21:45:35 2023 [ 0.000000] printk: bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 00019374 (MIPS 24Kc) [ 0.000000] MIPS: machine is TP-Link TL-WR841HP v3 [ 0.000000] SoC: Qualcomm Atheros QCA9533 ver 2 rev 0 [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x0000000003ffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x0000000003ffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000003ffffff] [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 16240 [ 0.000000] Kernel command line: console=ttyS0,115200n8 rootfstype=squashfs,jffs2 [ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes, linear) [ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes, linear) [ 0.000000] Writing ErrCtl register=00000000 [ 0.000000] Readback ErrCtl register=00000000 [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 55972K/65536K available (6077K kernel code, 591K rwdata, 780K rodata, 1184K init, 217K bss, 9564K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS: 51 [ 0.000000] CPU clock: 650.000 MHz [ 0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 5880801374 ns [ 0.000002] sched_clock: 32 bits at 325MHz, resolution 3ns, wraps every 6607641598ns [ 0.008373] Calibrating delay loop... 432.53 BogoMIPS (lpj=2162688) [ 0.074951] pid_max: default: 32768 minimum: 301 [ 0.080918] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.088644] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.105491] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.115967] futex hash table entries: 256 (order: -1, 3072 bytes, linear) [ 0.123461] pinctrl core: initialized pinctrl subsystem [ 0.131379] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.138424] thermal_sys: Registered thermal governor 'step_wise' [ 0.153514] clocksource: Switched to clocksource MIPS [ 0.167059] NET: Registered PF_INET protocol family [ 0.172541] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear) [ 0.181469] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear) [ 0.190435] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.198637] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.206751] TCP bind hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.214226] TCP: Hash tables configured (established 1024 bind 1024) [ 0.221159] UDP hash table entries: 256 (order: 0, 4096 bytes, linear) [ 0.228167] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear) [ 0.236126] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 0.242162] PCI: CLS 0 bytes, default 32 [ 0.251234] workingset: timestamp_bits=14 max_order=14 bucket_order=0 [ 0.264752] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.270926] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) © 2001-2006 Red Hat, Inc. [ 0.283130] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251) [ 0.296451] pinctrl-single 1804002c.pinmux: 576 pins, size 72 [ 0.304192] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled [ 0.314506] printk: console [ttyS0] disabled [ 0.319122] 18020000.uart: ttyS0 at MMIO 0x18020000 (irq = 9, base_baud = 1562500) is a 16550A [ 0.328330] printk: console [ttyS0] enabled [ 0.337400] printk: bootconsole [early0] disabled [ 0.373793] spi-nor spi0.0: gd25q64 (8192 Kbytes) [ 0.378770] 3 fixed-partitions partitions found on MTD device spi0.0 [ 0.385439] OF: Bad cell count for /ahb/spi@1f000000/flash@0/partitions [ 0.392317] OF: Bad cell count for /ahb/spi@1f000000/flash@0/partitions [ 0.400050] OF: Bad cell count for /ahb/spi@1f000000/flash@0/partitions [ 0.407023] OF: Bad cell count for /ahb/spi@1f000000/flash@0/partitions [ 0.414158] Creating 3 MTD partitions on “spi0.0”: [ 0.419132] 0x000000000000-0x000000020000 : “u-boot” [ 0.432211] 0x000000020000-0x0000007f0000 : “firmware” [ 0.439590] 2 tplink-fw partitions found on MTD device firmware [ 0.445841] Creating 2 MTD partitions on “firmware”: [ 0.450986] 0x000000000000-0x000000238a89 : “kernel” [ 0.456131] mtd: partition “kernel” doesn't end on an erase/write block -- force read-only [ 0.468501] 0x000000238a8c-0x0000007d0000 : “rootfs” [ 0.473755] mtd: partition “rootfs” doesn't start on an erase/write block boundary -- force read-only [ 0.484770] mtd: setting mtd3 (rootfs) as root device [ 0.491403] 1 squashfs-split partitions found on MTD device rootfs [ 0.497916] 0x0000005b0000-0x0000007d0000 : “rootfs_data” [ 0.505105] 0x0000007f0000-0x000000800000 : “art” [ 0.924617] ag71xx 19000000.eth: Could not connect to PHY device. Deferring probe. [ 1.620415] switch0: Atheros AR8229 rev. 1 switch registered on mdio.0 [ 1.676864] ag71xx 1a000000.eth: connected to PHY at fixed-0:00 [uid=00000000, driver=Generic PHY] [ 1.687049] eth0: Atheros AG71xx at 0xba000000, irq 5, mode: gmii [ 1.694166] i2c_dev: i2c /dev entries driver [ 1.702420] NET: Registered PF_INET6 protocol family [ 1.725744] Segment Routing with IPv6 [ 1.729662] In-situ OAM (IOAM) with IPv6 [ 1.733991] NET: Registered PF_PACKET protocol family [ 1.739333] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 1.753123] 8021q: 802.1Q VLAN Support v1.8 [ 2.095644] ag71xx 19000000.eth: connected to PHY at mdio.0:1f:04 [uid=004dd042, driver=Generic PHY] [ 2.106351] eth1: Atheros AG71xx at 0xb9000000, irq 4, mode: mii [ 2.125587] VFS: Mounted root (squashfs filesystem) readonly on device 31:3. [ 2.142670] Freeing unused kernel image (initmem) memory: 1184K [ 2.148848] This architecture does not have kernel memory protection. [ 2.155531] Run /sbin/init as init process [ 2.159761] with arguments: [ 2.159766] /sbin/init [ 2.159772] with environment: [ 2.159777] HOME=/ [ 2.159782] TERM=linux [ 2.873301] init: Console is alive [ 2.877785] init: - watchdog - [ 4.034725] kmodloader: loading kernel modules from /etc/modules-boot.d/* [ 4.116303] kmodloader: done loading kernel modules from /etc/modules-boot.d/* [ 4.134680] init: - preinit - [ 5.686915] random: jshn: uninitialized urandom read (4 bytes read) [ 6.112752] random: jshn: uninitialized urandom read (4 bytes read) [ 6.299654] random: jshn: uninitialized urandom read (4 bytes read) [ 6.701918] random: jshn: uninitialized urandom read (4 bytes read) [ 7.179940] eth0: link up (1000Mbps/Full duplex) [ 7.193950] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 7.201076] IPv6: ADDRCONF(NETDEV_CHANGE): eth0.1: link becomes ready [ 7.239867] random: procd: uninitialized urandom read (4 bytes read) [ 9.522548] mount_root: jffs2 not ready yet, using temporary tmpfs overlay [ 9.535511] urandom-seed: Seed file not found (/etc/urandom.seed) [ 9.628774] eth0: link down [ 9.661525] procd: - early - [ 9.665129] procd: - watchdog - [ 10.461493] procd: - watchdog - [ 10.465630] procd: - ubus - [ 10.564358] random: ubusd: uninitialized urandom read (4 bytes read) [ 10.575236] random: ubusd: uninitialized urandom read (4 bytes read) [ 10.589772] random: ubusd: uninitialized urandom read (4 bytes read) [ 10.603115] procd: - init - [ 11.752640] random: jshn: uninitialized urandom read (4 bytes read) [ 11.838953] random: ubusd: uninitialized urandom read (4 bytes read) [ 11.926742] kmodloader: loading kernel modules from /etc/modules.d/* [ 12.583057] Loading modules backported from Linux version v6.1.24-0-g0102425ac76b [ 12.590937] Backport generated by backports.git v5.15.92-1-44-gd6ea70fafd36 [ 13.357409] PPP generic driver version 2.4.2 [ 13.365530] NET: Registered PF_PPPOX protocol family [ 13.493763] ath: EEPROM regdomain: 0x0 [ 13.493804] ath: EEPROM indicates default country code should be used [ 13.493811] ath: doing EEPROM country→regdmn map search [ 13.493833] ath: country maps to regdmn code: 0x3a [ 13.493842] ath: Country alpha2 being used: US [ 13.493850] ath: Regpair used: 0x3a [ 13.508254] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' [ 13.511450] ieee80211 phy0: Atheros AR9531 Rev:2 mem=0xb8100000, irq=12 [ 13.614282] kmodloader: done loading kernel modules from /etc/modules.d/* [ 16.442206] urngd: v1.0.2 started. [ 19.454221] random: crng init done [ 19.457780] random: 31 urandom warning(s) missed due to ratelimiting [ 69.028538] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0 [ 69.053619] jffs2_build_filesystem(): unlocking the mtd device... [ 69.053734] done. [ 69.062116] jffs2_build_filesystem(): erasing all blocks after the end marker... [ 70.982850] eth0: link up (1000Mbps/Full duplex) [ 71.025676] br-lan: port 1(eth0.1) entered blocking state [ 71.031306] br-lan: port 1(eth0.1) entered disabled state [ 71.037406] device eth0.1 entered promiscuous mode [ 71.042378] device eth0 entered promiscuous mode [ 71.057614] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 71.121248] br-lan: port 1(eth0.1) entered blocking state [ 71.126951] br-lan: port 1(eth0.1) entered forwarding state [ 72.023651] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready [ 74.484918] done. [ 74.486976] jffs2: notice: (1970) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found. [ 75.086822] overlayfs: upper fs does not support tmpfile.