Skip to main content
shopping_basket Warenkorb 0
Einloggen

Der leistungsstarke Intel® Joule™

Intel_Joule1_88b3b622f5695ea534c30110bb02b3a0a5c74f0f.jpg

 

Intel ist kein Neuling auf dem Entwicklungskit-Markt – der Edison (833-0891) in SD-Karten-Größe ist ein typisches Beispiel dafür – mit dem Joule zielt Intel aber direkt auf eine andere Entwicklergruppe ab. Der erste wesentliche Anhaltspunkt dafür ist der Preis. Auf den meisten Websites kostet der Intel® Joule™ 570X (125-9541) etwa 10 Mal so viel wie der so beliebte De-facto-Entwicklungskit-Standard, der Raspberry Pi 3 (896-8660) .

Warum also so viel mehr für den Joule bezahlen? Die kurze Antwort lautet: kompakte Rechenleistung. Das winzige System auf einem Modul (System on a Module, SOM) ist nur 24 mm x 48 mm groß, bietet aber einige beeindruckende Eigenschaften, z. B. 4K-Videoaufzeichung und -anzeige mit Unterstützung für die Intel® RealSense™-Technologie. Dadurch kann das Gerät Schärfentiefe (Depth of Field, DOF)-Informationen erfassen und Anwendungen die räumliche Wahrnehmung der Umgebung und von Objekten innerhalb dieser Umgebung ermöglichen. Es ist nicht schwer sich vorzustellen, wie nützlich dies für

 

  • autonome Fahrzeuge, Drohnen und die Robotertechnik
  • Fahrerassistenzanwendungen für die Automobilindustrie
  • erweiterte und virtuelle Realität
  • das industrielle Internet der Dinge (IIoT)

 

… und nahezu alle anderen Anwendungen wäre, bei denen ein dreidimensionales Verständnis der lokalen Umgebung nützlich wäre.

 

Merkmale

Was enthält das Joule-Modul noch? Es gibt zwei Varianten mit folgenden Merkmalen:

 

 Das Intel® Joule™ 570X-Modul bietet:

 

  • 1,7 GHz Quadcore Intel® Atom™ T5700-Hochleistungsprozessor mit 64 Bit und Burst bis 2,4 GHz
  • 4 GB LPDDR4-RAM und 16 GB eMMC-Speicher
  • Intel® HD-Grafik mit 4K-Videoaufzeichung und -anzeige
  • 11ac WLAN mit MIMO und Bluetooth 4.1
  • USB 3.0, MIPI CSI- und DSI-Schnittstellen sowie mehrere GPIO-, I2C- und UART-Schnittstellen
  • Linux-basiertes Betriebssystem für IoT und intelligente Geräte
  • Erweiterte Unterstützung für Intel® RealSense-Kameras und -Bibliotheken

 

Das kostengünstigere Intel® Joule™ 550X-Modul bietet:

 

  • 1,5 GHz Quadcore Intel® Atom™ T5500-Hochleistungsprozessor mit 64 Bit
  • 3 GB LPDDR4-RAM und 8 GB eMMC-Speicher
  • Intel® HD-Grafik mit 4K-Videoaufzeichung und -anzeige
  • 11ac WLAN mit MIMO und Bluetooth 4.1
  • USB 3.0, MIPI CSI- und DSI-Schnittstellen sowie mehrere GPIO-, I2C- und UART-Schnittstellen
  • Linux-basiertes Betriebssystem für IoT und intelligente Geräte
  • Unterstützung für Intel® RealSense-Kameras und -Bibliotheken

 

Damit wird deutlich, dass der Intel® Joule™ direkt auf Entwickler abzielt, die Anwendungen entwickeln wollen, die mehr lokale autonome Intelligenz erfordern, statt alles über Cloud-Processing abzuwickeln.

 

Entwicklungskit Intel® Joule™ 570X

570X_Developer_Kit_bf60e3b294110eb9985efbf1a1e7e00d54d6ed52.jpg

Das Entwicklungskit enthält ein Joule-Modul auf einer Erweiterungsplatine, die dem Benutzer schnellen Zugriff auf folgende Komponenten ermöglicht:

  • USB 3.0 (1 Typ A- und 1 Typ C-Anschluss)
  • Micro-HDMI
  • microSD
  • 2 x 40-polige I/O-Steckverbinder 3,3 V
  • Integrierter Anschluss für Serial-over-USB-Debugging
  • 2 WLAN-Antennen
  • RTC-Batteriesteckverbinder
  • Lüfterstiftleiste

… und wird mit einem Kühlkörper und Montageteilen, einer Antenne für jede WLAN-Antenne, einer microSD-Karte und einem USB-Kabel Typ C auf Typ A geliefert. Bevor das neue Entwicklungskit in Betrieb genommen werden kann, werden jedoch noch einige weitere Komponenten benötigt.

Folgende Teile müssen Sie selbst bereitstellen:

  • Stromversorgung LPS oder Klasse 2, Ausgang 12 V, 3 A (mind.) mit Klinkenbuchse
  • Kabel Micro-HDMI auf Standard-HDMI, Stecker/Stecker
  • Kabel Micro-USB (Typ B) auf USB (Typ A) für die serielle Kommunikation mit der Platine
  • USB 3.0-Hub mit eigener Stromversorgung für Tastatur, Maus und USB-Sticks, da auf der Platine nur ein einziger USB-Anschluss Typ A vorhanden ist

Da keine dieser Komponenten im Entwicklungskit vorhanden ist, erspart es eine Menge Ärger, diese gleich zusammen mit dem Joule-Entwicklungskit zu bestellen – ich spreche hier aus Erfahrung ...

Betriebssystem

Wenn Sie alle erforderlichen Komponenten zur Verfügung haben und bereit sind, die Platine zum ersten Mal in Betrieb zu nehmen, werden Sie feststellen, dass für den Joule mehrere Betriebssysteme angeboten werden.

  • Ubuntu 16.04 LTS Desktop oder Core
  • Windows 10 IoT Core
  • Ostro™ Project Reference Linux für IoT

Das mit dem Yocto Project-Tool erstellte Ostro™ Project Reference Linux für IoT wird auf der Entwicklungsplatine vorinstalliert geliefert.

Weil ich mich in diesem Fall bereits dafür entschieden hatte, den Joule direkt mit meinem treuen Raspberry Pi 3 zu vergleichen, bot es sich an, Ubuntu Desktop zu verwenden, da ein Ubuntu Mate-Image für den Raspberry Pi existiert.

Das bedeutete, dass auf dem Intel® Joule™ ein BIOS-Reflash durchgeführt und ein bootfähiger USB-Stick bzw. eine bootfähige microSD-Karte erstellt werden musste, um Ubuntu 16.04 installieren zu können. Ich hatte einige Probleme mit meiner bootfähigen microSD-Karte, die ich aus Zeitgründen nicht weiterverfolgt habe (der Erstbootvorgang von diesem Gerät brach etwa nach der Hälfte der Zeit ab). Um voranzukommen, verwendete ich daher einen bootfähigen USB-Stick, der in den USB-Hub mit eigener Stromversorgung eingesteckt wurde. Diese zweite Konfiguration funktionierte reibungslos und ich konnte Desktop Ubuntu ohne Probleme installieren.

Leistungsvergleich

Nach einigen kleineren Anpassungen des Desktops an meine Wünsche wollte ich endlich herausfinden, welche quantifizierbaren Leistungssteigerungen mit einem Joule gegenüber dem Raspberry PI 3 möglich sind. Dazu verwendete ich das recht beliebte Linux-Leistungsvergleichsprogramm sysbench.

Sysbench ist eine Suite von Leistungsvergleichsprogrammen, das ursprünglich von MySQL-Entwicklern für den Leistungsvergleich von Datenbanksystemen erstellt wurde und uns ebenfalls einen schnellen Eindruck von der Leistung unserer eigenen handelsüblichen Systeme geben kann.

Die Installation kann auf beiden Platinen durch Eingabe des folgenden Befehls in einem Terminal erfolgen:

$ sudo apt install sysbench

Es steht eine ganze Reihe von Tests und Kombinationen zur Verfügung, mit denen wir uns beschäftigen könnten. Ich entschied mich für die Leistungsgrundlagen mit einem CPU-Leistungstest und einem Speicherübertragungstest.

CPU-Test

Beim Sysbench CPU-Test werden Primzahlen bis zu einer vorgegebenen Zahl berechnet (die Standardvorgabe ist 10.000). Dazu wird eine Standarddivision der Zahl durch alle Zahlen zwischen 2 und der Quadratwurzel der Zahl durchgeführt. Wenn die Zahl einen Rest von 0 ergibt (d. h. keine Primzahl ist), werden die Berechnungen bei der nächsten Zahl fortgesetzt. Dadurch wird die CPU mit ihren relativ begrenzten Möglichkeiten natürlich stark belastet, was aber eine recht gute Beurteilung ermöglicht, wie gut die allgemeine Zahlenverarbeitung funktioniert.

Da sowohl der Intel- als auch der Broadcom-Prozessor mit vier Kernen ausgestattet ist, erschien es sinnvoll, beide Tests zunächst mit einem einzelnen Thread und anschließend mit vier Threads durchzuführen, um festzustellen, wie sich die Aufteilung der Arbeitsbelastung auf die Gesamtleistung des jeweiligen Prozessors auswirkt. Zusätzlich wurde der Test mit einer Maximalzahl von 20.000 durchgeführt, um den Prozessoren die Möglichkeit zu geben, warm zu werden, und um zu sehen, was dabei passiert.

Test 1

Dieser Test wurde weitgehend mit der Standardeinstellung durchgeführt: Single Threading und bis zur Zahl 10.000.

$ sysbench –test=cpu run

 

Raspberry Pi-Ergebnis

RPi_Result_11_ad3a696b12e4eedec07ed80553d55a9f2dcc9645.png

 

Intel® Joule™-Ergebnis:

Joule_Result_1_3337f84f02b12dfcff317a13ba1c7a255f6ef6a1.png

 

Die für uns wichtige Kennzahl ist „total time“ unter „Test execution Summary“. Das Ergebnis mit 8,23 Sekunden beim Joule und 158,12 Sekunden beim Pi war ein ziemlich überzeugender Sieg für den Joule.

 

Test 2

Hier wurden für die gleiche Aufgabe vier Threads verwendet, um alle vier Kerne einzubeziehen.

$ sysbench --test=cpu --num-threads=4 run 

Raspberry Pi-Ergebnis

RPi_Result_2_bcf86219d8cecf0bae17be810cd64dcc30198b65.png

 

Intel® Joule™-Ergebnis:

Joule_Result_2_9d00729738a874263dd3b8271534d17cea984a0b.png 

Wie zu erwarten war, nimmt die Leistung bei beiden Prozessoren etwa um das Vierfache zu. Beim Joule wurden 2,31 Sekunden, beim Pi 39,50 Sekunden gemessen.

 

Test 3

Hier wurde die Belastung durch die Ermittlung der Primzahlen bis 20.000 erhöht, um den Prozessoren genügend Zeit zu geben, sich warm zu laufen.

 

Raspberry Pi-Ergebnis

RPi_Result_3_f0622b202e055c2088c9418f2df09f9fe5389365.png

 

Intel® Joule™-Ergebnis:

Joule_Result_31_3ea0ddb55d40251052ef1bf4a0dfc4db1ecf27ef.png

 

Ich habe ein Temperaturmessskript verwendet, das ich für dieses Experiment zusammengezimmert habe, um die Temperatur des Pi zu erfassen. Wer daran interessiert ist, kann das Skript am Ende dieses Artikels finden. Bei dieser Testgruppe war ein Raspberry Pi-Kühlkörper auf dem Broadcom-Prozessor montiert, um die thermische Situation für den Pi etwas auszugleichen. Trotzdem scheint die Leistung des Pi im Vergleich zum Joule stärker nachzulassen, wenn er länger belastet und dadurch wärmer wird. Beim kürzesten Test war der Pi 17 Mal langsamer, beim längeren Test aber fast 20 Mal langsamer.

Obwohl diese Tests lediglich einen Gesamteindruck der jeweiligen Prozessorleistung geben sollen, ist der Unterschied derart groß, dass die Schlussfolgerung vertretbar scheint, dass der höhere Preis des Joule angesichts der Rohzahlenverarbeitungsleistung gerechtfertigt ist.

 

Speichertest

Natürlich ist nicht nur die Zahlenverarbeitungsleistung für die Gesamtleistung eines Prozessors maßgeblich. Da die verarbeiteten Daten bei den meisten Anwendungen verschoben werden müssen, ist die Speicherbandbreite ein weiterer begrenzender Faktor für die Leistung.

Der Sysbench-Speichertest ordnet einen Zwischenspeicher zu und liest und schreibt anschließend alle Datenwort-Speicherorte in den Zwischenspeicher, bis die gesamte Zwischenspeichergröße gelesen bzw. geschrieben worden ist. Das wird so lange wiederholt, bis die gesamte Speichergröße erreicht ist.

Um für unsere Testkandidaten die gleiche Übertragungsmenge zu gewährleisten, haben wir einen Zwischenspeicher mit einer Größe von 1 Mbyte und eine Gesamtspeichergröße von 2 Gbyte verwendet:

$ sysbench –test=memory –memory-block-size=1M –memory-total-size=2G –num-threads=4 run

 

Raspberry Pi-Ergebnis

RPi_Result_4_2f9adfbcb2ebcfc094bc13dd4deeaf3d5fda6dfd.png

 

Intel® Joule™-Ergebnis:

Joule_Result_4_9e9ae0fae6c54329a47e683182e0edd370804c9c.png

 

Der Raspberry Pi konnte eine respektable Übertragungsrate von 2,5 Gbyte/s erreichen, wurde aber auch hier vom Joule mit 11 Gbyte/s deutlich übertroffen.

Es können auch andere Tests angewendet werden, z. B. für Dateiübertragungsgeschwindigkeiten, aber ich glaube, Sie sehen inzwischen, worauf das hinausläuft. Das Fazit ist wirklich, dass der Joule im Vergleich zum Raspberry Pi nicht zu teuer ist. Es handelt sich um ein Gerät mit ganz anderen Leistungsdimensionen, dessen Preis für dieses Leistungssegment durchaus konkurrenzfähig ist.

Jetzt wollen wir unserem Joule aber eine wirklich sinnvolle Aufgabe geben. Im nächsten Artikel werde ich mir die eigentliche „Superpower“ des Joule genauer ansehen – Bildverarbeitung – und eine RealSense-Kamera einbinden. Heute möchte ich demonstrieren, wie einfach die Anwendung im Bereich „Universalrechenanwendungen“ ist, denn es ist angenehm zu wissen, dass das Entwicklungskit vielseitig einsetzbar ist.

Drahtlose Relaisstation

Wenn Sie wieder einmal E-Mails von diesem sonnigen Plätzchen in Ihrem Garten aus senden möchten, können Sie Ihren Joule als drahtlose Relaisstation zur Erweiterung der Reichweite Ihres WLAN-Heimnetzwerks nutzen. Die Einrichtung kann so erfolgen, dass bei Bedarf ein kleines Skript ausgeführt wird – vorher müssen wir allerdings noch einige Vorbereitungen treffen.

requisites.

Wireless_Relay_Station_d268e82eba60addc1fd6e4d799ee9c997d2da867.png

 

USB_Wi-Fi_Adapter_e941c93a665845b46d1e79af6f12f3e0ef96d0e4.jpg

Für diese Konfiguration benötigen Sie einen USB-WLAN-Adapter, der in Verbindung mit dem integrierten WLAN des Joule verwendet wird. Ich verwende in diesem Fall ein superbilliges USB-WLAN-Modul Edimax EW-7811Un, das bei mir in einer Schublade verstaubte. Falls Sie eine schnellere Verbindung wünschen, können Sie einen USB 3.0-WLAN-Adapter verwenden, der 802.11ac unterstützt. Um sich Schwierigkeiten zu ersparen, sollten Sie allerdings darauf achten, dass ein offizieller Linux-Treiber vorhanden ist. Außerdem verwende ich einen USB C-auf-USB A-Adapter, um den USB C-Schluss der Entwicklungsplatine nutzen zu können. Das wäre besonders vorteilhaft, wenn Sie einen USB 3.0-WLAN-Adapter mit höheren Datenübertragungsraten verwenden.

Wir werden ein paar Standard-Linux-Tools für die Ansteuerung der Hardware verwenden: hostapd für die Konfiguration unseres WLAN-Adapters als drahtlosen Zugangspunkt und dnsmasq für die Ausführung der DHCP- und DNS-Dienste für Clients, die unseren Zugangspunkt nutzen.

Erste Schritte

Bevor wir fortfahren, ist es wahrscheinlich sinnvoll zu überprüfen, ob der integrierte WLAN-Adapter des Joule den von uns angestrebten Zugangspunktbetrieb überhaupt unterstützt. Um das herauszufinden, können wir Folgendes in das Terminal eingeben:

$ iw list

Es wird dann eine Liste der Attribute für jede drahtlose Schnittstelle ausgegeben, die iw finden kann. Diese sieht (im oberen Bereich einer recht langen Ausgabe) etwa wie folgt aus:

Wireless_Interface_94ed2e3c9bb36cbf4dbe4fff058de02bee18967d.png

 

Unter „Supported interface modes:“ sollte „AP“ angezeigt werden, was auch tatsächlich der Fall ist. Weiter oben unter „Supported Ciphers“ wird „TKIP“ und „CCMP“ angezeigt, was bedeutet, dass unser Zugangspunkt WPA2-Verschlüsselung nutzen kann, um zu verhindern, dass sich die Nachbarn anmelden und uns unserer Bandbreite berauben.

Treiber

Da der Edimax USB-WLAN-Adapter recht verbreitet ist, ist es nicht verwunderlich, dass die meisten Linux-Distributionen einen Plug-and-play-Treiber enthalten, der auch recht gut zu funktionieren scheint. Es gibt jedoch einen gemeldetenBug, der mit einem auf GitHub verfügbaren Open-Source-Treiber repariert werden kann (der zudem von Edimax empfohlen wird). Wir wollen also zunächst den korrigierten Treiber installieren, um sicherzugehen, dass alles ordnungsgemäß funktioniert.

Zuerst müssen wir git und dkms installieren, da diese in unserer Distribution nicht vorinstalliert sind:

$ sudo apt install git dkms

Nachdem dies alles installiert ist, können wir den Treiber von GitHub auf unseren Rechner klonen. Um Ordnung zu halten, neige ich dazu, Derartiges in einem separaten Verzeichnis unterzubringen:

$ mkdir Projects

$ mkdir Projects/wifi

$ cd Projects/wifi

$ git clone https://github.com/pvaret/rtl8192cu-fixes.git

DKMS (Dynamic Kernel Module Support) ermöglicht die Installation zusätzlicher Kernelmodulversionen. Zuerst fügen wir die „Fixes“ als DKMS-Modul hinzu:

$ sudo dkms add ./rtl8192cu-fixes

Anschließend wird das Treibermodul erstellt und installiert:

$ sudo dkms install 8192cu/1.10

…und die Modulliste aktualisiert:

$ sudo depmod –a

Jetzt wird das bestehende Kernel-Modul zur Blacklist hinzugefügt …

$ sudo cp ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/

… und die Energieverwaltung deaktiviert:

$ sudo cp ./rtl8192cu-fixes/8192cu-disable-power-management.conf /etc/modprobe.d/

Schließlich wird das System neu gestartet, um den neuen Treiber zu laden:

$ sudo reboot

Nach der Eingabe von ifconfig -a wird angezeigt, dass unsere schöne neue Netzwerkschnittstelle funktioniert:

Network_Interface_b7abe2530ab74b8670e65fc9a38eb305fccca7f5.png

 

Vorbereiten der Netzwerkschnittstellen

Obwohl die Einrichtung von hostapd nicht allzu schwierig ist, müssen einige Einschränkungen beachtet werden, damit es nicht zu Problemen kommt. Zunächst muss beachtet werden, dass hostapd nur korrekt funktioniert, wenn der Schnittstellentreiber auf dem mac80211-Framework basiert. Dadurch können nl80211-Userspace-Dienstprogramme verwendet werden, die Drahtlosbetriebsarten unterstützen, die über den Stationsbetrieb hinausgehen – in diesem Fall soll der AP-Modus verwendet werden. So können Sie überprüfen, welche Treiber verwendet werden:

$ sudo lshw –c network

Es wird angezeigt, dass die integrierte WLAN-Schnittstelle den iwlwifi-Treiber verwendet. Mit einer Treibertabelle kann festgestellt werden, ob der iwlwifi-Treiber mac80211-basiert ist, oder es können einfach die Treiberabhängigkeiten überprüft werden:

$ lsmod | grep iwlwifi

Es wird angezeigt, dass die Treiber tatsächlich auf mac80211 basieren:

Drivers1_94eb83a7f3e787c54a6292aa19319c8760cc3c8f.png

 

Die andere Überlegung betrifft einen Bug, der verhindert, dass hostapd initialisiert werden kann, wenn die Netzwerkschnittstelle vom Ubuntu-Netzwerkmanager verwaltet wird. Dieser Bug kann umgangen werden, indem der Netzwerkmanager von Anfang an daran gehindert wird, die Schnittstelle zu verwalten, die wir als Zugangspunkt verwenden möchten. Glücklicherweise lässt sich das ebenfalls ziemlich einfach arrangieren. In der Netzwerkschnittstellen-Datei angegebene Schnittstellen werden vom Netzwerkmanager ignoriert. Die Datei kann wie folgt geöffnet werden:

$ sudo nano /etc/network/interfaces

Sie müssen dann etwa Folgendes hinzufügen:

Network_Interface_2_93dbfd39062baee02d2ce08143d8178ffc7d6979.png 

In meinem Fall habe ich die Adresse des Zugangspunkts (10.15.15.1) so eingerichtet, dass sie leicht von der Zugangspunktadresse meines ISP-Routers zu unterscheiden ist. Außerdem kann der Netzwerkmanager explizit angewiesen werden, den Zugangspunkt zu ignorieren, indem seine MAC-Adresse (entspricht dem WHaddr-Wert in der Ausgabe von ifconfig –a) als „unmanaged“ deklariert wird:

$ sudo nano /etc/NetworkManager/NetworkManager.conf

Fügen Sie anschließend in der

[Schlüsseldatei] hinzu:

unmanaged-devices=mac:xx:xx:xx:xx:xx:xx

Dabei sind die x durch die MAC-Adresse des Geräts zu ersetzen:

Network_Interface_3_100a82b01b33ee7d0da8270060b5a3b91118d402.png

 

Nach einem Neustart sollten Sie feststellen, dass die Netzwerkverbindung zum Router jetzt durch das USB-Gerät statt durch den integrierten WLAN-Adapter hergestellt wird:

Network_Interface_41_335ae25c8d690c14eabec6e6b99c2534805879e2.png

 

Hurra! Die Netzwerkkonfiguration ist jetzt vorbereitet, sodass wir die Software installieren können, die die Drahtlosverbindung für uns herstellt.

Installieren von hostapd

Um den Zugangspunkt zu erstellen, kann hostapd wie folgt installiert werden:

$ sudo apt install hostapd

Im Anschluss an die Installation muss der Zugangspunkt konfiguriert werden. Zuerst müssen wir hostapd mitteilen, welche Konfigurationsdatei verwendet werden soll und wo diese zu finden ist:

$ sudo nano /etc/default/hostapd

Zwischen den Anführungszeichen nach „DAEMON_CONF=“ muss der Speicherort angegeben werden: /etc/hostapd/hostapd.conf

Daemon_b3130518489684a1070647e7f878ff736cc22459.png

 

Wenn Sie Ihre Konfiguration debuggen müssen, können Sie weiter unten in der Konfigurationsdatei den Daemon mit DAEMON_OPTS so einstellen, dass ausführlichere Informationen angezeigt werden:

hostapd1_292339e571607cf1dac2c58414d9a2148a8c7885.png 

OK, hostapd weiß jetzt, wo die Konfigurationsdatei zu finden ist, die jetzt allerdings noch erstellt werden muss:

$ sudo nano /etc/hostapd/hostapd.conf

hostapd_11_e5f087e212c73d984ee65a58eaf6869fb0bec10b.png

 

Hierbei handelt es sich um eine relativ kurze Konfiguration. Es gibt auch recht komplexe Möglichkeiten, in der Konfigurationsdatei anzugeben, was vom Zugangspunkt akzeptiert oder abgelehnt und wie die Verschlüsselung eingerichtet werden soll. Diese vollständig kommentierte Konfigurationsdatei enthält alle verfügbaren Optionen, falls Sie sich dafür interessieren.

Sie sollten unter „ssid“ den frei wählbaren Namen Ihres Zugangspunkts angeben. Ich habe den Hardware-Modus „g“ angegeben, da fast alle WLAN-fähigen Geräte diese Konfiguration nutzen können. Die Verschlüsselung ist ausschließlich auf WPA2 eingestellt. Die „passphrase“ muss Ihr frei wählbares Passwort für den Zugangspunkt enthalten.

Es ist zu beachten, dass sich hostapd bei der Ausführung mit einer Meldung wie der folgenden über den Ländercode beschwert:

..wlp1s0: interface state UNINITIALIZED->COUNTRY_UPDATE

Das hängt mit dem CRDA (Central Regulatory Domain Agent) zusammen. Da dieser keinen Einfluss auf die Arbeitsweise des Zugangspunkts hat, kann dies ignoriert werden.

Damit ist der Zugangspunkt bereit. Jetzt müssen wir den Geräten, die eine Verbindung mit unserem Zugangspunkt herstellen, IP-Adressen zuweisen können. Dazu benötigen wir DHCP und Zugang zu einem DNS-Server.

Einrichten von dnsmasq

Wir verwenden dnsmasq als DNS- und DHCP-Server. Die Installation wird wie folgt durchgeführt:

$ sudo apt install dnsmasq

Nachdem diese Installation durchgeführt worden ist, muss eine weitere einfache Konfigurationsdatei eingerichtet werden. In der Regel speichere ich die bestehende Datei, bevor ich meine eigene Datei erstelle, da sie in der Regel viel klarer zu lesen ist:

$ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

Anschließend erstellen wir unsere eigene Konfiguration:

Config1_97575fa116f232e59b02f3643bf57362e7256422.png

 

Dies ist eine weitere relativ kurze Konfiguration, die aber für unsere Zwecke ausreicht. Wenn Sie weitere Optionen erkunden möchten, finden Sie in der ursprünglichen Konfigurationsdatei entsprechende Kommentare.

Für diese Konfiguration gilt:

server – listet einen oder mehrere öffentliche DNS-Server für nichtlokale Abfragen auf. In diesem Fall haben wir OpenDNS- und Google-Server verwendet.

no-hosts – hält dnsmasq davon ab, die lokale Datei /etc/hosts für DNS-Lookups zu verwenden.

dhcp-range – ist der IP-Adressenbereich, den unser Server den Verbindungsgeräten anbietet. 8h bedeutet, dass verbundenen Hosts eine Nutzungsdauer von acht Stunden für die zugeteilte IP-Adresse zur Verfügung steht.

dhcp-option 3 – ist die Gateway-Adresse unseres neuen lokalen Gerätenetzwerks.

dhcp-option 6 – ist die DNS-Serveradresse für unser lokales Netzwerk.

Die Protokolle erleichtern die Überprüfung, ob alles funktioniert.

Verknüpfen aller Komponenten

Nachdem die Software komplett eingerichtet worden ist, muss lediglich der Verkehr vom Zugangspunkt zum Internet eingerichtet werden. Dies erfolgt mit den iptables-Firewall-Regeln. Ich habe hierzu ein Skript erstellt, weil der Joule nicht als drahtloser Repeater starten soll. Es soll aber möglich sein, ihn jederzeit problemlos zu aktivieren:

#!/bin/bash

 

MONITOR_DEVICE=wlp1s0

OUTPUT_DEVICE=wlx80xxxxxxxxxx

 

# Catch ctrl-c for clean exit

trap ctrl_c INT

function ctrl_c(){

 echo Killing AP processes...

 killall dnsmasq

 killall hostapd

}

 

echo Bringing up Access Point interface...

ifconfig $MONITOR_DEVICE 10.15.15.1/24 up

# Note that dnsmasq will already be running

echo Setting routing tables

 

sysctl -w net.ipv4.ip_forward=1

 

iptables -t nat -A POSTROUTING -o $OUTPUT_DEVICE -j MASQUERADE

iptables -A FORWARD -i $MONITOR_DEVICE -o $OUTPUT_DEVICE -j ACCEPT

 

echo Starting Access Point...

hostapd /etc/hostapd/hostapd.conf -B

 

Durch die Option –B erfolgt die Ausführung von hostapd im Hintergrund. Falls Sie während der Ausführung im Terminalfenster sehen möchten, was vor sich geht, lassen Sie diese Option weg. Mit [Ctrl] [C] kann das Programm gestoppt werden. Dieser Befehl wird vom Skript abgefangen und zum sauberen Löschen aller anderen Prozesse genutzt.

Was wir hier tun, ist eine Form von Network Address Translation (NAT) mit der Bezeichnung IP-Masquerading. Dabei werden alle IP-Verbindungen unseres Zugangspunkts zum integrierten WLAN-Adapter des Joule geleitet, sodass dieser Adapter die einzige IP-Adresse ist, die mit dem Router verbunden ist und alle an den Router gesendeten Datenpakte von dieser einzigen Quelle zu kommen scheinen. Unter dem Link Masquerading ist eine ausführlichere Erläuterung zu finden. Es handelt sich um einen älteren Text, der aber eine gute Darstellung der Vorgänge enthält.

Jetzt ist es nur noch erforderlich, das Skript (das ich „ap“ genannt habe) ausführbar zu machen und den Repeater zu aktivieren:

$ chmod +x ap

$ sudo ./ap

Jetzt sollten Sie über einen eigenen Zugangspunkt verfügen. Wenn Sie ein Tool wie WiFi Commander auf einem Windows-Laptop verwenden, sollte zu sehen sein, wie der Zugangspunkt seine Präsenz im Spektrum ausstrahlt:

Spectrum_1a34c89cf4355bfd6144bde12deb6e34bd98c340.png

 

Ich habe die anderen (92) Zugangspunkte in meiner Nähe ausgefiltert, um mehr Klarheit zu schaffen. Sie können den Zugangspunkt auch durch Anschließen von Geräten testen, z. B. eines iPhones:

iPhone1_9f9b84dede0614350e640d36319cfba1d921a645.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ja! Wir sind jetzt verbunden und können drahtlosen Internet-Zugang außerhalb der normalen Reichweite unseres Routers genießen. Wenn der Zugang nicht mehr benötigt wird, kann mit dem Skript „rk“ alles heruntergefahren werden.

Fazit

Der Umgang mit dem Intel® Joule™ macht Spaß, ebenso wie der Umgang mit vielen der kostengünstigen Bildungs-/Entwicklungskit-Platinen auf dem Markt. Er kann problemlos für die gleichen Arten von Anwendungen eingesetzt werden, allerdings besteht der Unterschied darin, dass der Joule über enorme Rechenleistung für praktische Anwendungen verfügt, die viel lokale Rechenleistung erfordern und bei denen entweder keine Cloud-Konnektivität verfügbar oder diese für die jeweilige Anwendung nicht erwünscht ist.

Mir hat die Einarbeitung in die Joule-Konfiguration Spaß gemacht und ich freue mich schon darauf, damit in Zukunft einige andere Dinge auszuprobieren.

Mark completed his Electronic Engineering degree in 1991 and worked in real-time digital signal processing applications engineering for a number of years, before moving into technical marketing.
DesignSpark Electrical Logolinkedin