Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1) Download a GPL package from TP-Link for TP-Link TL-WR841ND v9:
- https://www.tp-link.com/us/support/gpl-code/
- TL-WR841ND V9 361.54 MB
- https://static.tp-link.com/resources/gpl/wr841nv9_en_gpl.tar.gz
- and unpack it somewhere, i.e. to
- /home/anon/tp-link-gpl/wr841nv9_en_gpl/
- cd /home/anon/
- mkdir /home/anon/tp-link-gpl/
- cp /home/anon/Downloads/wr841nv9_en_gpl.tar.gz /home/anon/tp-link-gpl/wr841nv9_en_gpl.tar.gz
- cd /home/anon/tp-link-gpl/
- tar -zxvf /home/anon/tp-link-gpl/wr841nv9_en_gpl.tar.gz
- 2) TP-Link TL-WR841ND v9: change from 4MB to 16MB
- cd /home/anon/tp-link-gpl/wr841nv9_en_gpl/
- and apply this patch:
- diff --git a/ap143/boot/u-boot/include/configs/board953x.h b/ap143/boot/u-boot/include/configs/board953x.h
- --- a/ap143/boot/u-boot/include/configs/board953x.h
- +++ b/ap143/boot/u-boot/include/configs/board953x.h
- @@ -10,7 +10,7 @@
- #include <atheros.h>
- #ifndef FLASH_SIZE
- -#define FLASH_SIZE 4
- +#define FLASH_SIZE 16
- #endif
- /*-----------------------------------------------------------------------
- * FLASH and environment organization
- === last line above ^
- patch -p1 < ./16mb.patch
- 3-4.2, PATH A) Prepare an old toolchain, to see the "desired" directory tree:
- cd /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/
- make DEV_NAME=wr841nv9_en toolchain_prep
- This toolchain is ancient, built by unknown person at TP-Link, and is x86 - did not work on Arch/Artix without these changes:
- {
- According to
- https://wiki.archlinux.org/index.php/Official_repositories#multilib
- uncomment "multilib" :
- sudo nano /etc/pacman.conf
- then install these packages :
- pacman -Suy lib32-glibc lib32-zlib gcc-libs lib32-gcc-libs
- }
- I want a good GCC toolchain, i.e. a fresh musl 5.5.0 from libreCMC
- ( musl seems to be better than uclibc - http://www.etalabs.net/compare_libcs.html )
- 4) Using another toolchain's files, replace an old toolchain with a new one:
- 4.1) /home/anon/libreCMC/staging_dir/toolchain-mips_24kc_gcc-5.5.0_musl-1.1.16/ = /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/gcc-4.3.3/build_mips/staging_dir/usr/ :
- rm -rf /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/gcc-4.3.3/build_mips/staging_dir/usr/
- cp -R /home/anon/libreCMC/staging_dir/toolchain-mips_24kc_gcc-5.5.0_musl-1.1.16/ /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/gcc-4.3.3/build_mips/staging_dir/usr/
- 4.2) /home/anon/libreCMC/staging_dir/host/ = /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/gcc-4.3.3/build_mips/staging_dir/host/
- rm -rf /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/gcc-4.3.3/build_mips/staging_dir/host/
- cp -R /home/anon/libreCMC/staging_dir/host/ /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/gcc-4.3.3/build_mips/staging_dir/host/
- ===> 3-4.2, PATH B) Or, even better,
- cd /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/
- rm -rf ./gcc-4.3.3/
- mkdir ./gcc-4.3.3/
- mkdir ./gcc-4.3.3/build_mips/
- mkdir ./gcc-4.3.3/build_mips/staging_dir/
- cp -R /home/anon/libreCMC/staging_dir/toolchain-mips_24kc_gcc-5.5.0_musl-1.1.16/ ./gcc-4.3.3/build_mips/staging_dir/usr/
- cp -R /home/anon/libreCMC/staging_dir/host/ ./gcc-4.3.3/build_mips/staging_dir/host/
- 4.3)
- export STAGING_DIR="/home/anon/tp-link-gpl/wr841nv9_en_gpl/build/gcc-4.3.3/build_mips/staging_dir/"
- 4.4 - PATH A)
- cd /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/gcc-4.3.3/build_mips/staging_dir/usr/bin/
- ln -s mips-openwrt-linux-musl-addr2line mips-linux-uclibc-addr2line
- ln -s mips-openwrt-linux-musl-ar mips-linux-uclibc-ar
- ln -s mips-openwrt-linux-musl-as mips-linux-uclibc-as
- ln -s mips-openwrt-linux-musl-c++ mips-linux-uclibc-c++
- ln -s mips-openwrt-linux-musl-c++filt mips-linux-uclibc-c++filt
- ln -s mips-openwrt-linux-musl-gcc mips-linux-uclibc-cc
- ln -s mips-openwrt-linux-musl-cpp mips-linux-uclibc-cpp
- ln -s mips-openwrt-linux-musl-elfedit mips-linux-uclibc-elfedit
- ln -s mips-openwrt-linux-musl-g++ mips-linux-uclibc-g++
- ln -s mips-openwrt-linux-musl-gcc mips-linux-uclibc-gcc
- ln -s mips-openwrt-linux-musl-gcov mips-linux-uclibc-gcov
- ln -s mips-openwrt-linux-musl-gdb mips-linux-uclibc-gdb
- ln -s mips-openwrt-linux-musl-gprof mips-linux-uclibc-gprof
- ln -s mips-openwrt-linux-musl-ld mips-linux-uclibc-ld
- ln -s mips-openwrt-linux-musl-nm mips-linux-uclibc-nm
- ln -s mips-openwrt-linux-musl-objcopy mips-linux-uclibc-objcopy
- ln -s mips-openwrt-linux-musl-objdump mips-linux-uclibc-objdump
- ln -s mips-openwrt-linux-musl-ranlib mips-linux-uclibc-ranlib
- ln -s mips-openwrt-linux-musl-readelf mips-linux-uclibc-readelf
- ln -s mips-openwrt-linux-musl-size mips-linux-uclibc-size
- ln -s mips-openwrt-linux-musl-strings mips-linux-uclibc-strings
- ln -s mips-openwrt-linux-musl-strip mips-linux-uclibc-strip
- 4.4 - PATH B)
- cd /home/anon/tp-link-gpl/wr841nv9_en_gpl/
- and apply this patch:
- diff --git a/build/products_config/wr841nv9_en/basic.config b/build/products_config/wr841nv9_en/basic.config
- --- a/build/products_config/wr841nv9_en/basic.config
- +++ b/build/products_config/wr841nv9_en/basic.config
- @@ -2,7 +2,7 @@
- export BOARD_TYPE=ap143
- export CFG_BOARD_TYPE=$(BOARD_TYPE)
- export TOOLCHAIN=gcc-4.3.3
- -export TOOLPREFIX=mips-linux-uclibc-
- +export TOOLPREFIX=mips-openwrt-linux-musl-
- export TOOLARCH=build_mips/staging_dir/usr
- export UBOOT_GCC_4_3_3_EXTRA_CFLAGS=-fPIC
- === last line above ^
- patch -p1 < ./toolchain.patch
- 5) According to
- https://github.com/pepe2k/u-boot_mod/issues/95
- https://github.com/pepe2k/u-boot_mod/commit/6d509b9219dc0e87f06ac2f24df60505fc1af707
- do
- cd /home/anon/tp-link-gpl/wr841nv9_en_gpl/ap143/boot/u-boot/include/asm-mips/
- find . -type f -name "bitops.h" -print0 | xargs -0 sed -i 's/extern __inline__/static __inline__/g'
- find . -type f -name "io.h" -print0 | xargs -0 sed -i 's/extern __inline__/static __inline__/g'
- find . -type f -name "mipsregs.h" -print0 | xargs -0 sed -i 's/extern __inline__/static __inline__/g'
- find . -type f -name "processor.h" -print0 | xargs -0 sed -i 's/extern __inline__/static __inline__/g'
- find . -type f -name "string.h" -print0 | xargs -0 sed -i 's/extern __inline__/static __inline__/g'
- find . -type f -name "system.h" -print0 | xargs -0 sed -i 's/extern __inline__/static __inline__/g'
- find . -type f -name "bitops.h" -print0 | xargs -0 sed -i 's/extern inline/static inline/g'
- find . -type f -name "io.h" -print0 | xargs -0 sed -i 's/extern inline/static inline/g'
- find . -type f -name "mipsregs.h" -print0 | xargs -0 sed -i 's/extern inline/static inline/g'
- find . -type f -name "processor.h" -print0 | xargs -0 sed -i 's/extern inline/static inline/g'
- find . -type f -name "string.h" -print0 | xargs -0 sed -i 's/extern inline/static inline/g'
- find . -type f -name "system.h" -print0 | xargs -0 sed -i 's/extern inline/static inline/g'
- 6) According to
- https://stackoverflow.com/questions/58206403/multiple-definitions-of-error-while-linking-two-archives-using-the-same-source
- do
- cd /home/anon/tp-link-gpl/wr841nv9_en_gpl/ap143/boot/u-boot/include/
- find . -type f -name "pci.h" -print0 | xargs -0 sed -i 's/extern __inline__/static __inline__/g'
- find . -type f -name "pci.h" -print0 | xargs -0 sed -i 's/extern inline/static inline/g'
- 7) Now you can
- cd /home/anon/tp-link-gpl/wr841nv9_en_gpl/build/
- make DEV_NAME=wr841nv9_en uboot
- and your file will be called
- /home/anon/tp-link-gpl/wr841nv9_en_gpl/ap143/boot/u-boot/tuboot.bin
- === ;-)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement