CC1101 an RockPi (Armbian)

Hi @pmayer,

Habe dir schon mal im letzten Dezember geschrieben (auf allgeeek Seite comment-1382, sorry nur 2 Links erlaubt), dann aber doch nicht die Zeit dafür gehabt weiter zu basteln. Jetzt bin ich wieder am Start und wollte das Problem beheben, wenn es geht.
Wie schon vorher erwähnt, ich habe ein rockpi 4b Einplatinenrechner. Die GPIOs sehen wirklich ähnlich aus. (Rockpi4/hardware/gpio - Radxa Wiki vs https://docs.microsoft.com/de-de/windows/iot-core/media/pinmappingsrpi/rp2_pinout.png), man soll nur das spidev 1 anstatt 0 nutzten.
Das SPI habe ich, mit spidev_test , getestet, und es läuft einwandfrei.
homematicbidcos.conf sieht wie folgt aus:

#######################################
########## TI CC1101 Module  ##########
#######################################

## The device family this interface is for
[TI CC1101 Module]

## Specify an unique id here to identify this device in Homegear
id = My-CC1101

## When default is set to "true" Homegear will assign this device
## to new peers.
default = true

## Options: cul, cc1100, coc, cunx, hmcfglan, hmlgw, hm-mod-rpi-pcb, homegeargateway
deviceType = cc1100

device = /dev/spidev1.0

## Default: responseDelay = 95
## Should be "95" for CUL or COC, "100" for TI CC1101 and "60" for HM-CFG-LAN or HM-LGW
responseDelay = 100

## The interrupt pin to use. "0" for GDO0 or "2" for GDO2.
## You only need to connect one of them. Specify the GPIO
## you connected the interrupt pin to below.
interruptPin = 0

## The GPIO GDO0 or GDO2 is connected to. Specify which GDO to use above.
gpio1 = 157

Und leider kommen die folgende Fehler:

06/08/22 10:50:22.295 Module HomeMatic BidCoS: TI CC110X "My-CC1101": Error (check) writing to register 31.
06/08/22 10:50:22.296 Module HomeMatic BidCoS: TI CC110X "My-CC1101": Connection to TI CC1101 closed unexpectedly... Trying to reconnect...

Das einzige was unterschiedlich ist, ist die GPIO Zuweisung, GPIO 25 wird zu GPIO 157 anscheinend, da GPIO4_D5 = 432 + 38 + 5 = 157 für rock pi ist.

Ich benutzte dein RPi SPI Adapter v0.3.

Hast due eine Idee voran es liegen kann?

Danke und Grüß,
Artur

Sers Artur,

hast du mir mal das Pinout von dem RockPi und wie du es angeschlossen hast?
Der GPIO wird nur zum umschalten der Empfangs-/Senderichtung benötigt. Das Initialisieren sollte also auch mit falschen GPIO funktionieren.

Gruß,
p

Das wäre meine aktuelle Verbindung (genau so wie man auf einem Raspberry Pi anschließen würde)

und Pinout meinst du das:

Meine aktuelle Vermutung ist das udev nicht richtig konfiguriert ist. Muss da etwas in der Richtung spi stehen? z.B.:

SUBSYSTEM=="spidev", GROUP="spi", MODE="0660"

oder

SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c '\
        chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\
        chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\
        chown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\
'"

Übringes gpio und spi groups waren nicht mal angelegt, ich habe die selber angelegt und homegear da hinzugefügt.
Aktuell habe ich :

~$ groups homegear
homegear : homegear dialout spi gpio

Fehlt da etwas?

übrigens ich benutze armbian (" Welcome to Armbian 22.08.0-trunk Bullseye with Linux 5.15.44-rockchip64" )

~$ uname -a
Linux rockpi-4b 5.15.44-rockchip64 #trunk SMP PREEMPT Wed Jun 1 13:03:36 UTC 2022 aarch64 GNU/Linux

Danke übrigens für die schnelle Rückmeldung!

Hmm, auf nem Armbian hatte ich das auch mal am laufen. Aber ich glaube ich hab da einfach per armbian-config den SPI eingeschaltet und dann war gut.

SPI1_TXD ist dann SPI0 MOSI(Master Out, Slave In), siehe https://pinout.xyz
Sollte also passen. GPIO25 wird GPIO4_D5.

Für den NanoPi hatte ich von @sathya mal folgenden Formel zur Umrechnung der GPIO’s bekommen: <pos letter> - 1 * 32 + <pin no>. Das sollte aber 157 sein.

Die einzige zusätzliche Warnings dass ich in dem log gefunden habe, sind:

06/08/22 14:08:08.991 Module HomeMatic BidCoS: Info: Central address set to 0xFDCC17.
06/08/22 14:08:08.992 Loading XML RPC devices...
06/08/22 14:08:08.992 Warning: configParameters with id "config" does not exist.
06/08/22 14:08:08.997 Warning: variables with id "custom_ch7_values" does not exist.
06/08/22 14:08:08.998 Warning: configParameters with id "config" does not exist.
06/08/22 14:08:08.999 Warning: variables with id "custom_ch7_values" does not exist.

Vielleicht gibt das auch ein Hinweis

Kann es sein dass mein Chip defekt ist? Leider gibt gerade im Shop keinen Verfügbaren Chips, sonst hätte ich es gekauft…

Ich bin weiter gekommen in meiner Recherche. Im https://github.com/Homegear/Homegear-HomeMaticBidCoS/blob/master/src/PhysicalInterfaces/TICC1100.cpp, der einzige Register der nicht die erwartete Wert zurückschickt ist WOREVT0 = 0x1F,. Bei dem bekomme ich 0x0B anstatt das erwartete 0x6B. Ich habe den Code zum Spaß geändert so das den Register geschrieben aber das zurückgegebene Wert ignoriert wird. Und homegear hat gestartet, allerdings mit einem Warning

06/08/22 19:32:02.229 Module HomeMatic BidCoS: TI CC110X "My-CC1101": Debug: BidCoS packet received, but CRC failed.

Also nicht wirklich ermutigend.
Wie leider erwartet, ich kann keinen Gerät pairen, da ist etwas immer noch schief.

Da das die andere Registers scheinen gut zu funktionieren, ich tendiere mehr und mehr zu glauben dass es einfach um einen defekten CC1101 geht. Wäre aber wirklich froh wenn ich mich irre :slight_smile:

Danke für deine Hilfe soweit und ich hoffe dass du da eine optimistischere Idee hast.

Gruß,
Artur

Nach langen Untersuchungen ist das Problem endlich gelöst.

Erstmal vielen Dank @pmayer für deine Unterstützung, ohne deine Hinweise und das neue CC1101 hätte ich es nicht hinbekommen.

Das Problem mit dem Rockpi 4b v1.6 (und vermutlich ab v1.4) war, dass an SPI1 auch eine interne SPI Flash angelötet ist.
Ich habe naiv gedacht, dass man nicht das SPI Flash betreibt, wenn man mit DT Overlays die externe spidev1.0 anschaltet. War aber leider nicht den Fall, so war bei mir das CS Pin immer mit dem internen SPI Flash verbunden.

Sobald ich mich getraut habe, das SPI Flash zu entlöten, hat alles funktioniert.

Ich hoffe, dass die Info weiter hilft. Wenn jemand eine Lösung findet, ohne Hardware Angriff, wäre es sogar besser, für mich ist es aber zu spät.

Grüß,
Artur

1 Like