This is the official documentation of Arcman. If you have any comments, suggestions, or want to contribute to the project in any way, feel free to contact us using the forum or by writing an E-Mail to email@example.com.
First of all some general things about Arcman you should know.
Arcman stands for Amateur Radio Carried Mobile Ad-hoc Network and is an Ham radio network similar to Hamnet but with some major differences. It is mainly developed by the akaFunk, a HAM radio club at the Technical University of Braunschweig, Germany.
Arcman is a fully self organized mashed network which works with cheap off the shelf components, e.g. speaking of common DSL routers and Wifi-Sticks. To be able to build a meshed network using these components the software of these devices ist altered or completely replaced. This allows us to operate the devices in different frequency ranges without any hardware modification. For some devices it is also possible to increase the output power, according to the policy of our HAM license. The devices support the 13cm (2.4GHz) and 6cm (5.7GHz) HAM radio bands using the Wifi-Standards. After the network is set up it can be used like any other Wifi network using protocols like IP, TCP/UDP or HTTP.
There are several advantages of Arcman compared to a regular Wifi network:
Arcman is a meshed network. But what exaclty is a meshed network?
In a meshed network each node (for example an Arcman router) is connected to one or more other nodes, each of them having the same role. A packet is routed through the network by passing it from node to node until it reaches it's destination. Take for example the image on the right, if a packet is to be routed from node A to node C, it can be passed through node B. If for some reason node B fails, the packet can be routed through nodes D and E.
A classical network structure is ordered like a tree, as you can see in the image to the right. A packet which has to be routed from node A to node C has to go through node F and there is no alternative route. If node F fails, the complete network will fail. As the Arcman routers will be placed on exposed positions like tall buildings and mountains, a tree topology is not suitable and would have many disadvantages.
There are a lot of purposes and possible scenarios for Arcman to be used for:
A comparision to other similar projects and what the differences are. There are a lot of other projects than those listed below that are similar to Arcman. However, these are the most popular ones.
HAMNET is a widely carried out network operated by radio-amateurs which is based on similar hardware like Arcman. The differences to Arcman is that HAMNET …
Freifunk is a German non profit initiative found in Berlin to bring free Wifi to everyone. The hardware and software is very similar to ours and might even be compatible - we are working on that together with Freifunk Braunschweig. However there are a few differences, Freifunk…
Arcman is not a faster and/or more powerfull way to replace your home Wifi. Every participant of the network has to have a HAM license. At least in Germany (an probably most other countries) the law is quite precise that it is not allowed as a HAM to communicate with people who don't have a HAM license. It is not even allowed to transmit a message for someone else, even if the reveiver and you both have HAM license. However, there is one important exception for that: a crisis (see The purpose of Arcman).
There are a few legal concerns which must be taken into account when using Arcman. The legal situation described in the following is to the best of our knowledge and may be wrong in some points. We are not responsable for any violation of the law by using Arcman. Please also inform yourself about the situation in your country as it might be different to those described below.
Arcman is capable to use different frequency bands, so it is possible to match it to your situation. However, in Germany we can use the 13cm (2320–2450 MHz) and 6cm (5,65–5,85 GHz) bands with a maximum output power of 75 W PEP, according to Wikipedia. Both bands are only allowed for users with a class A HAM license.
The following chapters will explain how Arcman works in more detail, which protocol is used to do what.
The picture below gives an overview of the system architecture. The core of the network is Arcman itself, shown in red. It can only be used by HAMs as it is operating in non standard Wifi frequencies. The routers used for the core network are called “Type 1”.
In order to connect Arcman to the Internet/HAMNET a “Type 4” router is required. This router has two purposes. At first it is used to tunnel Arcman through the internet to connect multiple Arcman networks when there is no direct connection. The second function is to tunnel the internet through Arcman to support emergency radio in case of a crisis. A “Type 4” router does not require hardware which supports HAM frequency bands if it is connected to an “Type 1” router by Ethernet.
The “Type 3” router is used to provide internet access through Arcman when using regular hardware like a smartphone. This type of router is only used for a crisis situation and has no usage otherwise.
In order to provide access to ARCMAN for HAMs using their regular smart phone or laptop without modification, the “Type 2” routers are used. Basically do the same as “Type 3”, but they do not tunnel the traffic to the Internet/HAMNET. Instead they provide direct access to the services and devices in the ARCMAN network.
The basic idea is that all Ethernet ports of each type of configuration is an ARCMAN network, using Avahi to get an IP address, resolve host names etc. There is, of course, the possibility to provide other services on the Ethernet ports like a debug interface or implement a combination of multiple configurations on a single router. But this is not our business. If you want to do that, please go ahead and do so. You can publish your results in our forum for others but at the moment this will not be part of the official documentation.
This chapter will explain how you can use Arcman without going into any technical detail.
The first thing required to run an Arcman network is some hardware. One general requirement for a hardware to be supported is the used Wifi chipset. Even though there are a lot of open source drivers available for a lot of hardware devices, the hardware also requires the support to use non standard frequencies. Of course you can also use standard components within specification without a HAM license. At the moment the required changes in the software are only done in drivers for Artheros chipsets. And as of our knowledge the Artheros chips are the only one usable for that.
|AR2427||AR2427 1×1 SB (no 11n)|
|AR5008||AR5418+AR5133, AR5416+AR5133, AR5416+AR2133|
|AR9001||AR9160 2×2 DB, AR9102 2×2 SB, AR9103 3×3 SB|
|AR9002||AR9220 2×2 DB, AR9223 2×2 SB, AR9227 2×2 SB, AR9280 2×2 DB, AR9281 2×2 SB, AR9285 1×1 SB, AR9287 2×2 SB|
|AR9003||AR9380 3×3 DB, AR9382 2×2 DB, AR9331 1×1 SB, AR9340 2×2 DB, AR9341|
|AR9004||AR9485 1×1 SB, AR9462 2×2 DB, AR9565 1×1 SB, AR9580 3×3 DB, AR9550 3×3 DB|
However, we have already prepared and tested drivers and/or images for a few devices.
|TP-Link TL-WA701ND||~22€||0+1||4MB||32MB||basic system|
|TP-Link TL-WR1043ND V1||~50€||1+4||8MB||32MB||extended services possible, three antennas|
|TP-Link TL-WR1043ND V2||~50€||1+4||8MB||64MB||extended services possible, not yet tested|
|TP-Link TL-WR841N(D)||~26€||1+4||4MB||32MB||basic System, up to V10, V11 isn't supported!|
|TP-Link TL-WDR3600||~45€||1+4||8MB||128MB||extended services possible|
|TP-Link TL-WDR4300||~50€||1+4||8MB||128MB||extended services possible|
|Linksys WRT54G v3.1||~5€||1+4||4MB||32MB||Only for user entry in standard WLAN frequency band, generally not recommended|
The router now needs a new firmware. We use OpenWrt with some custom patches to support the HAM frequency bands and increase the output power. Besides that, the images contain all required packages like B.A.T.M.A.N, autoip, mDNS and others. When you click on the router you bought in the table above, you will find the download link to the firmware and the configuration files. There is also a section describing how to install the firmware. Follow the instructions for you device(s) and come back here.
After installing our image on the device you have a bare bone OpenWRT image with default OpenWRT configuration. This configuration has to be changed to set up ARCMAN. You also need to change a few things on the device, like your call sign and the password. First you probably want to download the later required configuration file here. After that cut the connection to your normal Internet router, as it is probably using the same IP address.
First you need to connect to the router using an Ethernet cable. Connect your PC to the router network port and set up your network interface with DHCP. Login to the router using telnet. On Windows/Unix/Linux/Mac open a Terminal and connect with the command
$ telnet 192.168.1.1
Once you set a password, you can use ssh (Putty for Windows) to connect to the router.
First change set a password with:
If you don't know, it is common in Linux that the password is not printed when typing, not even stars.
Next you need to change the configuration of the router. This mainly changes things in the network configuration files for setting up ARCMAN. The required files can be downloaded here. Find your router in the list and select the right configuration type. Now you need to transfer the file to the router. There are several ways to do that. When using Unix/Linux you can use netcat. Open another terminal on your PC and execute this command to figure out your IP address:
You are looking for the IP address of your Ethernet card, it is probably called eth0. Then run the netcat command on your PC for transmitting the file:
$ nc -l -p 5555 < /path/to/configuration.tar.gz
This will open a TCP server on port 5555 waiting for an incoming connection and transmit the file.
On The router execute:
# cd /tmp # nc <ip> 5555 > configuration.tar.gz
Replace <ip> with the IP address you figured out earlier.
If you want to transmit the files to the router on Windows, use the tool WinSCP and set up a SFTP connection to the router. Login using root as user name and the password you set up earlier. Copy the configuration file to /tmp.
Apply the configuration on the router with
# tar xzf configuration.tar.gz -C /
This will copy the required files into the /etc directory.
Now you have to set the correct call sign. This is done in the file /etc/avahi/avahi-daemon.conf. Open the file in a text editor:
# nano /etc/avahi/avahi-daemon.conf
Search for the entry host-name and set your call sign, it should look something like this:
[server] host-name=AB12CDE ...
Hit Ctrl+x, y and return to save the file.
After that restart the router and quit the connection with
# reboot && exit
Do not use the reset switch or unplug the power to restart!
The reboot may take a few minutes. Wait until the LEDs for Wifi and the used Ethernet port switch on. After that the router is ready to be used in ARCMAN.
In order to bring your PC into ARCMAN you need to to a few steps which are heavily dependent on your operation system. Below you find typical set-ups for a few systems.
There is no out of the box support for Avahi/Zeroconf in Windows but there are a few programs which bring Zeroconf support. One of these programs is Bonjour Print Services for Windows 2.0.2. Just install it, there is no configuration required.
Additionally you can install the Bonjour Browser to search for devices and services in the network.
These instructions are for Ubuntu but with some basic knowledge of your Linux distribution you should be able to adopt this.
Connect your PC to one of the routers LAN ports (do not use the WAN port if your router has one) using an Ethernet cable. If Ubuntu tries to connect to the network using DHCP or anything else, you can aboard that in the network manager. Open the network manager and add a new connection. In the first window select Ethernet and hit Create. Give the connection a name like “ARCMAN Avahi”. In the tab Ethernet choose your network card under “Device MAC Address”. In “IPv4 Settings” set the method to “Link-Local Only”. Go to the tab “IPv6 Settings” and set the method to “Ignore” as we do not support IPv6, yet. Click save and activate the connection.
Once you activate the connection Ubuntu will run Avahi to get an IP-Address in the ARCMAN network. You can do a few things in the terminal to check the status of the network. Open a terminal.
Find the current devices and services in the network:
# avahi-browse -a
Hit CTRL+C to break the program as it is continuously updating new devices.
The command above lists the names of the devices, you can find out it's IP address with:
# avahi-resolve-host-name hostname.local
Make sure to add .local at the end of the host name.
A ping should also work:
# ping hostname.local
Different to common infrastructural networks (like the Internet or HAMNET) Arcman has no infrastructure. Meaning that there are no central organized services like a DHCP or DNS server.
Arcman is making use of avahi, which is an implementation of zeroconf. Avahi will take care of giving an IP address to the client, similar to DHCP, but without using a central service (like a DHCP server). The address is calculated from the MAC address of the device, after that avahi checks if the IP is already used by someone else, in which case he will calculate a new IP address and so on, until he found a free address.
Host names are resolved without a central DNS server using mDNS. However, usually you should not be concerned with host names and IP addresses. The common usage scenario of an Arcman network is, that you connect into an (unknown) network and ask for a (specific) services provided by someone in the network. For example a client can announce a http server he is running. Everyone else in the network can ask for http services and will get a list of all devices running a http server.
We have a working environment in Braunschweig, located at the top of the “Architektenhochhaus”, Mühlenpfordstraße 23. In this network we offer a few services, you may use.
|Service||Avahi service / host name||Description|
|OPKG Codebase||_http._tcp / codebase.local||Provides current firmware images and ipk packages which can be configured in /etc/opkg/distfeeds.conf|
|Mumble||Mumble Server / —||Chat and VoIP server|
|IServ||_iserv._tcp||Access to our website www.akafunk-bs.de|
|IServ portal||_iserv-portal._tcp / —||Access to our internal akaFunk area www.akafunk-bs.de/idesk/|
|HAMNET access||— / DL0IU_01||At the moment the HAMNET access has to be configured statically. Define 169.254.1.1 as default route for the network 220.127.116.11/8 and use 18.104.22.168 as the DNS server. This works only on Linux so far. We are working on a better solution ;)|
If you want to develop something for Arcman, based on Arcman or just want to understand Arcman in depth, read this chapter.
We offer one full set of patches which applies to every device. However, the configuration files are different between the different configuration types and the router.
The patches are currently tested with revision OpenWRT Chaos Calmer (15.05) on a 14.04 Ubuntu. Checkout the OpenWRT Building Guide for detailed information.
$ sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk $ sudo apt-get install subversion mercurial $ git clone git://git.openwrt.org/15.05/openwrt.git $ cd openwrt $ ./scripts/feeds update -a $ ./scripts/feeds install -a
After that apply the Arcman patches and configure the set up using menuconfig:
$ wget https://www.arcman.de/pub/patches/arcman_patches_20151115.tar.gz $ tar xzf arcman_patches_20151115.tar.gz $ make menuconfig
Select your device in the “Target Profile” and change other settings as you need them. See Basic OpenWRT configuration below for some hints.
Exit menuconfig, save the config file and start the build:
$ make -j5
The number behind -j defines the number of parallel threads to start. A good value is to use one or two more than you have CPU cores (if you don't know, just use some value, it does not matter, it will just take longer). If everything works fine, you will find the image for your device in bin/ar71xx/. It is usually called something with squashfs in the name and the ending is .bin. There are sometimes two different types of images: The sysupgrade and the factory version. Use the factory version when your router is still running the factory image, otherwise use sysupgrade.
If compiling prints no errors but there is no image this might be because the image is too big for the device. The TP-Link 701 for example has only 4MB Flash which is quite strict and you cannot put a lot of stuff in there. This behaviour can be annoying especially when you have build a working image before and you don't notice that he actually did not created a new image after changing something, so check the date of the image file ;)
If you want to build and configure OpenWRT yourself, here are a few hints you might find helpful. Those are the default settings in the configuration file which is part of the Arcman patch archive.
At the moment we are working with OpenWRT Chaos Calmer (15.05). These are the most important changes you have to make in the OpenWRT “make menuconfig”. Please make them in the order listed here, as a few things pop up once you enable other things… so you have to go back and forth some times:
Kernel modules -> Network Support -> <*> kmod-batman-adv [ ] enable verbose debug logging [*] enable bridge loop avoidance [*] enable distributed arp table [*] enable multicast transmission optimization [ ] enable network coding [requires promisc mode support] Network -> <*> batctl Network -> IP Address and Names -> <*> avahi-autoipd <*> avahi-dbus-daemon < > avahi-nodbus-daemon Libraries -> <*> libavahi-client < > libavahi-compat-libdnssd -*- libavahi-dbus-support < > libavahi-nodbus-support Network -> IP Address and Names -> <*> avahi-utils
You may also consider adding an editor under Utilities → Editors if you prefer an other editor than vi ;)
If you want to copy a new image using a USB Flash drive, you have to enable USB Mass Storage and a few other things:
Kernel Modules -> USB Support -> <*> kmod-usb-storage Kernel Modules -> Native Language Support -> <*> kmod-nls-cp437 <*> kmod-nls-iso8859-1 Kernel Modules -> Filessystems -> <*> kmod-fs-vfat
You can also use the serial terminal to copy a new image, which is quite slow but a very simple solution. To do that you should enable base64 in the configuration:
Base System -> Busybox -> [*] Customize busybox options Coreutils -> [*] base64
You can use the base64 command to encode/decode the binary file in printable base64 format. This way you can transmit the file over the serial terminal and receive it with something like
# cat > /tmp/newimage.base64
On the host you can use gtkterm for example, it supports raw transmission of files. Or you may send the file directly into the serial device node.