Der YARD Stick One ist ein kompakter "Hardware Defined Radio", der im UHF-Band senden und empfangen kann. Er kann als eine Art Break-out Board (BoB) betrachtet werden, aber mit einer USB-Schnittstelle, die die Verwendung auf größeren Hosts wie PCs und Raspberry Pis ermöglicht. Der Yard Stick One wird mit USB-Software vorgeladen in seinem 8051-Kern geliefert. Das Radio wird durch das Schreiben einiger Dutzend Konfigurationsregister gesteuert, aber die Python-Middleware kann viele Details abstrahieren.

YARD Stick One unterstützt Senden und Empfangen

Der Hauptvorteil des YARD Stick One besteht darin, dass er eines der günstigeren Geräte (im Vergleich zum HackRF oder LimeSDR) ist, das auch senden und mehr oder weniger "plug-and-play" funktioniert. Die üblichen, kostengünstigen Geräte wie die RTL SDR-Dongles können nur empfangen.

Da alle Low-Level-Funktionen von einem CC1111-Chip implementiert werden, ist die Verwendung des Radios eine Frage des korrekten Schreibens der Konfigurationsregister. Der CC1111 ist auf komplexe Layer-2-Protokolle ausgerichtet, mit Funktionen wie Synchronisationswörtern, Framing, Interleaving und Scrambling. Da der CC1111 als SoC für kommerzielle RF-Anwendungen konzipiert ist, ist die Verwendung des YARD Stick One für Signalanalyse sehr begrenzt. Es ist weniger frustrierend und günstiger, ein SDR zu verwenden, es sei denn, das zu testende System verwendet einen ähnlichen SoC.

Der YARD Stick One wird nur von rfcat, einer Python-basierten Middleware, unterstützt, die die am häufigsten verwendeten Optionen in einer Art beschreibender Methoden abstrahiert. Für Feinabstimmungen bietet rfcat auch den Zugriff auf Rohregistereinträge.

Wie geliefert ist das Gerät eine nackte Platine und muss entsprechend behandelt werden. Drittanbietergehäuse sind erhältlich.
Der Begriff "Sub 1 GHz" ist etwas breit gefasst; der YARD Stick One ist durch das TI CC1111-Radio begrenzt, das die unteren UHF-ISM-Bänder von 300-928 MHz abdeckt. Bemerkenswerterweise wird das 13,56-MHz-Band, das für RFID verwendet wird, nicht abgedeckt.

Der YARD Stick One funktioniert auf Linux etwas stabiler als auf Windows 10. Windows erkennt das Gerät oft überhaupt nicht, aber Linux kommt damit davon, das Gerät mehrmals aus- und wieder einzustecken.

Installation der Software

Die Verwendung des YARD Stick One erfordert ein gutes Verständnis der OSI-Schichten 1 und 2. Einige Python-Kenntnisse und Vertrautheit mit dem vorgesehenen Betriebssystem sind ebenfalls von Vorteil, um Installationsprobleme auszuräumen. Die in Elektor Shop empfohlene Software wurde auf Windows 10, Kali und Ubuntu 18 installiert.
 
Die Installation von rfcat auf Linux mit Python 3.10 funktionierte gut. Der einzige Unterschied zur Dokumentation war, dass rfcat mit folgendem Befehl gestartet werden musste:
 
./rfcat

Im Falle eines "Fehler in resetup()", das Gerät ausstecken und wieder einstecken.

Windows 10: Installieren Sie Python nicht über den Appstore, da es die Dateiberechtigungen durcheinander bringt, sondern installieren Sie es manuell für alle Benutzer. Zusätzlich:
 
pip install Cython

Installation mit Administratorrechten (siehe wo die Linux-Anweisungen sudo erfordern). Und haben Sie VC >14 installiert.

Erforderliche Anpassung, wenn Sie eine Fehlermeldung über "collections not callable" erhalten: Fügen Sie .abc in C:\Programme\Python310\Lib\site-packages\pyreadline\py3k_compat.py Zeile 8 hinzu:
 
        return isinstance(x, collections.abc.Callable)

pyreadline soll nur für Windows erforderlich sein.

Installieren Sie den libusb-win32-Treiber. Der einfachste Weg ist wahrscheinlich die Verwendung von "Zadig", das normalerweise mit SDR# geliefert wird. Wenn das Gerät fehlt, erhalten Sie die Ausnahme "No Dongle Found" von rfcat.

Im Falle einer "ChipconUsbTimeoutException", das Gerät ausstecken und wieder einstecken.

Alles in allem ist die Installation und Verwendung unter Windows 10 etwas kniffliger als unter Linux.

Der in CC1111 verwendete Controller ist eine MCS51-Variante und benötigt einen SDCC-Compiler Version 3.5 oder niedriger. Hierzu ist etwas manuelle Arbeit bei der Installation erforderlich, da die aktuelle Version 4.x ist. Viele Benutzer werden jedoch nur die rfcat-Firmware verwenden.

Verwendung des YARD Stick One

Das CC1111-Radio erledigt alle Low-Level-Arbeiten, fügt und entfernt Vor- und Nachambeln, Synchronisationswörter, CRC sowie Modulation und Demodulation hinzu. Das Radio muss vor der Verwendung vollständig konfiguriert werden, da die Reset-Konfiguration nutzlos ist. Das Schreiben eines kleinen Python-Programms wie in [5] beschrieben spart viel Tipparbeit und Fehler.

 
yard stick one image002.png
Abbildung 1: Rfcat-Spektrumanzeige.

Rfcat kommt auch mit einer Spektrumanzeige. Das zu "Analyser" zu nennen, ist etwas übertrieben. Die meisten einfachen Geräte haben eine begrenzte Bandbreite und einen begrenzten Dynamikbereich im Gegensatz zu den großen Brocken wie dem HP141 oder HP181, die eine Breite von 1 GHz bei einem dynamischen Bereich von 80 dB anzeigen können.

Um den YARD Stick One als Empfänger zu verwenden, müssen die Layer-1- und Layer-2-Eigenschaften korrekt konfiguriert sein, oder das Radio ignoriert das Paket. Zur Analyse eines unbekannten Signals wird ein zusätzliches SDR benötigt, das billigste Hardware dafür sind die RTL-Dongles. Neben der Verwendung von GNU Radio und Audacity, wie in [3] gezeigt, bietet der Universal Radio Hacker einen integrierteren Arbeitsablauf für die Signalanalyse und Wiedergabe.

Alternativ kann die Einstellung des Radiochips des Peers über die Hardware-Schnittstelle geschnüffelt werden, wenn der Typ des Chips bekannt ist, wie in [1] gezeigt.

Die Verwendung des YARD Stick One als generischer Empfänger ist ziemlich umständlich: Bei Verwendung zu generischer Einstellungen wird viel Rauschen empfangen, bei zu engen Einstellungen wird alles herausgefiltert. Es könnte mit einem variablen Abschwächer am Eingang funktionieren, aber ich hatte keinen zur Hand.

Zur Unterstützung bei der Konfiguration der vielen Register des CC1111 hilft das Dienstprogramm SmartRF Studio von TI. Die berechneten Werte können mit der entsprechenden setXxx(value)-Funktion auf den YARD Stick One geschrieben werden.

 
yard stick one image003.png
Abbildung 2: Symbolansicht.

Jedes Datenbit besteht aus vier Symbolen, eine 0 wird als 1000 und eine 1 als 1110 übertragen. Deshalb muss dies an den YARD Stick One als 8e88888888888888888e8e8e8 gesendet werden. Ein Symbol dauert 0,484 ms, daher muss die Baudrate auf 2744 eingestellt werden.

 
yard stick one image004.png
Abbildung 3: Datenansicht.

Dokumentation

Die Dokumentation, auf die der Elektor-Shop verweist, ist sehr knapp gehalten. Das von Great Scott Gadgets angegebene Forum ist von begrenztem Nutzen. Das rfcat-Git-Repository gibt viele Informationen zum Bau und zum Herunterladen der YARD-Stick-One-Firmware.

Es gibt einige Tutorials im Internet, siehe zum Beispiel [3] und [4]. Bitte passen Sie diese an die lokalen Regeln für das ISM-Band an.

Fazit

Der YARD Stick One ist für das, was er bietet, nicht billig und hat eine ziemlich steile Lernkurve. Die Software ist instabil und unzureichend dokumentiert. Für die Analyse ist ein einfacher SDR-Empfänger eine viel bessere Wahl. Zum Senden gibt es einen generischen SDR-Transceiver für €150 mehr (z.B. HackRF One oder Adalm Pluto).

Der YARD Stick One könnte nützlich sein, wenn man sich auf die spezifischen Protokolle konzentriert, die von dieser Familie von Radio-SoCs unterstützt werden (siehe [1] und auch die IM-Me, wie auf der Elektor-Website erwähnt). Für dedizierte Anwendungen könnte man ein CC111x Breakout-Board aus China in Verbindung mit einem Arduino in Betracht ziehen, was die umständliche USB-Kommunikation vermeidet.

Glossar

Begriff Erklärung
ASK Amplituden-Shift-Keying
ISM Industrial Scientific Medical. Radio-Sender, die ohne Lizenz verwendet werden können
OOK On Off Keying, ASK mit 100% Modulation.
PWM Pulsweitenmodulation
RTL Realtec
SDR Software-definiertes Radio
SoC System on a Chip.
UHF 300 – 3000 MHz

Referenzen