Montag, 16. Oktober 2017

MAX! Cube Umbau zu 4-fach Netzwerk CUL (CUN)

Es erfreut das Bastlerherz, was findige Tüftler so alles mit der Welt teilen. So auch die Portierung der CUL Firmware auf die Hardware des MAX! Cube. Damit wird der Cube ein starker Konkurrent gegen den einstmals günstigen USB-CUL von busware.de.

Doch damit nicht genug, der Benutzer Telekatz aus dem FHEM Forum hat in der Portierung gleich ein Multiplexing für bis zu drei zusätzliche Tranceiver vorgesehen.
MAX! Cube


MAX! Cube Unterseite
MAX! Cube Unterseite
Platine Oberseite mit angelötetem 433MHz Tranceiver
Platine Oberseite mit angelötetem 433MHz Tranceiver
Platine Unterseite
Platine Unterseite
Ich hatte zum Testen einen dritten CC1101 mit 868MHz angebaut, fand dafür aber keinen sinnvollen Verwendungszweck, da ich ausschließlich MAX! und Intertechno-kompatible Geräte verwende.
Wollte man tatsächlich drei zusätzliche CC1101 anschließen, so werden noch weitere Pins benötigt, welche man wegen fehlender Herausführung direkt am Prozessor abgreifen müsste (100pin LQFP Package!!!). Nur wenn man keine SlowRF Geräte empfangen wollte, könnte man auf die zusätzlichen Pins verzichten und den GDO2 des CC1101 unbeschaltet lassen.

Auf Debian Stretch lässt sich der aktuelle Stand (1.26.01) direkt kompilieren (mit Jessie hatte ich keinen Erfolg!).
apt-get install bossa-cli minicom gcc-arm-none-eabi

Das Repository findet sich auf Github
git clone https://github.com/heliflieger/a-culfw.git

Ich habe neben der Boardkonfiguration auch noch (regelkonform) die Definition der 1% Regel auf 1h (3600s) erweitert. Die ursprüngliche Implementierung beschränkt sich auf maximal 9s Sendezeit pro 0,25h, was insbesondere bei Ersteinrichtungen oft zu Problemen führt.
wget http://loetzimmer.de/patches/cube.patch
patch -p0 < cube.patch

Anschließend wechselt man in das Verzeichnis
cd a-culfw/culfw/Devices/CUBe/

und erstellt eine Makefile.local
ARMBASE = /usr/lib/arm-none-eabi

INCLUDEPATH = $(ARMBASE)/include
LIBPATH = $(ARMBASE)/lib
TOOLPREFIX = arm-none-eabi-

Selbiges wird in das bootloader/ Verzeichnis kopiert.
Nun kann die Boarddefinition in board.h noch an die eigenen Bedürfnisse angepasst werden. Ich habe die CC1101 Out Pins der zwei Zusatzmodule auf PA24/PA25 gelegt und die Chip Selects und Inputs jeweils paarweise auf PA5/6 und PA10/11.
Nun kann die Firmware kompiliert werden:
make CUBEx4_BL # 4-fach Cube
make CUBE_BL   # 1-fach Cube ohne zusätzliche Tranceiver

und im bootloader/ Verzeichnis (die fertige Datei landet im CUBe/ Verzeichnis)
make bootloader_CUBE.bin

Um den Bootloader zu schreiben, muss der Originalbootloader gelöscht werden (Achtung: das originale MAX! System ist damit unwiederbringbar verloren!). Dazu verbindet man einfach die Kontakte JP1 z.B. mit einem Büroklammer und schaltet den Cube kurz ein. Beim erneuten Starten erwartet das System automatisch einen Bootloader:
~/a-culfw/culfw/Devices/CUBe$ bossash
Press Ctrl-D or enter "exit" to end session.
Enter "help" to display a command list.
bossa> scan
bossa> write bootloader_CUBE.bin
bossa> bootf true
bossa> exit

Jetzt muss der Cube ein letztes Mal per USB neu verbunden werden, um mit Minicom per X-Modem die CUBEx4_BL.bin zu flashen. Dazu muss die Reset-Taste an der Unterseite des Cube während des Ansteckens gedrückt gehalten werden.