CC2531 firmware

Ciąg dalszy mojej walki z Zigbee… Używam normalnie dongla Sonoff z ZHA, ale nie wykrył mi czujników T/RH, niektóre gniazdka mają źle ustawione parametry prądu i pobranej energii. Dodane do Tuya działają OK.
Wpadłem na pomysł dodać Zigbee2MQTT, kupiłem najprostszy moduł, wgrałem firmware, ale w ogóle mi tego nie wykrywa jako Serial.
Tak to wygląda podłączone do testowej instalacji HA na RP4:

'''BUSNUM: '001'
DEVNAME: /dev/bus/usb/001/003
DEVNUM: '003'
DEVPATH: >-
  /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3
DEVTYPE: usb_device
DRIVER: usb
ID_BUS: usb
ID_FOR_SEAT: usb-platform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_3
ID_MODEL: CC2531_USB_Dongle
ID_MODEL_ENC: CC2531\x20USB\x20Dongle
ID_MODEL_ID: 16ae
ID_PATH: platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.3
ID_PATH_TAG: platform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_3
ID_PATH_WITH_USB_REVISION: platform-fd500000.pcie-pci-0000:01:00.0-usbv2-0:1.3
ID_REVISION: '4500'
ID_SERIAL: Texas_Instruments_CC2531_USB_Dongle
ID_USB_INTERFACES: ':ffffff:'
ID_USB_MODEL: CC2531_USB_Dongle
ID_USB_MODEL_ENC: CC2531\x20USB\x20Dongle
ID_USB_MODEL_ID: 16ae
ID_USB_REVISION: '4500'
ID_USB_SERIAL: Texas_Instruments_CC2531_USB_Dongle
ID_USB_VENDOR: Texas_Instruments
ID_USB_VENDOR_ENC: Texas\x20Instruments
ID_USB_VENDOR_ID: '0451'
ID_VENDOR: Texas_Instruments
ID_VENDOR_ENC: Texas\x20Instruments
ID_VENDOR_ID: '0451'
MAJOR: '189'
MINOR: '2'
PRODUCT: 451/16ae/4500
SUBSYSTEM: usb
TAGS: ':seat:'
TYPE: 0/0/0
USEC_INITIALIZED: '3454487'''

To jest po graniu wersji default z CC2531_DEFAULT_20211115.zip, nie wnikając po co robiłem jak w tutorialach, brałem hex’a, objcopy zmieniałem na bin, wgrywałem:

'''CCLoader_x86_64.exe 11 CC2531ZNP-Prod.bin 0
Copyright (c) 2013 RedBearLab.com
CCLoader_x86_64.exe version 0.5
Comport : COM11
Bin file: CC2531ZNP-Prod.bin
Device  : Default (e.g. UNO)

Comport open!
<Baud:115200> <data:8> <parity:none> <stopbit:1> <DTR:off> <RTS:off>

File open!
Block total: 512

Enable transmission...
Request sent already!
/********************************************************************/
* If there is no respond last for 3s, please press "Ctrl+C" to exit!
* And pay attention to :
*   1. The connection between computer and Arduino;
*   2. The connection between Arduino and CC2540;
*   3. Whether the device you using is Leonardo or not;
*   4. Other unexpected errors.
/********************************************************************/

Waiting for respond from Arduino...

Uploading firmware...

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  Upload successfully!
File closed!
Comport closed!
'''

Żeby było drożej to kupiłem już takie dwa, pierwszy w ogóle nie pojawiał się jako nieznane urządzenie w WIN, soft wgrywał się bez problemu, świeci na zielono/czerwono OK, ale w ogóle nic go nie widzi, doszedłem do wniosku, że coś na linii usb jest uszkodzone i zamówiłem inny. Ten wykrywa jak widać.
Macie jakiś sprawdzony firmware? Wgrywałem ten wyżej i CC2531_SOURCE_ROUTING_20211116.zip. Może coś innego robię źle?

Prawdopodobnie tak - nawet uszkodzony plik da się wgrać, ale firmware wtedy nie działa.

Może opisz JAK wgrywasz to firmware (bo metod jest wiele) i jakim sprzętem, bo na 100% nie przez USB… (log wygląda jakby się udało, ale z moich doświadczeń z maliną w charakterze flaszera udane flaszowanie zdarzało się raz na kilka prób, ale w twoim logu nie widzę kasowania zawartości flasha)

dziwne, skoro archiwum zawiera wersję firmware zarówno jako .bin jak i .hex (czyli masz tam gotowca dla różnych metod flaszowania)

mamy - ten działa OK (na miarę możliwości tego sprzętu)

Skąd w ogóle pomysł by w 2024 roku kupować dongle na bazie CC2531 (który nie działa dobrze z firmware Zigbee3, a nawet w przypadku firmware Zigbee1.2 wspomnianego wyżej ma bugi, które już nigdy nie zostaną poprawione, bo od kilku lat TI nie wypuszcza uaktualnień SDK).

Natomiast co do kwestii obsługi braku obsługi jakichś-tam urządzeń Tuya to nawet nie szukaj problemów w firmware koordynatora (bo winę ponosi Tuya, która nie udostępnia niezbędnych informacji do integracji ich sprzętu Zigbee, oraz z tego powodu brak odpowiednich konwerterów w Z2M i quirków w ZHA),

Jeśli chodzi o koordynator, to kup coś współczesnego, bo CC2531 nie radzi sobie w sieciach większych niż kilkanaście urządzeń (i miewa problemy z kompatybilnością z Zigbee3).

1 polubienie

@Szopen, pisałem, że nie używam tego, kupiłem do testów z problematycznymi egzemplarzami. Ten czujnik LCD T/RH jest np. opisany jako kompatybilny z Z2M, a w ZHA przy próbie parowania nie przekazuje żadnych encji, na ekranie się wiesza.
Tak to wygląda:
image

Kupiłem tego CC2531 bo pomyślałem że za 2 dychy sobie sprawdzę, czy to wina czujnika, czy sytemu, ale chyba trafiłem na uszkodzony egzemplarz. W między czasie trafiłem na jakąś promocję i kupiłem bramkę WIFI Tuya, to widzę, że te urządzenia są OK, tylko nie działają OK z ZHA. Teraz znowu dorzuciłem innego dongla dla darmowej wysyłki i wróciłem do walki. Już widzę, że ten stary się nie zgłaszał jak trzeba.
Wgrywam przez ESP, podłączam ESP do USB, daję zasilanie na pin9 CC2531 (podłączałem też całego CC do innego portu USB) i odpalam wgrywanie, gdy robiłem coś inaczej to nie było wgrywania, na czuja widzę, że wygląda prawidłowo. CCloader nie wgrywa tego na pałę, podłączenie do złego portu COM z innym ESP, czy brak zasilania modułu CC2531 powoduje wiszenie programu w oczekiwaniu na nawiązanie komunikacji, albo komunikat, że nie wykrył chipu, czyli jest weryfikacja PC-ESP jak i ESP-CC2531.
Połączenie mam stabilne i powtarzalne, mam wtyczkę w rastrze 2x5 1.27, zarobiłem sobie kabel bo mi zostało to z innego projektu. W szkicu piny jak na połączeniach 1 GND, 3 i 4 dane/zegar, reset, z 9 ewentualnie 3.3V. Nie próbowałem wgrywać UNO, bo jest na 5V, zrozumiałem, że ma być logika 3.3V.
A dlaczego robię bin z hex’a? Bo się na tym nie znam, tak to było opisane, jakby ten gotowy bin był jakiś wadliwy, było to dla mnie dziwne ale wysiłek nieznaczny, to zgodnie z zasadą wbiłem gwoździa do końca i zacząłem wyciągać wg opisanej procedury dla gwoździa wbitego do końca.
Wgrałem gotowego bin z Twojego linka, nic to nie zmienia, dalej wykrywa tak samo, wgrałem ten:


Zresztą znowu, bo ja miałem to samo źródło, ta sama nazwa pliku, ten sam rozmiar.
Co mogę jeszcze zmienić by móc oczekiwać innego wyniku?

Niestety nie wiem, gdzie może być błąd, nie robiłem tego nigdy pod windows, ale ccloader (na jaką platformę by nie był) powinien mieć opcję kasowania flasha, więc najpierw skasuj, a dopiero potem - po udanym kasowaniu - flaszuj.
(można spróbować odłączyć na chwilę od zasilania między tymi 2 czynnościami by MCU za każdym razem był na świeżo zainicjalizowany)

Tak, ostatnio (ze 2 lata temu) używałem właśnie wsadu z tego pliku (tylko przy flaszowaniu z maliny nie trzeba robić żadnej konwersji plików, swoją drogą jeśli dobrze pamiętam, to jeśli plik nie jest we właściwym formacie to się o tym dowiesz, więc proponuję wykorzystać ten który jest w archiwum, możesz spróbować wgrać każdy z nich, to nie uszkodzi MCU, tylko nie będzie działał póki nie wgrasz działającego wsadu).

Urządzenia Tuya są OK ale tylko w ekosystemie Tuya, niestety Tuya leje na założenia standardu i jak już pisałem nie udostępnia wszystkich niezbędnych informacji by je prawidłowo integrować w innych ekosystemach, więc zarówno ZHA jak i Z2M miewają braki w swoich bazach urządzeń, bo te bazy są tworzone oddolnie przez użytkowników (a każdy sprzęt Tuya wymaga takiego wpisu w bazie, bo jego działanie nigdy nie opiera się na standardowych funkcjach dostępnych w ramach standardu, tylko na wymysłach chińczyka…).

Każde firmware może się zgłaszać inaczej, nie wiem co miałeś wgrane fabrycznie (ale w ogólności wcale nie musiał być to soft NCP, czyli koordynatora Zigbee, bo ten sprzęt można też wykorzystać inaczej).
Jeśli nie jesteś do niczego zmuszony to możesz poeksperymentować również z innymi firmware (Zigbee3 lub Zigbee1.2 source routing).

Nie zmienia to faktu, że jeśli jakieś urządzenie nie jest obsługiwane przez ZHA czy przez Z2M to zmiana firmware koordynatora tego nie zmieni (bo pełni on funkcję zbliżoną do modemu). Oczywiście firmware powinieneś używać możliwie najnowsze.

Podejrzewam, że tutorial na którym się opierasz pochodzi z czasów gdy były publikowane tylko wsady .hex ale w sumie możesz sprawdzić czy powstaje identyczny plik z tym który jest już w archiwum.

1 polubienie

Jak można skasować flash, myślałem, że nie da się wgrywać nie kasując?
Plik u mnie powstaje inny, większy, gotowy 239k vs 262k.
Jest pewna zmiana, pierwszy moduł zaczął działać, porównałem oba i potraktowałem stary hotairem, elementy smd sprawiały wrażenie niedbałego ułożenia, wykrył COM w WIN, przełożony do maliny jest wykrywany:

ttyACM0
/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B001CD502F7-if00

Faktycznie działa z Zigbee2Mqtt.


Zgłosiłem wtedy nawet zwrot, ale w końcu stwierdziłem, że nie będę o 15zł stał na poczcie.
Czyli udało mi się go zaprogramować, nie wiem tylko czy wtedy w marcu, czy dzisiaj. Wtedy na pewno robiłem z konwersją hex do bin, dzisiaj nie próbowałem do niego wgrywać gotowego bin.
Jakiś soft w wersji 3 też już wgrywałem właśnie on miał datę z 2019 roku, ale do drugiego dongla, który ciągle stawia opór. On faktycznie mógł nie przyjąć softu, bo ciągle tak samo się zgłasza w WIN jak przy pierwszym podłączeniu do laptopa.

Nie, to jest pogrubione i z wykrzyknikiem, pamiętam bo to było dla mnie dziwne, że kolo napisał, by nie brać bin, tylko robić fikołki z obj, może jak z tymi małpami, które już nie pamiętają czemu biją te sięgające po banany.
Niestety dalej nie wiem o co chodzi, czuję się jak ruski rzucający dzidami w kierunku przelatujących samolotów, kaczka trafiona, jestem zadowolony. Teraz walczę dalej z drugim.

Możliwe, że flaszer którego używasz wymaga specyficznego formatu pliku.
Rozszerzenie .bin nie definiuje tego co jest w środku.
Jakkolwiek możesz porównać oba biny po zawartości (możliwe, że większy jest uzupełniony zerami w obszarach, które mnie podlegają flaszowaniu).

Nie pamiętam szczegółów, ale po uprzednim skasowaniu miałem większe szanse poprawnego zaprogramowania. Generalnie pamięci nand kasuje się całymi blokami (nie da się skasować pojedynczej komórki), a zapisuje bit po bicie, więc to wcale nie jest takie oczywiste, że zapis jest połączony z kasowaniem.

2 polubienia

Może jednak robię coś źle, bo to wgrywanie jest podejrzane, próbowałem wgrać plik z marca do drugiego dongla, ale wcześniej kliknąłem program zanim podłączyłem 3.3V, i sobie poleciał wgrał, podziękował.

Ok, to rozgryzłem, że ESP trzeba rozłączyć, bo jak raz się połączy z CC2531, to zakłada, że ono tam jest i będzie odbierać, czyli nie ma komunikacji dwustronnej podczas wgrywania, ESP sobie wysyła, a co doleci i co zostanie z tym zrobione nie wiadomo.
Idąc dalej tym tropem jednak miałem źle podłączone zasilanie, 3.3V powinno iść na pin 2 CC, znalazłem inny tutorial i poszło. Należy podłączyć ESP i wszystko poza 3.3V z CC, podłączyć ESP do USB, po paru sekundach podłączyć zasilanie 3.3V z ESP, zielony led powinien zaświecić, podczas wgrywania gaśnie, po zakończonym wgraniu znowu świeci, po podłączeniu do USB WIN pojawia się port COM.
Te pierwsze próby z uszkodzonym donglem zwiodły mnie w złą stronę i szukałem problemu nie tam gdzie trzeba.
Dziękuję.

1 polubienie