Hi,

ich habe ebenfalls versehentlich CC41-Module gekauft und war mit Hilfe dieser Anleitung in der Lage die HMSoft-Firmware zu flashen. Danke an Cysign für seine Vorarbeit. Mit diesem Post möchte ich das Vorgehen noch einmal zusammenfassen und ggf. ein paar Informationen nachtragen, welche mir gefehlt haben:

1. Mein Bolutek-Model habe ich über die Pads DC, DD, RESET, sowie VCC 3.3V und GND an einen Arduino Nano angeschlossen, auf welchen ich vorab den CCLoader-Sketch geflasht habe. Somit spart man sich den Kauf eines teuren CC Debuggers von Texas Instruments, welcher für gewöhnlich genutzt wird um einen CC254x zu beschreiben. Mit Hilfe eines selbst kompilierten Kommandozeilen-Tools schreibt man anschließend über den Arduino die Firmware auf das Modul.

Den Kommandozeilen-Parameter zur Wahl zwischen unterschiedlichen Arduino-Versionen gab es in der Linux-Version nicht. Deshalb habe ich den Quellcode der Windows- und Linux-Version verglichen. Das fehlende Feature habe ich portiert und als Push-Request an den Autor geschickt. Es wurde bereits heute vom Autor akzeptiert und ist in der aktuellen Version enthalten. Mit diesen Änderungen war ich in der Lage das Modul unter Linux zu flashen:

Code:
$ git clone https://github.com/RedBearLab/CCLoader
Klone nach 'CCLoader'...
remote: Counting objects: 33, done.
remote: Total 33 (delta 0), reused 0 (delta 0), pack-reused 32
Entpacke Objekte: 100% (33/33), Fertig.
Prüfe Konnektivität... Fertig.
$ cd CCLoader/SourceCode/Linux 
$ GCC -o ccloader main.c
./ccloader /dev/ttyUSB0 ~/CC2541hm10v520.bin 1
Comport open:
Device: Leonardo

Baud:115200 data:8 parity:none stopbit:1 DTR:on RTS:off
File open success!
Block total: 512
Enable transmission...
Request sent already! Waiting for respond...
Begin programming...
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179  180  181  182  183  184  185  186  187  188  189  190  191  192  193  194  195  196  197  198  199  200  201  202  203  204  205  206  207  208  209  210  211  212  213  214  215  216  217  218  219  220  221  222  223  224  225  226  227  228  229  230  231  232  233  234  235  236  237  238  239  240  241  242  243  244  245  246  247  248  249  250  251  252  253  254  255  256  257  258  259  260  261  262  263  264  265  266  267  268  269  270  271  272  273  274  275  276  277  278  279  280  281  282  283  284  285  286  287  288  289  290  291  292  293  294  295  296  297  298  299  300  301  302  303  304  305  306  307  308  309  310  311  312  313  314  315  316  317  318  319  320  321  322  323  324  325  326  327  328  329  330  331  332  333  334  335  336  337  338  339  340  341  342  343  344  345  346  347  348  349  350  351  352  353  354  355  356  357  358  359  360  361  362  363  364  365  366  367  368  369  370  371  372  373  374  375  376  377  378  379  380  381  382  383  384  385  386  387  388  389  390  391  392  393  394  395  396  397  398  399  400  401  402  403  404  405  406  407  408  409  410  411  412  413  414  415  416  417  418  419  420  421  422  423  424  425  426  427  428  429  430  431  432  433  434  435  436  437  438  439  440  441  442  443  444  445  446  447  448  449  450  451  452  453  454  455  456  457  458  459  460  461  462  463  464  465  466  467  468  469  470  471  472  473  474  475  476  477  478  479  480  481  482  483  484  485  486  487  488  489  490  491  492  493  494  495  496  497  498  499  500  501  502  503  504  505  506  507  508  509  510  511  512  Program successfully!
File closed!
Comport closed!
Wichtig bei der Binärdatei handelt es sich nicht um die HMSoft.bin (253952 Bytes) der Herstellerseite, sondern um eine Firmware inklusive Bootloader mit der Größe von 262144 Bytes. Wer Spaß daran hat, kann die beiden Dateien mal mit einem Hexeditor vergleichen. Man kann die unterschiedlichen Blöcke gut voneinander unterscheiden. Zwischen ihnen ist etwas Padding, sowie am Ende der Datei. Cysign war so nett mir die Datei inkl. Bootloader zur Verfügung zu stellen. Später habe ich sowohl die V520 als auch die V540 noch hier finden können:

https://iegget.no/wiki/technology/el...ollers/cc2541/
https://forum.arduino.cc/index.php?topic=393655.0

Ich habe trotzdem den Weg gewählt erst die Version 520 zu flashen, da sich es sich bei beiden BIN-Dateien um eine Firmware für den CC2540 handelt. Auf der HMSoft-Seite finden sich jedoch auch Downloads für den CC2541. Vermutlich sind die Unterschiede nur marginal und zum Glück bootet die Version CC2540-V520 auf meinem CC2541 sauber, jedoch ist meine Hoffnung mögliche Probleme ausschließen zu können, wenn ich im nächsten Schritt über das HMSoft-Update-Tool das Modul aktualisiere.

2. Nach dem erfolgreichen Flash-Vorgang per CCLoader habe ich die Pads DD, DC und RESET wieder von ihren Kabeln befreit. Dafür wurde ein serieller Wandler (FTDI mit 3.3V Pegel) an RXD und TXD geklemmt. Bei 9600 Baud und einem gesendeten "AT" ohne Zeilenumbruch meldete das Modul bereits ein OK. Auch die Abfrage der aktuellen Firmware-Version wird mit einem V520 quittiert. Nun schickt man ein "AT+SBLUP" um das Modul in einen Update-Modus zu versetzen. Im folgenden kam ich leider dann doch nicht drum herum ein Windows zu booten, da das Update-Tool (HMSoft.exe) nur für Windows zur Verfügung steht. Geflasht habe ich die HMSoft.bin von der chinesischen HMSoft-Seite aus dem ZIP-Archiv CC2541 V540. Mein Vorgehen ist vergleichbar mit dieser Anleitung: https://suryaigor.wordpress.com/2016...c2541-ble-4-0/ Jedoch habe ich nicht die Dateien aus dem verlinkten Git-Repository verwendet, da es sich laut Checksumme um die V540 für den CC2540 handelt.

Das wars. Langfristig würde ich gerne dem CC2541 die Signalstärke von iBeacons in meiner Umgebung entlocken. Leider liefert ein AT+DISC? nur die Hardware-Adresse der BLE-Geräte aus meiner Umgebung. Möglicherweise bringt V542 neue Features oder noch schöner wäre, wenn sich langfristig eine quelloffene Firmware finden lässt, die sich ebenfalls per CCLoader auf das Modul schreiben lässt. Bis dahin!

Gruß syssi

- - - Aktualisiert - - -

Nachtrag: Ich habe ein Feature in der V540 uebersehen, naemlich "AT+DISI?". Mit den folgenden Befehlen lässt sich dem Modul eine Liste der iBeacons plus Signalstärke aus der Umgebung entlocken:

Code:
AT+ROLE1
AT+IMME1
AT+DISI?
Die Antwort des Moduls sieht dann so aus:

Code:
OK+DISIS
OK+DISC:00000000:00000000000000000000000000000000:0000000000:D04F7xxxxxx6:-066
OK+DISC:00000000:00000000000000000000000000000000:0000000000:880F1xxxxxx3:-068
OK+DISC:00000000:00000000000000000000000000000000:0000000000:880FxxxxxxxA:-052
OK+DISCE
Die Returns habe ich in die Antwort geschrieben zur besseren Übersicht. Schön wäre gewesen, wenn das Modul selbst Zeilenumbrüche nutzen würden.