Meinen derzeitigen WLAN Access Point TL-WA901ND habe ich damals angeschafft, weil er billig war, und auf der Verpackung Multi SSID, 802.1X (WPA2-EAP), sowie VLAN beworbene Features waren. Das war zwar nicht gelogen, dennoch gibt es nicht erwähnte Einschränkungen. So ist es nicht möglich im Multi SSID Modus (verschiedene logische WLAN Netze auf einem Gerät) die radius basierte Authentifizierung 802.1X zu verwenden, sondern lediglich max. 4 unterschiedliche preshared keys (PSK). Ausserdem bricht das Gerät mit der Originalfirmware unter Last – insbesondere bei vielen verbundenen Clients – extrem in Punkto Performance ein.

Voraussetzungen:

  • Serial TTL Wandler z. B. auch mit USB Anschluß möglich
  • minimale Lötkenntnisse
  • 4er Stiftleiste zum Auflöten auf dem Board des Access Points
  • serielles Konsolenprogramm auf dem Rechner
  • TFTP Server zum Holen der Firmwaredatei

Da das Flashen des nahezu identischen Geräts in der warpzone bereits einen großen Performancegewinn beschert hat, hab ich dieses Projekt auch für meinen in Angriff genommen. Bei lediglich 4MB Flash-Speicher sollte man tunlichst den squashfs Build nehmen und nicht das jffs2 Derivat, da einem sonst beim Ablauf der Postinstallskripte der Speicherplatz ausgeht. Für mein Gerät mit Hardware Rev. v1.04 ist also dieses OpenWRT 12.09-beta (Attitude Adjustment) Image zu verwenden.

Vorbereitungen für das Flashen:

Zwar wäre es möglich gewesen bei dieser Hardwareversion das Image über die Firmwarupdatefunktion der Originalsoftware einzuspielen, doch dann hätte ich im Fehlerfall nicht sehen können, ob und was schiefgelaufen ist, also musste ich erstmal 4 Pin-Header für die serielle Schnittstelle auf das Mainboard auflöten, wobei die Belegung wie bei TP-Link typisch die Folgende ist: RX – TX – GND – +3.3V (Strombuchse).

Zum Anschluß an einen Computer benötigt man zwingend einen seriellen TTL Adapter, der mit 3,3V kommuniziert, eine normale RS-232 Schnittstelle vom PC arbeitet mit 12V, was das Gerät mit Sicherheit grillen würde. Mit den Einstellungen 115200 baud, 8bits, keine Flußkontrolle und einem Stopbit, kann man dem Gerät nun beim Booten auf die Konsole schauen. Unter Linux verwende ich dafür entweder screen oder das grafische GTKTerm, unter Windows auch gerne putty.

Außerdem benötigen wir einen TFTP Server, der uns das OpenWRT Image über das Netzwerk ausliefert, wenn wir es anfordern. Ich nutze dazu den entsprechenden Dienst meines FreeNAS Storages, tftpd-hpa, dnsmasq oder etwas Vergleichbares werden es aber ebenso tun. Pro-Tipp: Das Image umbenennen, damit man den langen Dateinamen auf der Konsole nicht tippen muss

OpenWRT auf das Gerät bringen:

Ist das Gerät bereit, das Terminal läuft und die Verbindung steht, kann man Netzwerkkabel und Stromstecker einstecken und sollte den Durchlauf des uBoot Bootloaders sehen. Es gibt einen Zeitpunkt vor dem Laden des Kernels, an dem man ca 1 Sekunde Zeit hat, durch tippen von “tpl” den Startvorgang abzubrechen und auf den Prompt des Bootloaders zu gelangen. Das gelingt vermutlich erst nach ein paar Versuchen

Hat man es dennoch geschafft, kann man die IP- Adresse des Geräts und die des Rechners mit dem TFTP Server angeben.

setenv ipaddr a.b.c.d
setenv serverip e.f.g.h

Nun wird das OpenWRT Image vom Server in den RAM geladen, der Flash-Speicher gelöscht und anschließend das neue Image aufgespielt.
tftpboot 0x80000000 openwrt-ar71xx-tl-wa901nd-squashfs-factory.bin
erase 0x9f020000 +0x3c0000
cp.b 0x80000000 0x9f020000 0x3c0000

Hat dies ohne Anzeichen von Fehlern geklappt, kann man jetzt den Bootvorgang anwerfen:
bootm 0x9f020000

Der erste Start dauert noch ein wenig länger, da der verbleibende Speicher auf dem Flashbaustein mit einem jffs2 overlay Dateisystem formatiert wird, danach kann man das Gerät mit Telnet, SSH und über das Webinterface auf der IP-Adresse 192.168.1.1

Um, das Interface für das unvertraute Gäste VLAN zu erstellen, habe ich keine Möglichkeit im LUCI (Webinterface) oder UCI (Konsolenconfigprogramm) gefunden, dafür habe ich mir kurzerhand ein kleines Initscript geschrieben, das mir das Interface beim Booten hochzieht:

 Bash |  copy code |? 
1
#!/bin/sh /etc/rc.common
2
START=99
3
start(){
4
vconfig add eth0 255
5
}
6
 
7
stop(){
8
vconfig rem vlan255
9
}

 Bash |  copy code |? 
1
<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;">Das Script muss natürlich ausführbar sein, root gehören und kann dann im Webif aktiviert werden. Dann hat man im Interfaces Menü auch direkt die Möglichkeit, das Interface zu verwerden und Zonen zuzuordnen.</span>

Fazit

Durch den Einsatz der OpenWRT Software ist alles aufgegangen, was ich mir von dem Stunt erwartet habe, ich habe eine WLAN SSID, die mit 802.1X Authentifizierung auf das vertraute VLAN gebridged ist und ein weiteres nur mit WPA2-PSK gesichertes, das in das unvertraute Gäste VLAN gesteckt wird, zudem hab ich Durchsatzraten über WLAN wie noch nie zuvor mit dem Gerät erreicht (bis zu 83Mbit/s Realdurchsatz mit einem Gerät, das nur WLAN-N 150 beherrscht) und die Performance bricht bei vielen Clients kein bisschem mehr ein. #win!