CUNX flashen

Begonnen von Shardan, 05 November 2016, 19:15:09

Vorheriges Thema - Nächstes Thema

Shardan

Hallo zusammen,

nach einiger Probiererei ist das Flashen des CUNX gelungen.

Die Anleitung dazu:

Am einfachsten geht das mit einem Linux-Rechner. Hier verwende ich ein SuSE Linux "Leap 42.1".

Den CUNX noch nicht anschließen!

Zunächst braucht man das Programm "dfu-programmer"
Bei SuSE kann es schlicht per YAST installiert werden.

Das Hex-File zum Flashen kann beim Hersteller des CUNX geladen werden:
https://github.com/tostmann/culfw/tree/culfw-v2.x/Devices/CUNX

Das flashen geht am einfachsten in einem Terminalfenster:

Den Download von github in ein Verzeichnis entpacken (falls man das ganze Repository geladen hat) und in das Verzeichnis "Devices/CUNX" wechseln.
Falls man nur das CUNX.hex geladen hat, in das Verzeichnis wechseln, in dem die Datei steht.
Wichtig ist: Man muss in dem Verzeichnis stehen, in dem das CUNX.hex file liegt, oder ggf. in dem Befehl (Siehe unten) den Pfad zu der Datei angeben!

Nun das USB-Kabel an den CUNX anschließen,
die Taste zwischen USB und Netzwerkanschluß gedrückt halten und das USB Kabel bei gedrückter Taste in den Rechner einstecken.

Das gedrückt Halten der Taste beim Einschalten / Einstecken setzt den CUNX in den Flash-Modus!

Nun kann man mit den Befehlen
dfu-programmer atxmega128a4u erase
dfu-programmer atxmega128a4u flash CUNX.hex

den Flashvorgang auslösen, das geht innerhalb von Sekunden.

Nun kann man den CUNX vom USB trennen, über ein USB-Netzteil versorgen und per Ethernet aus FHEM ansprechen.

Unter Windows hat sich die Programmierung als etwas hakeliger herausgestellt.

Hierzu verwende ich das Programm FLIP von Atmel: http://www.atmel.com/tools/FLIP.aspx
FLIP hat aber ein kleines Treiberproblem. Steckt man den CUNX mal einfach so an, wird ein Treiber geladen,
aber es funktioniert nichts. Im Geräte-Manager erscheinen zwei "CUL868" Devices, da bei mir ein zweites "Pigator" Modul im CUNX steckt.
Der bei FLIP mitgelieferte Treiber lässt sich dafür nicht installieren.

Der Download des CUNX.hex ist oben schon beschrieben, bitte ebenso verfahren, downloaden und auspacken.

Zuerst den CUNX ohne Tastendruck anstecken.
Windows versucht nun 2 (bei gestecktem Pigator-Modul 3) Treiber zu installieren.
Der erste Treiber läuft durch, weitere Treiber schlagen fehl.
Den CUNX wieder abstecken.

FLIP downloaden und installieren

Die notwendigen Treiber installiert man nun mit einem kleinen Kniff:
- Den CUNX mit gedrückter Programmiertaste (zwischen USB und Ethernet-Anschluss) an den PC anstecken.
- jetzt erscheint ein einzelnes unbekanntes Device im Gerätemanager unter "Other devices"! (nicht CUL868, dann war die Taste nicht gedrückt!)
- das Device im Gerätemanager rechtsklicken und die Treiberinstallation manuell durchführen.
- Treiber liegen bei Win7-64 unter
   C:\Program Files (x86)\Atmel\Flip 3.4.7\usb
   bzw bei Win7-32
   C:\Program Files\Atmel\Flip 3.4.7\usb bei Win7-32
- Im Gerätemanager erscheint das Device nach der Treiberinstallation als ATxmega128a4u

- FLIP starten
- Erstes Icon oben links,die CPU auswählen: ATxmega128A4U
- Zweites Icon: Verbindung, USB auswählen. In der folgenden Abfrage "Open" anklicken, um die Verbindung zu öffnen. (Fehlermeldung? Siehe unten!)
- Mit dem dritten Icon von rechts das CUNX.hex-File auswählen.
- In der linken Spalte alle vier Optionen anhaken (Erase, Blank Check, Program, Verify)
- Unten rechts den Haken bei "Reset" ggf entfernen.
- "Run" anklicken zum Flashen.
Auch hier geht der Vorgang zügig über die Bühne.
CUNX trennen und mit USB-Netzteil und Ethernetverbindung wieder starten.

Sollte bei dem Versuch, die USB-Verbindung herzustellen, statt der "Open"-Abfrage eine Meldung
"AtLibUsbDfu.dll nicht gefunden" erscheinen, fehlt die Pfadangabe zu der DLL in der "Path"-Umgebungsvariable.

In dem Fall geht man wie folgt vor:
- Windows-Taste + Pause --> Erweiterte Systemeinstellungen --> Umgebungsvariablen
- die Variable PATH anklicken
- "Bearbeiten..."
- unter "Wert der Variablen" den Pfad angeben:
(Win7-64)
C:\Program Files (x86)\Atmel\Flip 3.4.7\bin
bzw (Win7-32)
C:\Program Files\Atmel\Flip 3.4.7\bin


Happy flashing
Shardan
FHEM auf Celeron-PC
CUNX mit Pigator, 433 + 868 MHZ.
MAX!-HK-Ventile, ESP8266-Sensoren und -Aktoren
Schaltsteckdosen IT / NetIO230B / Netio4

xgadscu

#1
Hallo zusammen,

nach einer Support-Anfrage bei busware.de habe ich es geschafft, das Pigator Modul PIM CC1101 433 MHz am CUNX mit der alternativen CUL-Firmware a-culfw zu flashen. Nun kann ich auch über dieses IO-Device Intertechno senden und empfangen. Ich hatte dazu eine eMail-Kommunikation mit Herrn Tostmann von busware.de. Er hat es schließlich auf folgende kurze Formel gebracht:

echo pb > /dev/ttyACM0; avrdude -p atmega1284p -P /dev/ttyACM1 -c avr109 -U flash:w:firmware.hex

Ich habe den Flashvorgang auf einem Ubuntu-16.04-Desktop-System durchgeführt und will nun versuchen, das Ganze ein wenig zu erklären:

Voraussetzungen:
- Falls avrdude noch nicht installiert ist:
sudo apt-get install avrdude

- Der angemeldete User muss unbedingt in der Gruppe dialout sein. Ansonsten bekommt man keinen Zugriff auf das Device.
sudo usermod -a -G dialout <userid>

Vorbereitungen:
- Die a-culfw-Firmware von https://www.mediafire.com/folder/iuf7lue8r578c/a-culfw herunterladen und das File CSM.hex aus dem Unterverzeichnis PIGATOR in ein eigenes Verzeichnis bringen (bei mir:  ~/Downloads/a-culfw).
- cd in dieses Verzeichnis
- Den CUNX vom LAN abklemmen und per USB-Kabel mit dem Linux-Rechner verbinden. Dabei explizit nicht (!!!) die Taste zwischen USB und Netzwerkanschluß gedrückt halten.
- Das erste Device des CUNX muss nun sichtbar sein:

peter@Ubuntu-D:~/Downloads/a-culfw$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Dez 21 15:04 /dev/ttyACM0


Flash durchführen:
echo pb > /dev/ttyACM0; avrdude -p atmega1284p -P /dev/ttyACM1 -c avr109 -U flash:w:CSM.hex -v

Durch den echo-Befehl pb an das 1. Device /dev/ttyACM0 wird das 2. Device /dev/ttyACM1, also das Pigator-Modul, in den Bootloader-Modus versetzt.
Danach wird das 2. Device /dev/ttyACM1 per avrdude  geflasht. Die Option -v sorgt für ein ausführlicheres Protokoll.

Bei mir sah das Ergebnis wie folgt aus:

peter@Ubuntu-D:~/Downloads/a-culfw$ echo pb > /dev/ttyACM0; avrdude -p atmega1284p -b 57600 -P /dev/ttyACM1 -c avr109 -U flash:w:CSM.hex -v

avrdude: Version 6.0.1, compiled on Oct 21 2013 at 15:55:32
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "/etc/avrdude.conf"
         User configuration file is "/home/peter/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyACM1
         Using Programmer              : avr109
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega1284P
         Chip Erase delay              : 55000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10   128    0 no       4096    8      0  9000  9000 0xff 0xff
           flash         65    10   256    0 yes    131072  256    512  4500  4500 0xff 0xff
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00

         Programmer Type : butterfly
         Description     : Atmel AppNote AVR109 Boot Loader

Connecting to programmer: .
Found programmer: Id = "AVRBOOT"; type = S
    Software Version = 0.8; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
    Device code: 0x46

avrdude: devcode selected: 0x46
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9705
avrdude: safemode: Fuse reading not support by programmer.
              Safemode disabled.
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "CSM.hex"
avrdude: input file CSM.hex auto detected as Intel Hex
avrdude: writing flash (24312 bytes):

Writing | ################################################## | 100% 8.74s

avrdude: 24312 bytes of flash written
avrdude: verifying flash memory against CSM.hex:
avrdude: load data flash data from input file CSM.hex:
avrdude: input file CSM.hex auto detected as Intel Hex
avrdude: input file CSM.hex contains 24312 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 8.18s

avrdude: verifying ...
avrdude: 24312 bytes of flash verified

avrdude done.  Thank you.


Ich muss dazu sagen, dass es nicht immer geklappt hat. Ich bekam die Meldung:
Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding


Dies lag offensichtlich an Kommunikationsproblemen auf der USB-Schnittstelle. Ich habe daraufhin die baud-Rate über die Option -b 57600 überschrieben (siehe oben).


Frohe Weihnachten
xgadscu



FHEM auf ODROID-HC1 (Docker-Container) - HMLAN, CUL433, CUNX mit Pigator (868 + 433 MHZ).
HomeMatic Schalter, Heizkörperventile, Sensoren, Rauchmelder
Shelly Schalter, Steckdosen, Flood
IT Funkschalter und Schaltsteckdosen (V1 und V3)
Sonos, Somfy Rolladen

jfsfhem

Hallo xgadscu,

danke für deine sehr gute Erklärung für's Flashen des Pigator Moduls. Das klappt prima für den CUL 433.
Nun sehe ich Wetterdaten von Huger (Oregon Scientific) und kann InterTechno lesen und steuern.

Ich kann aber noch immer nicht auf dem CUNX 868 Modul (dem fest eingebauten) die Wetterstationsdaten
empfangen. Daher mein Versuch auf die a-culfw auf dem 868 Modul zu flashen.

Wenn ich das CSM.hex file dort ebenfalls einspiele mit dfu-programmer, dann geht gar nichts mehr.
Erst ein downgrade zum CUNX.hex File aus der Originalfirmware bringt alles wieder zum Leben.

Kannst Du mir sagen, ob es a-culfw auch für das CUNX 868 Modul gibt und wenn ja wie ich das flashe?

Wenn nein, was müsste man tun, um das zu compilieren (sofern Du dazu was sagen kannst).

Alternativ, welche Firmware unterstützt lesen von 868 MHz Protokollen auf dem CUNX?

Gruß und Danke
jfsfhem

xgadscu

Hallo jfsfhem,

Entschuldigung, dass ich jetzt erst antworte. Ich kann Dir aber sowieso nicht weiterhelfen. Ich habe die a-culfw im 433 Mhz-Bereich eingesetzt, weil diese Firmware zusätzlich das Intertechno-Protokoll beherrscht. Im 868 Mhz-Bereich nutze ich nur Homematic-Devices. Diese werden von der Standard-Firmware unterstützt. Ich weiß nicht, welche Anforderungen Deine Wetterstation stellt, ob deren Protokoll nicht schon in der normalen culfw implementiert ist oder ob es eine spezielle Implementierung in der a-culfw gibt. Da müsstest Du die Dokus studieren.

Viele Grüße und viel Erfolg
xgadscu
FHEM auf ODROID-HC1 (Docker-Container) - HMLAN, CUL433, CUNX mit Pigator (868 + 433 MHZ).
HomeMatic Schalter, Heizkörperventile, Sensoren, Rauchmelder
Shelly Schalter, Steckdosen, Flood
IT Funkschalter und Schaltsteckdosen (V1 und V3)
Sonos, Somfy Rolladen