Bug 196778

Summary: TPLINK WR1043-ND v1 hardware, updates to run with system on external USB disk
Product: Base System Reporter: Wojciech Puchar <wojtek>
Component: kernAssignee: freebsd-wireless (Nobody) <wireless>
Status: New ---    
Severity: Affects Some People    
Priority: ---    
Version: 10.1-STABLE   
Hardware: mips   
OS: Any   

Description Wojciech Puchar 2015-01-15 18:49:46 UTC
few updates to this great works.

to run FULL FreeBSD with only kernel in builtin flash things below are useful:

0) add options NBUF=100 or so to kernel config, default buffer allocation scheme are excessive.

1) changes to hints for geom_map:

hint.map.0.at="flash/spi0"
hint.map.0.start=0x00000000
hint.map.0.end=0x000020000
hint.map.0.name="uboot"
hint.map.0.readonly=1

hint.map.1.at="flash/spi0"
hint.map.1.start=0x00020000
hint.map.1.end=0x0007F0000
hint.map.1.name="kernel"
hint.map.1.readonly=0

hint.map.2.at="flash/spi0"
hint.map.2.start=0x007f0000
hint.map.2.end=0x00800000
hint.map.2.name="art"
hint.map.2.readonly=1

now kernel can be loaded and updated to flash from within system, while overwriting uboot and radio calibration data is forbidden.

2) simple script to convert kernel to uboot image without any rootfs (based on Adrian Chadd toolset for building images for many routers):


#!/bin/sh
strip -o /tmp/kernel /boot/kernel/kernel
gzip /tmp/kernel
echo -n ' ' >/tmp/rootfs
mktplinkfw -B TL-WR1043NDv1 -L 0x80050000 -E 0x80050100 -R 0x007EFFFF \
-k /tmp/kernel.gz -N FreeBSD -V FreeBSD-10 -r /tmp/rootfs -o /tmp/kernel.flash
rm /tmp/rootfs /tmp/kernel.gz
echo /tmp/kernel.flash now is ready to be written to /dev/map/kernel

this script can be used both from inside router or when crossbuilding kernel.

3) to write it to flash first time to router use information as on Adrian Chadd webpages.

to update kernel  from within TPLINK do

dd if=/tmp/kernel.flash of=/dev/map/kernel bs=64k

and reboot