1
0
Fork 0
maxwell/docs/BUILD.md

4.9 KiB

HOWTO Build Maxwell

This documents how to build the Maxwell meshing software with OpenWRT.

Base system is Debian Bullseye (11/testing) on ppc64le architecture. Should also work fine on x86_64.

Build thang

Do.

OpenWRT build system:

Install Dependencies

Dependencies for other distros are listed here:

Get current:

apt update

Upstream command suggests for Debian:

apt install build-essential ccache ecj fastjar file g++ gawk \
gettext git java-propose-classpath libelf-dev libncurses5-dev \
libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget \
python3-distutils python3-setuptools python3-dev rsync subversion swig time \
xsltproc zlib1g-dev

Full docs list more dependencies for full list, that work with Debian Bullseye. Takes over 6 gigs on root filesystem

apt install								\
	asciidoc \
	bash \
	binutils \
	bzip2 \
	flex \
	git-core \
	g++ \
	gcc \
	util-linux \
	gawk \
	help2man \
	intltool \
	libelf-dev \
	zlib1g-dev \
	make \
	libncurses5-dev \
	libssl-dev \
	patch \
	perl-modules \
	python2-dev \
	python3-dev \
	unzip \
	wget \
	gettext \
	xsltproc \
	zlib1g-dev \
	libboost-dev \
	libxml-parser-perl \
	libusb-dev \
	bin86 \
	bcc \
	sharutils

Maybe want to use ccache to save on rebuilds:

apt install ccache

Add to your ~/.bashrc:

PATH=/usr/lib/ccache:$PATH

Then log out and back in and run echo $PATH to make sure it is there. Run ccache -s during build to see cache hit rate.

Get Source

Clone OpenWRT sources, around ~300 megs:

git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt

Add Maxwell source code, around ~5 megs, to openwrt directory:

git clone https://github.com/drandyhaas/haasmesh.git

Configure Build

If you've done other builds, it is good to clean up first, maybe:

make clean

There are a variety of units the setup script is compatible with:

  • luma
  • Maxwell Indoor 3-Band: ea8300
  • Maxwell Outdoor 2-Band: ew72
  • c7v2
  • c7v5
  • jetstream
  • redmi

You will need to check out the correct git branch or commit depending on your radio.

To get the stock version OpenWrt 19.07.4, r11208-ce6496d796 of the Maxwell Indoor 3-Band EA8300:

git checkout ce6496d796

To get the stock version OpenWrt SNAPSHOT, r14229-b52b4afa15 of the Maxwell Outdoor 2-Band EW-72:

git checkout b52b4afa15

TODO: Add more versions, newer releases.

Pull in more needful things:

# Takes about ~1 min:
./scripts/feeds update -a
# Takes less than 1 min:
./scripts/feeds install -a

To build, run the build script with one of these options.

haasmesh/script/setupnodebuild.sh [luma|ea8300|ew72|c7v2|c7v5|jetstream|redmi]

For example, to configure the build system for the Maxwell Outdoor 2-Band, run below. The configure script should run in ~1 second.

haasmesh/script/setupnodebuild.sh ew72

This is a sample .config file that can be used for EW-72:

wget -O .config https://spacecruft.org/network/maxwell/raw/branch/master/config/dot-config-ew-72

Run menuconfig:

make menuconfig

In there, there are a few options needed to select, which should be already including in above config:

network -> alfred (with auto bat-hosts) batctl-full iperf3 
network/wirelessAPD -> remove wpad-basic, install wpad-mesh-openssl
network/filetransfer -> wget
network/ssh -> openssh-client-utils
utilities/compression -> unzip
utilities/editors -> nano
utilities/bootloader -> uboot-envtools
kernel/network support-> kmod-batman-adv
kernel/wireless drivers -> kmod-rt2800-usb (for alfa r36a)
firmware -> ath10k non-ct drivers and kmod-ath10k non-ct (for wave-1 devices only, like archer)
firmware -> ath10k-firmware-qca9888-ct (for ea8300)
development -> diffutils
luci, luci-app-commands
for luma also add:
  utilities -> i2c-tools, nand-utils, usbutils
  kernel/filesystems -> kmod-fs-exfat, kmod-fs-ext4, kmod-fs-vfat, kmod-usb-storage

TODO: What kernel wifi modules on EW-72? Use ath9k and ath10k for now.

TODO: Make defconfig for different hardware.

Hit <TAB> to get to EXIT, then <ENTER> to select Yes to save the configuration.

Build Source

Now, actually build it. Takes over an hour or two, depending on hardware.

make

MISC HACKS

Notes on things that need to be done too:

For the Archer, you need the source patch I discuss in this thread, so you can raise the mtu...
https://forum.openwrt.org/t/ag71xx-gigabit-e-g-archer-c7-v5-eth-raising-mtu-problem-regression/44138/

For the Linksys I had to follow this thread (which really just means deleting a patch file)
https://forum.openwrt.org/t/vlan-tagging-on-ipq40xx-gl-b1300-no-longer-works/69569/58
so that vlans work, which is needed for separate lan, wan, and backhaul

Also better for ssh config in OpenWRT build, enable:

Base system --> Dropbear Configuration --> Ed25519 support