User Tools

Site Tools


documentation

Arcman Documentation

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 info@arcman.de.

Introduction

First of all some general things about Arcman you should know.

What is Arcman?

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:

  • Transmit power of up to 75 W PEP (at least in Germany) compared to a few 100mW with common Wifi devices.
  • Use of frequency bands which are not flooded with consumer devices, which leads to a much more robust system and higher data rates.
  • Due to the meshed nature of Arcman (see below) the notwork is able to overcome failure in single routers by passing the data packets through other routers.
  • There is barely any configuration required when setting up the network.
  • Large distances can be bridged by using high gain antennas, high output power and multiple routers in seriers.

Meshed networks

Meshed 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.

Tree network 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.

The purpose of Arcman

There are a lot of purposes and possible scenarios for Arcman to be used for:

  • A network between HAMs to communicate more efficient and in a more modern way using technologies like VoIP.
  • Arcman is a platform for people who are interested in modern network technology from a software point of view. There are a lot of scenarios the routers can be set up for, like different type of network structures or different algorithms for smart routing of the packages.
  • In a crisis HAMs are encouraged to help and are therefore allowed to communicate to anybody and support the people and the authorities with their infrastructure and knowledge. From the beginning on Arcman was designed keeping this concept in mind. It is planned to use Arcman in local crises as it is a very flexible and self organized network, which can help to keep a minimal communication infrastructure up and running, even in case of a blackout. Therefore it is planned to build critical points of an Arcman network using rugged, durable and battery supported stations. We know that (at least in Germany) the communication infrastructure for police, fire brigade, ambulance service and other institutions is very reliable and works even in a crisis very well. However, Arcman can help to support the communication between regular people who want to help. It can provide a very flexible, easy to use and rugged infrastructure which can be used by any laptop, mobile phone or similar device with Wifi capability. Using Arcman people can organize themselves and focus their help wherever it is needed. Besides that Arcman can also be used by the authorities and organisations in countries with inferior communication infrastructure during a crisis due to it's simple set-up.

Similar projects

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

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 …

  • is no mesh structure and has basically no redundancy,
  • is not supposed to provide internet access,
  • is not designed for a crisis,
  • is not as flexiable and does not configure itself.

Freifunk

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…

  • is limited to commercial available hardware,
  • is not allowed to modify the hardware,
  • has stronger limattions in power and frequency bands used,
  • is not exclusively for HAMs, but can be used by anyone,
  • is not designed to support the population in case of a crisi.

What Arcman is not

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.

Germany

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.

Technology

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.

Using Arcman

This chapter will explain how you can use Arcman without going into any technical detail.

Hardware

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.

Supported ath9k chip sets

Family Type
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
QCA9533 QCA9533-AL3A, QCA9533-BL3A

Supported ath9k chip sets

However, we have already prepared and tested drivers and/or images for a few devices.

Routers

Name Price ETH 1) Flash RAM Comments
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

Firmware

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.

Basic router set-up

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:

# passwd

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:

$ ifconfig

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.

Basic client set-up

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.

Windows

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.

Ubuntu/Linux

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

Services and host names

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.

Available services

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 44.0.0.0/8 and use 44.224.46.76 as the DNS server. This works only on Linux so far. We are working on a better solution ;)

Developing Arcman

If you want to develop something for Arcman, based on Arcman or just want to understand Arcman in depth, read this chapter.

Compiling OpenWrt

ARCMAN is based on OpenWrt. A few patches add the support for HAM frequencies and higher power values if possible. You can find the patches in our public folder.

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 ;)

Basic OpenWRT configuration

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.

1) Ethernet interfaces, 1+4 means 1 WAN port and 4 Ethernet Ports. Usually the ports are completely the same from the hardware point of view and can be configured in any way.
documentation.txt · Last modified: 2016/04/08 07:23 by dd3al