Closed Hedda closed 3 years ago
Yeah, without a matching TC Link key, devices won't be able to get the network key.
I also realized that I set rxRadioPower
to 1 because I had no clue about the value. I found in the doc that for EFR32 it should be 20, this also explains the erratic behavior.
Now if I can benefit from you experience:
I paired an OSRAM switch mini, but didn't receive any childJoinHandler
message. I recevied the following and pairing seemed to work:
trustCenterJoinHandler
2400E4E9DD92020AAA3EB07C01010000
(key sent in clear)incomingMessageHandler
450004000013000000000100000194C1E4E9FFFF0C00E4E9DD92020AAA3EB07C8E
(incoming ZDO message)messageSentHandler
3F0006FDFF0000130000000001000001000000
which looks to be EMBER_INCOMING_MANY_TO_ONE_ROUTE_REQUESTBut, with a Xiaomi device, I get the following:
childJoinHandler
23000001B8D4AE506B03008D150004
child joiningtrustCenterJoinHandler
2400B8D4AE506B03008D150001010000
same as before
and 2 minutes laterchildJoinHandler
23000000B8D4AE506B03008D150004
child leavedDo you have any idea why I don't receive childJoinHandler
with OSRAM, and why Xiaomi device leaves? In parallel I will try to set up a Zigbee sniffer.
Edit: I realize that the OSRAM didn't pair, but registered itself as a neighbour. I confirmed it with getNeighbour
and it does have an entry. I'm a bit lost here...
childJoinHandler
is when an EndDevice joins directly to NCP. trustCenterJoinHandler
is the handler notifying about a device being joined. If OSRAM is not an EndDevice, you won't get the childJoinedHandler
Ah got it. The CC2530 Z-Stack I'm used to is of higher level interface. Since the OSRAM wall switch is also a router, it is considered as a neighbour, not a child. This does not explain why the Xiaomi leaves after 2 minutes, but thanks. I'm progressing.
@NilsBohr you think Elelabs might be willing to donate a few EFR32MG13P based adapters to bellows and zigbee-herdsman devs?
Thinking that such sponsoring will benefit Elelabs as a company since more developers working on this will probably lead to more users buying your Silicon Labs based adapters as long as you also provide firmware compatible with those open source projects.
bellows is primarily used by Home Assistant's ZHA integration, and zigbee-herdsman is used by Zigbee2mqtt and IoBroker.
Hello guys,
That's Kit from Elelabs.
I thought that Elelabs had not published exactly which chip type they were using other than they were from Silicon Labs, so I had no idea that they are based on EFR32 MG1 (EFR32 Mighty Gecko Series 1).
Jumping here in the discussion, if you don't mind.
We had sold:
- EZBUSBA model using version EM357
- ELU012 model using EFR32MG1 Now we are selling ELU013, which is using EFR32MG13P.
The Raspberry shield also had different models:
- EZBPIS based on EM357
- ELR022 based on EFR32MG1B232 (32Kb RAM) Now we are selling ELR023, which is also based on EFR32MG13P732 (64Kb RAM)
@Hedda
Yes, we would be glad to. Please reach out to me at sne@elelabs.com
@NilsBohr you think Elelabs might be willing to donate a few EFR32MG13P based adapters to bellows and zigbee-herdsman devs?
Thinking that such sponsoring will benefit Elelabs as a company since more developers working on this will probably lead to more users buying your Silicon Labs based adapters as long as you also provide firmware compatible with those open source projects.
bellows is primarily used by Home Assistant's ZHA integration, and zigbee-herdsman is used by Zigbee2mqtt and IoBroker.
Yes, we would be glad to. Please reach out to me at sne@elelabs.com
I am not a skilled enough programmer myself, but maybe @Adminiuga @puddly @dmulcahey & @s-hadinger are interested(?) 👍
Perhaps @rcloran @AndreasBomholtz & @damarco would also be interested in getting back to developing bellows and zigpy?
PS: @NilsBohr Suggest that you also post the same offer in the zigbee-herdsman discussion here -> https://github.com/Koenkk/zigbee-herdsman/issues/168
Silabs just released a new $99 "EFR32xG22 Wireless Gecko Starter Kit" (SLWSTK6021A) which only contain one mainboard and two low-power radios (Zigbee Green Power compatible):
(Google search shows that relatively inexpensive kit can already be bought from resellers globally).
While such low-power radios are not really usable as Zigbee coordinators, for $99 that kit can be useful to developers if buying such an official kit also gives full access to the Zigbee Stack/SDK and libraries.
FYI, those who are interested in the official $99 SLWSTK6021A started kit might also be interested in buying article SLWRB4180A for around $49 at the same time as that is the matching EFR32MG21 based high-power (+20 dBm) radio board for that dev board kit.
(Google search shows that SLWRB4180A can be bought from many of resellers globally who also stock the SLWSTK6021A kit).
This does not explain why the Xiaomi leaves after 2 minutes, but thanks. I'm progressing
👍 if you figure this one out, let me know, as i'm troubleshooting the same issue. Have two EZSP running 6.3.3 version, the dev works fine, but it is only a few devices, but in prod, ZB3 joins, stays a bit (works fine during that period) and then leaves. Both prod and dev running the same version, just number of devices is different. I have strong suspicion it might be related to some ZB3 settings/policy settings, as downgrading to protocol version 6 or 5 fixes this issue.
Is the Xiaomi a ZB3 device?
@Adminiuga I doubt the Xiaomi runs ZB3. When I was using CC2530, it was a ZB1.2 network. I need to re-read the doc carefully to make it ZB1.2 devices compatible. This means sending the network key in clear, and pre-registering the "well-known" Link Key ZigBeeAlliance09
. It looks from the doc that you need to add it explicitly.
I will also try a configuration without Trust Center. It's not ideal but for domestic Zigbee networks as we use in Tasmota, that's enough to start with.
Edit: can you please share all the security settings you are using to configure EZSP?
This means sending the network key in clear
Well, technically it is encrypted by the tc link key, but since the link key is well known you might as well send it in the clear.
I can show EZSP settings configured for bellows
020-06-24 10:53:42 DEBUG (MainThread) [bellows.ezsp] Resetting EZSP
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command version: (4,)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 0 (version) received: b'07023066'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command version: (7,)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 0 (version) received: b'07023066'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Switched to EZSP protocol version 7
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] EZSP Stack Type: 2, Stack Version: 26160
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_INDIRECT_TRANSMISSION_TIMEOUT: 18>, 7680)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_TRUST_CENTER_ADDRESS_CACHE_SIZE: 25>, 2)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_PAN_ID_CONFLICT_REPORT_THRESHOLD: 34>, 2)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_MAX_END_DEVICE_CHILDREN: 17>, 24)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_KEY_TABLE_SIZE: 30>, 4)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_SECURITY_LEVEL: 13>, 5)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_SUPPORTED_NETWORKS: 45>, 1)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_SOURCE_ROUTE_TABLE_SIZE: 26>, 16)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_STACK_PROFILE: 12>, 2)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_APPLICATION_ZDO_FLAGS: 42>, 3)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_MULTICAST_TABLE_SIZE: 6>, 16)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_ADDRESS_TABLE_SIZE: 5>, 16)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_END_DEVICE_POLL_TIMEOUT: 19>, 8)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConfigurationValue: (<EzspConfigId.CONFIG_PACKET_BUFFER_COUNT: 1>, 255)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 83 (setConfigurationValue) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command getConfigurationValue: (<EzspConfigId.CONFIG_APS_UNICAST_MESSAGE_COUNT: 3>,)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 82 (getConfigurationValue) received: b'000a00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.zigbee.application] APS_UNICAST_MESSAGE_COUNT is set to 10
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command addEndpoint: (1, 260, 48879, 0, 0, 1, [], [1280])
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 2 (addEndpoint) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.zigbee.application] Ezsp adding endpoint: [<EzspStatus.SUCCESS: 0>]
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setConcentrator: (False, <EmberConcentratorType.HIGH_RAM_CONCENTRATOR: 65529>, 600, 1800, 2, 5, 0)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 16 (setConcentrator) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.zigbee.application] Set concentrator type: [<EmberStatus.SUCCESS: 0>]
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command networkInit: ()
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 23 (networkInit) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 25 (stackStatusHandler) received: b'90'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command getNetworkParameters: ()
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 40 (getNetworkParameters) received: b'000105fc01bf820a160685ee080f0000000000f8ff07'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setPolicy: (<EzspPolicyId.TC_KEY_REQUEST_POLICY: 5>, <EzspDecisionId.GENERATE_NEW_TC_LINK_KEY: 82>)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 85 (setPolicy) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setPolicy: (<EzspPolicyId.APP_KEY_REQUEST_POLICY: 6>, <EzspDecisionId.ALLOW_APP_KEY_REQUESTS: 97>)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 85 (setPolicy) received: b'00'
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Send command setPolicy: (<EzspPolicyId.TRUST_CENTER_POLICY: 0>, <EzspDecisionId.ALLOW_PRECONFIGURED_KEY_JOINS: 1>)
2020-06-24 10:53:43 DEBUG (MainThread) [bellows.ezsp] Application frame 85 (setPolicy) received: b'00'
you can ignore the endpoint addition and setting the concentrator type. Most of these settings were carried over from the original versions of bellows, which I think were established during protocol version 4 or V5
Thanks this is helpful. I'm not sure why we need the setConcentrator(False,...)
call.
The log you provided was from an already existing network networkInit
. I'm more interested in the security settings you needed to setup before calling 'formNetwork` in the first place.
setConcentratorType is for sending out MTORR messages, at least this is what I think it does.
here's forming the network
2020-06-24 11:34:52 DEBUG (MainThread) [bellows.ezsp] Send command networkInit: ()
2020-06-24 11:34:52 DEBUG (MainThread) [bellows.ezsp] Application frame 23 (networkInit) received: b'93'
2020-06-24 11:34:52 DEBUG (MainThread) [bellows.ezsp] Send command setInitialSecurityState: (<EmberInitialSecurityState bitmask=2820 preconfiguredKey=[90, 105, 103, 66, 101, 101, 65, 108, 108, 105, 97, 110, 99, 101, 48, 57] networkKey=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2] networkKeySequenceNumber=0 preconfiguredTrustCenterEui64=00:00:00:00:00:00:00:00>,)
2020-06-24 11:34:52 DEBUG (MainThread) [bellows.ezsp] Application frame 104 (setInitialSecurityState) received: b'00'
2020-06-24 11:34:52 DEBUG (MainThread) [bellows.ezsp] Send command formNetwork: (<EmberNetworkParameters extendedPanId=00:00:00:00:00:00:00:00 panId=0x5ae4 radioTxPower=8 radioChannel=15 joinMethod=EmberJoinMethod.USE_MAC_ASSOCIATION nwkManagerId=0x0000 nwkUpdateId=0 channels=Channels.CHANNEL_25|CHANNEL_20|CHANNEL_15>,)
2020-06-24 11:34:53 DEBUG (MainThread) [bellows.ezsp] Application frame 30 (formNetwork) received: b'00'
2020-06-24 11:34:53 DEBUG (MainThread) [bellows.ezsp] Application frame 25 (stackStatusHandler) received: b'90'
2020-06-24 11:34:53 DEBUG (MainThread) [bellows.ezsp] Send command setValue: (<EzspValueId.VALUE_STACK_TOKEN_WRITING: 7>, 1)
2020-06-24 11:34:53 DEBUG (MainThread) [bellows.ezsp] Application frame 171 (setValue) received: b'00'
2020-06-24 11:34:53 DEBUG (MainThread) [bellows.ezsp] Send command getNetworkParameters: ()
2020-06-24 11:34:53 DEBUG (MainThread) [bellows.ezsp] Application frame 40 (getNetworkParameters) received: b'0001bc1126bc0c962cd2e45a080f0000000000f8ff07'
just replace the network key. The source is here https://github.com/zigpy/bellows/blob/6e66bffe8d49a6a36f41a12b2aebdf1ed7ee384e/bellows/zigbee/application.py#L201-L226 make a call to https://github.com/zigpy/bellows/blob/6e66bffe8d49a6a36f41a12b2aebdf1ed7ee384e/bellows/zigbee/util.py#L8-L32
Keep in mind this is all for the older version and might need adjustments for V8
@s-hadinger I looked at some code there are options on the policy set allow re-joins with a well known key
EZSP_TC_REJOINS_USING_WELL_KNOWN_KEY_POLICY set it to 1
there also then a rejoin timeout value EZSP_CONFIG_TC_REJOINS_USING_WELL_KNOWN_KEY_TIMEOUT_S . However may be this can set to 0.
You can set the well known key (0x5A, 0x69, 0x67, 0x42, 0x65, 0x65, 0x41, 0x6C 0x6c 0x69, 0x61, 0x6E, 0x63, 0x65, 0x30, 0x39 } using addTransientLinkKey.
Thanks, but it's still not fully functional.
Here is what I set up, trying to mimck the relaxed security of ZB1.2:
Using EZSP_TC_REJOINS_USING_WELL_KNOWN_KEY_POLICY
does not seem necessary.
The Xiaomi joins and the TC sends the key in clear.
23000001F4EBAE506B03008D150004
: childJoinHandler(0, true, 0xEBF4, 0x00518D00036B50AE, 4 sleepy end-device)2400F4EBAE506B03008D150001010000
: trustCenterJoinHandler(0xEBF4, 0x00518D00036B50AE, 1 join, 1 decision, 0x0000 parent)During these 2 minutes, I don't receive any readings from the device, so I'm not sure it actually paired. I will try to send ZDO requests, but I've just discovered that I need to manually build the frames (ZStack had an API for that).
@Adminiuga Do you know why there is setValue: (<EzspValueId.VALUE_STACK_TOKEN_WRITING: 7>, 1)
?
I will try tomorrow with Security Policy set to 0x0B04 like in your example.
Do you know why there is
setValue: (<EzspValueId.VALUE_STACK_TOKEN_WRITING: 7>, 1)
Hrm, I thought that was a leftover from one of my tests, but it is not. I'm not positive on the exact purpose, but per I'm thinking it is supposed to retain settings like pan-id, extended pan id etc related to stack 🤷
Any chance you could try with some me other than xiaomi brand? With xiaomi you never know if something is wrong on your side or is it xiaomi interpretation of the standard. I'd recommend any device from centralite
I doubt the Xiaomi runs ZB3. When I was using CC2530, it was a ZB1.2 network.
FYI; I believe that only a few newer Xiaomi / Aqara products released after 8th July 2019 support the standard Zigbee 3.0 specification. Not sure if Xiaomi / Aqara release Zigbee 3.0 compatible firmware updates to any older devices released before then. Sources are Xiaomi / Aqara announcement: https://news.mydrivers.com/1/634/634160.htm and https://news.mydrivers.com/1/635/635172.htm plus the fact that they also released their new "Xiaomi Multimode Gateway" (a.k.a. "Xiaomi Smart Gateway V3") in December of 2019 which is marketed as a Zigbee 3.0 gateway.
I'm sure you also know this, but for reference, it should be noted that almost all Zigbee 3.0 devices are backwards compatible with ZHA 1.2 (Zigbee Home Automation 1.2 profile) and/or are backwards compatible with ZLL 1.0 (Zigbee Light Link 1.x profile) and with connect using that profile if your Zigbee network established by your Zigbee coordinator is ZHA 1.2
I'm sure you also know this too, but again for reference, if you run Texas Instruments Z-Stack Home 1.2 (and not Z-Stack 3.0.x) on your CC2530 then can only support ZHA 1.2 and thus only be compatible with Zigbee devices in ZHA 1.2 mode (therefor forcing ZHA 1.2 backwards compatible if they support it). So you need to run a Z-Stack 3.0.x on your CC2530 if you want it to be compatible with Zigbee 3.0
Very easy Xiaomi have only 2 certified products !!!! https://zigbeealliance.org/zigbee_products/?product_type=certified_product&se=Xiaomi+
The big things its compatibility for LL and HA and the large are Philips hue and Ikea Tradfri for the most users. Both have good and bad things but wildly used. Xiaomi making great sensors but all (-1) its home cocked and not following any standard only the Xiaomi one.
Very easy Xiaomi have only 2 certified products !!!! https://zigbeealliance.org/zigbee_products/?product_type=certified_product&se=Xiaomi+
No they have more but they are both soley marketed and certified under the "Aqara" brand (and not under "Xiaomi" brand), see:
https://zigbeealliance.org/zigbee_products/?product_type=certified_product&se=Aqara
You are right "Lumi United Technology" have 8 and Xiaomi have 2 so all together 10 (of ??).
Look for Philips, Osram and Ikea you get little more "certified devices"
Interesting, those aqara look exactly like the old models and I thought they never planned to update those. Did anyone ordered those recently and confirmed they are ZB3?
Thanks for you help. I tried with 2x Xiaomi sensors (non ZB3), an OSRAM mini-switch, and a BlitzWolf TS0201. They all behave the same: they start the pairing process, are accepted by the TC, but then nothing happens and they are rejected after 2 minutes. Non of them are ZB3.
I feel I'm missing a tiny piece here. This is due to my ignorance of Zigbee protocol. Do I need to send any ZDO message to finalize the pairing of an end-device?
Note: I also tried to disable security, it's still the same behavior: pairing then leaving after 2 minutes (except I don't get the TC approval message since there is no TC in this variant).
My next step will be to get a Zigbee sniffer after all.
To cover all bases, order a zigbee 3.0 device, maybe some Konke sensor or new xiaomi zb3 illuminance sensor.
I don't think protocol mandates any ZDO messages to be sent, but with that said I guess it is up to the vendor to decide whether to stay on the network or not, if nothing bounds any clusters. My expectation this shouldn't be required. And HA1.2 xiaomi/aqara sensor really don't care, as they are hardcoded to send attribute updates to 0x0000 NWK address, without any configuration.
Interesting, those aqara look exactly like the old models and I thought they never planned to update those. Did anyone ordered those recently and confirmed they are ZB3?
We can probably assume that those devices are based on the same hardware but now have new firmware with Zigbee 3.0 stack, or?
I have not bought any ew Xiaomi/Aqara device myself, however, to get on that "CERTIFIED BY THE ALLIANCE" list on zigbeealliance.org means that they been sent in and independently certified as Zigbee 3.0 compatible by the Zigbee Alliance, so consider just being on that list that as confirmed to follow the Zigbee 3.0 specification.
To cover all bases, order a zigbee 3.0 device, maybe some Konke sensor or new xiaomi zb3 illuminance sensor.
If you have CC2530 module or device like Sonoff BASIC ZBR3 then could try DIYRuZ/DIYRuZRT Zigbee 3.0 firmware (by @kirovilya ):
My next step will be to get a Zigbee sniffer after all.
Adminiuga might recommend a better solution for making your own Zigbee sniffers, however, if you will be using Wireshark for Zigbee sniffing then check out https://www.zigbee2mqtt.io/how_tos/how_to_sniff_zigbee_traffic.html for Texas Instruments CC2531 based Zigbee sniffer and https://github.com/zsmartsystems/com.zsmartsystems.zigbee.sniffer for Silicon Labs Ember based Zigbee sniffer.
Yes. I have a spare cc2531 that I will flash with a Zigbee sniffer stack
You can also look at alternative implementation from ZSmartSystems, here's init https://github.com/zsmartsystems/com.zsmartsystems.zigbee/blob/23ec347971d0be10e9699859832d2160364b3c05/com.zsmartsystems.zigbee.dongle.ember/src/main/java/com/zsmartsystems/zigbee/dongle/ember/ZigBeeDongleEzsp.java#L282
And here's I think is the network formation: https://github.com/zsmartsystems/com.zsmartsystems.zigbee/blob/23ec347971d0be10e9699859832d2160364b3c05/com.zsmartsystems.zigbee.dongle.ember/src/main/java/com/zsmartsystems/zigbee/dongle/ember/internal/EmberNetworkInitialisation.java#L103
Thanks, that's useful. I reviewed the code and didn't spot anything different from what I'm currently doing. I will next try it with my EFR32.
Thanks to all, I have now reached an important milestone. All basic functions are now implemented (except bindings) and the Tasmota version for EZSP v8 is now open for testing. I'm happy to share any learnings.
I'm requesting the hive's knowledge.
I configured an OSRAM switch binding to group (multicast) addresses. Everything works well but I don't receive the content of the multicast message at coordinator level. I only receive a messageSentHandler
(0x3F) callback for the multicast message with correct group address and endpoint.
Does anyone know how I can ask EmberZNet to send an incomingMessageHandler
for a multicast message?
you could try subscribing NCP to the multicast address, although I don't remember if it going to loopback it. check setMulticastTableEntry
EZSP command
@sprut666666 as mentioned in #242 is also working on similar EFR32MG1 based adapter for @sprut
The next batch will be based on the https://www.silabs.com/wireless/zigbee/efr32mg21-series-2-socs/device.efr32mg21a010f1024im32 and the latest SDK.
@Adminiuga indeed but I would like to avoid it. The NCP does receive the message anyways. I'm looking for a way to surface it to the EZSP layer.
Mind if I ask what are you trying to achieve? You have the message you are sending out, why do you need to hear it back ?
Sure, I configure a remote OSRAM switch (On/Off) to control a bunch of zigbee devices via a group address. I'm running the EFR32 as a coordinator and would like to report all the group messages to a central MQTT broker (already works like this with CC2530).
The multicast message originates from an OSRAM switch. Looking with a Zigbee sniffer:
messageSentHandler
callback. I tried enabling EZSP_MESSAGE_TAG_AND_CONTENTS_IN_CALLBACK
policy for policy EZSP_MESSAGE_CONTENTS_IN_CALLBACK_POLICY
but the message is still empty.If I configure setMulticastTableEntry
I do get the incoming multicast message from the OSRAM device, but reported as EMBER_INCOMING_UNICAST
as well as a second synthetic message from the coordinator to itself.
Weird...
Hrm, this is weird. with setMulticastTableEntry
you are supposed to receive all those multicast messages and the type should be of Multicast one.
here's a multicast from Ikea 5 button remote
2020-07-08 15:32:20 DEBUG (MainThread) [bellows.ezsp] Application frame 69 (incomingMessageHandler) received: b'020401060001ff000100000effba6075ffff0301040202'
2020-07-08 15:32:20 DEBUG (MainThread) [bellows.zigbee.application] Received incomingMessageHandler frame with [<EmberIncomingMessageType.INCOMING_MULTICAST: 2>, <EmberApsFrame profileId=260 clusterId=6 sourceEndpoint=1 destinationEndpoint=255 options=256 groupId=0 sequence=14>, 255, -70, 0x7560, 255, 255, b'\x01\x04\x02']
2020-07-08 15:32:20 DEBUG (MainThread) [zigpy.zcl] [0x7560:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=False disable_default_response=False> manufacturer=None tsn=4 command_id=2>
Thanks to all, I have now reached an important milestone. All basic functions are now implemented (except bindings) and the Tasmota version for EZSP v8 is now open for testing. I'm happy to share any learnings.
How did you get past the key issue with devices joining?
@Adminiuga I double checked, and I do receive a correct multicast message. The unicast was a side effect from my code. So all good. I'm just disappointed that you can't listen to all multicast addresses.
@dmulcahey What's working for me:
EMBER_TRUST_CENTER_GLOBAL_LINK_KEY | EMBER_PRECONFIGURED_NETWORK_KEY_MODE | EMBER_HAVE_NETWORK_KEY | EMBER_HAVE_PRECONFIGURED_KEY
EZSP_TRUST_CENTER_POLICY
to EZSP_DECISION_ALLOW_JOINS | EZSP_DECISION_ALLOW_UNSECURED_REJOINS
EZSP_TC_KEY_REQUEST_POLICY
to EZSP_ALLOW_TC_KEY_REQUESTS_AND_SEND_CURRENT_KEY
EZSP_CONFIG_SECURITY_LEVEL
to 5
EZSP_CONFIG_STACK_PROFILE
to 2
preConfiguredKey
to the well-know key ZigBeeAlliance09
A very happy BillyGecko gratings !!
Welcome to minicom 2.7.1
OPTIONS: I18n
Compiled on May 3 2018, 15:20:11.
Port /dev/ttyUSB1, 14:13:41
Press CTRL-A Z for help on special keys
11 1a c2 02 8b c2 8a 7e
The Ikea module ICC-A-1 with the EFR32MG1P132F256GM32 its working in HA then loaded with EZSP 6.6.4.0
I see that the 6.7.0.0 support its committed (#272). How its the status ? I was trying it and HA have the comport initiated but its looks like the NCP its not initiated. I think HA has not committed the last zigpy commitments in there docker image.
in #272 it just EZSP version 8 framing supported. I have not tried it yet personally. I was trying to get the EBYTE module working, but no luck with it yet. Can flash it fine, but not getting any response in the terminal.
And I'm still in the process of refactoring bellows to offer more flexibility in supporting different protocol versions, which is a bit of PITA
Thanks for replay. I was not doing andy deep digging then the PR was looking like you is saying only frame adjustment. If you don't getting any reply for the NCP it's probably crashed. My experience its that then the bad NCP is crashing its very hard and not possible connecting with SWD and must boot in the bootloader for SWD. I have trying 3 different and the best maker of new NCP is grobasoz. Ask him if hi can do one for your module and you don't wasting your time (that it's better spend on bellow). Hi have made the working one for Sonoff and for the Ikea modul for my (both the 6.6.4.0 and 6.7.4.0). In meantime i trying little more serious testing with HA with the 6.6.4.0 EZSP.
PS: The EZSP its very very fast comparing with TI-CC253X and I think it's possible better then my RaspBee I
If you have one Ikea in the near and can soldering you can do a "billy" EZSP in some minutes and i have the working bootloader and NCPs. The On/Off dimmer E1743 it's only costing 6€ and nearly beginner skills it's needed. It being around the same performance as the EBYTE module. (You need one SWD / J-tag debugger for flashing on new bootloader)
I've had no luck with the EBYTE module. as far as the v8 support here are the logs with the reframing patch - creating a network with the sonoff zigbee bridge over the socket:// connection and joining the first device:
https://paste.ubuntu.com/p/zDBWTnJHJQ/
Here is what happens when the bridge is disconnected/rebooting:
Logs look good.
I redid the network this am to get clean logs. but over night through the morning it was stable with the 4 devices on it.
Perhaps its the problem with the EFR32 gen 1 NCP firmware that not working well as I was having problem (was unpatched dev) but for @tube0013 it was working on the sonoff that is one EFR32 gen 2. I'm running my ZHA in docker and is for the moment to lazy for patching and compiling so cant helping debugging with my EFR32 gen 1. My firmware coming from the same maker of the working one for sonoff and have the same internal settings. Then i getting my hands on one docker images with the v8 patch i can also trying helping Adminiuga with testing. Thanks you both for working to getting it working.
I ran into issues with the TrustCenter joining devices after removing everything and trying to add again for the 4 or 5th time. Reflashed the EFR32 and all working again.
Can the bellows library be made to support newer EZSP serial protocol such as EZSP v6, v7, and v8 when used with ZNet 6.x on Silicon Labs EFR32 (Mighty Gecko family) based Zigbee radio adapters?
See ex. #242 as that hardware is based on this same family and series of chips from Silicon Labs.
Zigbee EmberZNet version 6.7.0.0 has breaking change (with EZSP Protocol Version 8 and Secure EZSP Protocol Version 2) as both EZSP and Secure EZSP have adopted a new frame format with the following changes: (1) the fields of "Frame Control" and "Frame ID" are now two bytes; (2) no longer use "Legacy Frame ID"; (3) consume two bits of "Frame Control" to indicate the frame format version which is version 1 now.
Perhaps newer modules will dethrone Nortek HUSBZB-1 for ZHA as the must-have Zigbee adapter?