Hi,
Did someone manage to connect/pair with the APsystem YC600 micro omvormer.
They should connect with zigbee but it is not pairing at all.
Any sugestions are welcom.
Kind regards,
Peter
Looking for the same information... There is no reset button, powering off/on does not help either. I suspect we have to send a proprietary signal to trigger pairing. Maybe somene with an official ECU-R gateway can do a test and sniff?
Hi all!
Here is what I've found out (with my limited knowledge of Zigbee).
Next steps I'll try:
Nice stuff! Now we are one little step further and seem to understand why some people cannot see any packets. I have read on internet that the YC600 has a zigbee communication range of 10-20m. Also, AP systems has confirmed to someone posting on a forum, that they use a proprietary zigbee protocol. This also seems to be in line with your finding. We have to crack this stuff! I am going to order my own 2531 now :-)
Great i cant wait
Unfortunately, I had just a few minutes of sunlight left today... But here is what I did.
In the config, I set the following parameters:
advanced:
pan_id: 0xae14 # sniffed from the link status packets
channel: 16
log_level: debug
The I started zigbee2mqtt and sniffed the traffic using another 2531.
44 185.546362 0x0000 Broadcast ZigBee ZDP 108 Permit Join Request
45 198.038446 Broadcast IEEE 802.15.4 70 Beacon Request
46 198.040590 0x26c7 ZigBee 88 Beacon, Src: 0x26c7, EPID: 03:00:12:11:10:90:ff:ff
And that's about it... Then, the "link status" packets continued. No device joined. :-( What puzzles me a bit is that 0x26c7 responds with a Beacon?! I thought that the device trying to join sends a beacon request and then the coordinator answers with a beacon?!
Any ideas where to go from here?
Tomorrow, I'll try and enable zigbee-herdsman debugging, too.
Apparently, the ECU-R (APSystem device to connect to the inverters) needs the inverters' UID. So perhaps there is some kind of authentication going on there?! See https://youtu.be/3UGMGZRTJQI?t=868
My zigbee knowledge is very limited, so I was reading some documentation to jump start my knowledge :-) What I understand is that it is always a zigbee device which is sending beacon requests and coordinator is responding with a beacon frame. If coordinator enables permitjoin and is shown in beacon frame, the device can decide to send association request to coordinator to join the network. So it is always the device who decides which network to join from the available/permitted networks. It seems, that the YC600 decides not to join your network, despite the fact that you coordinator permits it. Feeding in the ID of the inverter in the ECU APP (as shown in the video you have linked) is probably the key, I guess the ID somehow needs to be included in the beacon response frame of the coordinator. When de device recognizes the own ID in the frame, it will join.
With herdsman logging enabled: still no luck. Nothing to see...
What I understand is that it is always a zigbee device which is sending beacon requests and coordinator is responding with a beacon frame.
Yes, that is my understanding, too. However, here we see that the inverter (e.g. NOT the coordinator) seems to respond with a beacon! From the sniffing logs you cannot see which device sent the beacon request, but you can see that the inverter answers immediately.
I too assume that you need to tell the inverter a "secret" (probably related to the UID). I don't have any idea how to accomplish this... A sniff from a successful pairing with a physical ECU-R would be very helpful, I guess...
Yes, we have to find someone owning an ECU-R and able to make a sniff. Other option is we do some crowd-funding to buy an ECU-R for testing purposes. It costs around the 200 euro, I would not mind to donate some money if we can crack this thing.
There is a German forum out there with people that are also interested in having home brewed solution for the YC600 so I have posted a message there to join our forces: https://knx-user-forum.de/forum/%C3%B6ffentlicher-bereich/knx-eib-forum/diy-do-it-yourself/1409938-pv-micro-inverter-diy-auswertung-m%C3%B6glich
'franck102' in this discussion
https://community.openenergymonitor.org/t/zigbee-inputs/11166/10
seems to have an ECU device. Perhaps he is willing to help with some sniffing.
Thanks for the thread. He seems to have an ECU-C and not an ECU-R. Nevertheless, I have registered there and i am going to post a question about sniffing. An ECU-C sniff might also give some hints for us how to proceed.
That would be great! I guess there isn't much of a difference between the ECU-C and -R when it comes to the zigbee connection.
ECU-C seems to be the "bigger" device. With swiching output options and more.
https://global.apsystems.com/wp-content/uploads/2018/04/4271801031_APsystems-Energy-Communication-Unit-ECU-C-User-manual_Rev1.5_2018-1-16.pdf
Zigbee section should work in the same way as in ECU-R.
In case somebody who owns an ECU-R (or ECU-C) stumbles across this thread and is willing to help, I'll try to summarize the steps to obtain a successful sniff of the connection between the YC600 and ECU-R...
To anybody who is willing to help: Thanks a lot in advance!
I'd like to order it from some trustworthy website like Amazon, opening it without leaving any marks, sniff the trafic, and then ship it back ;). Amazon doesn't have it, only PV retailers, but there's shipping costs and they're not very clear about return policies...
Some statement from the manufacturer (not very useful)
https://community.smartthings.com/t/apsystems-yc600-microinverter-monitored-by-the-samsung-hub/166100
One more guy having the ECU-R and wants to use zigbee connection
https://domoticz.com/forum/viewtopic.php?f=28&t=22368&start=140
One more guy having the ECU-R and wants to use zigbee connection
https://domoticz.com/forum/viewtopic.php?f=28&t=22368&start=140
Thanks for the info. Registered there and posted a message :-)
I'd like to order it from some trustworthy website like Amazon, opening it without leaving any marks, sniff the trafic, and then ship it back ;). Amazon doesn't have it, only PV retailers, but there's shipping costs and they're not very clear about return policies...
Creative :-) Let us hope someone out there with an ECU will voluntair to make a sniff. If no, I do nnot mind to help with the shipping costs.
One more guy having the ECU-R and wants to use zigbee connection
https://domoticz.com/forum/viewtopic.php?f=28&t=22368&start=140Thanks for the info. Registered there and posted a message :-)
And there I am...
Hope I can help out, I have a CC2531 available and the ECU-R paired with a YC600 and QS1. Iāll try the procedure above to sniff the traffic and post the results here. Might take a few days.
Great, thx!
Iāll try the procedure above to sniff the traffic and post the results here. Might take a few days.
Great, thank you very much! Let us know if any problems arise during logging where we might be able to help!
One of my friends has a bunch of YC600's and en ECU-R. I've only got 4 YC600's, but I do have a CC2531 stick with sniffer firmware. We're planning to sniff next weekend (2020-10-03, CEST time zone, looking at how much of a morning person I am, I'd say in the afternoon).
Great, I cannot wait!
Great, I can not wait either.
In case somebody who owns an ECU-R (or ECU-C) stumbles across this thread and is willing to help, I'll try to summarize the steps to obtain a successful sniff of the connection between the YC600 and ECU-R...
* Set up a CC2531 for sniffing. See https://www.zigbee2mqtt.io/how_tos/how_to_sniff_zigbee_traffic.html for details. In case the CC2531 has the TI sniffing firmware (instead of the ZBOSS one): TI offers a software to stream the sniffed packets to WireShark. * Use the APSystems app and remove one inverter from the ECU-C. This should disconnect the inverter from the ZigBee network so that as a next step we can observe the joining process. * Start sniffing on channel 16. (At least for me, channel 16 seems to be the only channel that the YC600 is sending Link Status packets on...) * Re-add the inverter to the ECU-C using its UID. * Check that the inverter has successfully been added in the app. * Wait until values show up in the app. (So now we know for sure that the inverter is back in the ZigBee network.) * Stop the sniffing process and export/save the PCAP file. * Upload the PCAP file here for dissecting. :-) (Please be aware that the ZigBee key is -- hopefully -- included in the PCAP file...) It would also be very helpful to know the entered UID so that we can check how it is used to authenticate.To anybody who is willing to help: Thanks a lot in advance!
I gave it a try tonight but I'm not sure I've succeeded. I've not been able to find the Zigbee key. Removing the inverter is easy but to add it again I had to power cycle the ECU and inverters to get the process to 100% but still the automatic system check in the app fails. As it is dark right now I'm not able to check if the inverter is back in the network, I'll try tomorrow if it is light.
Anyhow, I've attached the file so you can have a look. If there is anything interesting in there it is probably around line 327, here the connection process was finished according to the app.
Thanks a lot! Let us see what we can learn from this sniff.
please be aware that the yc600 is powered from dc, so it is only working when you have enough sun... (no sniffing at night )
I went through the sniff but could not find anything from the YC600 (similar like "46 198.040590 0x26c7 ZigBee 88 Beacon, Src: 0x26c7, EPID: 03:00:12:11:10:90:ff:ff"). Maybe it was not powered any more (no sun)?
Thank you very much for the sniff! As the others said: there needs to be (enough) sun for the inverteres to be powered.
However, from the sniff we still can see a few things!
My first guess would be that the ECU-R is trying to make the inverters send data (which are now connected because of no sun). Would be great to see what happens when all inverters are powered!
Thanks again!
Thanks for your comments. I gave it another try during daytime and at least the pairing procedure was a lot faster and less complicated. The sniffing is started before adding the YC600 to the ECU-R together with 2 QS1 inverters which I did not remove. I stopped as soon as all inverters showed data. I also included the UIDS and short addresses. Hope it helps.
Many many thanks! I see interesting information in this trace, like UID's! I hope we can understand what is going on and can create our own fake ECU :-)
Thank you very much! I had a quick look at the sniff and it's quite interesting. For better reading I filtered the route packets and the link status packets: ((!(zbee_nwk.cmd.id == 0x08)) && !(zbee_nwk.cmd.id == 0x01)) && !(zbee_nwk.cmd.id == 0x02).
This could be the "non-standard" pairing process. E.g. not really pairing in a network, but authenticating the ECU using some kind of challenge/response-scheme which incorporates the UIDs (and probably some magic).
I guess there is some good news: there doesn't seem to be a fancy type of encryption going on. However, unless I'm mistaken, there is a non-standard authentication using "unknown commands" to make the inverters send data to the ECU using "read attributes" packets. Now we need to figure out how these work and try to understand it. And then we need to emulate it -- a thing I'm not even sure zigbee2mqtt is able to do...
Nice analysis! It will not be an easy task to understand this protocol. Coming weekend I will separate the trace of one device and make a flow-chart out of it. Maybe someone here can comment/help how to create/emulate the packets sent by the ECU using zigbee2mqtt?
I have also checked the previous sniff when there was no communication with the inverters. The mailformed packages are also present in that sniff. Would it mean a reception problem?
I followed this guide (https://www.zigbee2mqtt.io/how_tos/how_to_sniff_zigbee_traffic.html) and stopped after I added the Trust center link key in Wireshark. Is this correct or might this cause issues?
The reception should not be an issue I would say, the panels are on the garage roof and the measurement is done inside the garage directly below the panels en 2m from the ECU-R.
Sniffed some more... This time 3 minutes with the ECU-R switched off, after this I switched on the ECU-R (paired with the converters). Maybe it helps to understand the process.
And even more. This time the readings should be as noise free as they can be.
1 - Measured normal operation for about 10 minutes where you can see the status update of the inverters every 5 minutes (for 3 inverters)
2 - I've requested the grid profile for the connected inverters (around 17 parameters per inverter). I suspect these will explain a lot of the attributes you see.
3 - Removed all inverters from ECU-R
4 - Paired only YC600
5 - Updated the grip profile for the YC600 (takes a long time!)
6 - Removed YC600 and only paired QS1
Hope it helps, if you have any questions just let me know
I'm currently sniffing with an ECU-R.
We've got 5 inverters online here, the ECU-R had been offline for a while before starting the first sniff.
Afterwards, we removed all the inverters from the ECU-R and paired only the YC600 with UID 406000008105
The ECU-R is not connected to the internet. At the time of pairing, the app showed 18W and 19W for the connected panels.

Lot of stuff to analyse. Thanks guys!
Sniffed some more... This time 3 minutes with the ECU-R switched off, after this I switched on the ECU-R (paired with the converters). Maybe it helps to understand the process.
ECU-R_switch_on_paired.zip
I have looked into this sniff and I seem to understand (sort of :-):
Thank you guys so much for the sniffs! š That's great! As soon as possible, I'll try to have a thorough look at them.
One more observation:
The packets with "Unknown Command: 0x00 & Unknown Command: 0xa5" are only present in sniffs when pairing is going on.
In the sniff I can also see that this is a Manufacturer specific "something" (ID 0xa5a5 = AP systems?)
Google-ing on "0xa5a5 & zigbee" gave me the attached reference from Jennic (now NXP):
zigbee device profile reference manual.pdf
Page 29 shows a code snippet with profile ID 0xa5a5. Could it be that the ECU/YC600 is based on the API/microcontroller of Jennic/NXP?
Could it be that the ECU/YC600 is based on the API/microcontroller of Jennic/NXP?
If the YC600 was easier to open, without breaking it, I would already had a deep look inside. But everything under the black cover seems to be "glued" with a white silicone mixture.
Some instructions how to send/receive zigbee commands using a PC: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/t/434159?CC2531-Send-and-Receive. Could not find something similar after scanning the docs of zigbee2mqtt. Unfortunately, my CC2531 is still on its way from China, so cannot try for myself
My CC2531 arrived today! I will start experimenting this weekend.
I have managed to get my sniffer up and running using zboss framework. I can see the link state packages of my YC600 on channel 16. So far so good.
I have spent the rest of my free time to find out how to transmit custom zigbee frames back into the network to see if I can trigger the YC600 to send more information.
This does not seem an easy task with the CC2531.
https://github.com/Tropicao/zigbridge/blob/master/doc/firmware_instructions.md
This source says that in order to communicate with other devices on the network, one has to build its on framework based on TI' Z-Stack 3.0. It includes a GenericApplication which can be reused and compiled with IAR Embedded Toolchain for 8051. This tool is not free, altough they have a 30-days trial available. Programing language is C++.
I was also searching for some low-level tools which would enable us to inject frames into the network. Sort of hacktool one can use to experiment with feeding back some (modified) commands from our traces. So I found https://github.com/riverloopsec/killerbee. It does support the CC2531, but only for sniffing... Other (fully) supported devices do not seem very cheap but I will dig into this topic further to see if there is a reasonably priced alternative.
Comments/ideas/feedback is welcome!
Hi all!
I finally had the chance to take a closer look at the provided sniffs. Thank you very much for providing them! Here is a short summary of what we can learn from them.
To be honest: I haven't found an (easy) way to send custom commands. Perhaps we could take a look at zigbee-herdsman's core to find out how to do that. But that is probably way (!) beyond my skill-level...
Xbee is also an interesting device which is able to generate/send frames in API mode: https://subscription.packtpub.com/book/hardware_and_creative/9781784395582/1/ch01lvl1sec12/switching-to-api-mode Cost is around the 20-25 euro. Anyone experience?
You mean this?
Got this laying around here for a work project I was going to pick up again the coming weeks.

Ja, precies. Would be nice if you could test if it is able to generate frames which are similar to what we see in the sniff. With the frame generator included in XCTU (free download of Digi) it seems relatively easy to do this. If this works, we could create a development/test environment in which we send frames with xbee and sniff with cc2531.
I can try this. Nevermind what I wrote about getting up on the roof, I missed the part about the development environment.
Ok. Sending stuff using XCTU is easy and capturing that with the CC2531 is easy too. Now to send stuff that looks remotely like what we captured. Looks like I have some learning to do in the ZigBee world.

It has taken a bit of fiddling with XCTU, since this is my first actual experience with ZigBee, but I have set up a ZigBee network on channel 16 / 0x10 and have managed to send some data across the network.
However, this doesn't remotely look like what the APS devices are sending, since this is a 'normal' network with a coordinator and two routers.

Great that you have managed to set up a network! If I understand correctly, you have 3 xbee devices participating in your network able to echange data with each other?
According to the documentation, there is a frame generator in XCTU which can be used to generate custom frames. I wonder if you can evaluate this generator to see if we can use it to imitate the messages the ECU-R sends?
These frames have already been generated using the frame generator. The frame generator generates frames in the XBee API format.
My guess is that we need to figure out if the XBee API offers possibilities to send frames that look like what the ECU-R sends and, more importantly, pick up the frames that the YC600 sends, since we already concluded that the ECU and YC donāt form a network. The XBee does and the receiving end as currently configured only receives frames for the PAN it is associated with.
Also, have we been able to identify which packets are sent by the ECU-R and which by the YC600?

In the sniffs (like above) you can clearly see the packets of the ECU-R (source 0x0000). Before the pairing it sends "many to one" route requests and the inverters (e.g. 0xcaec)) only sending link status frames.
Well. The only way I can get the XBee to work is in a ānormalā network. The frame generator only helps me generate API commands.
I started reading up on CC2531 firmware development since apparently I need a device that allows a little more freedom.
Bummer. So we know how to "listen" but do not know how to "talk". I am afraid we will need to develop our own tool first :-(
Which hardware uses the ECU-R to build and operate this "non-standard" network? Has anyone opend the box to see what is inside?
Which hardware uses the ECU-R to build and operate this "non-standard" network? Has anyone opend the box to see what is inside?
https://github.com/Koenkk/zigbee2mqtt/issues/4221#issuecomment-703176688
only the inverter itself is unable to open, the ecu-r should be more easy because it does not have to be waterproof...
Which hardware uses the ECU-R to build and operate this "non-standard" network? Has anyone opend the box to see what is inside?
The link in that comment points to a thread on the TI message board which also moves in the direction of setting up a network with a coordinator and routers. Because thatās how it seems to work in the zigbee world.
Yesterday evening I was reading up on firmware development. Didnāt have chance to try things yet.
I opened my ecu-r.

The zigbee chip is in the left/bottom corner. There is a blank metal case behind the label. No details.

Great!! https://fccid.io/2AFGR-APS2530S Some sort of clone of the CC2530?
The user manual of the APS2530S says Zigbee PRO protocol. Does that mean, that this protocol must run on the CC2531 to make it work?
https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/t/151438?zigbee-pro-stack-on-cc2531-dongle-and-using-USB-
how to sniff zigbee pro: https://community.smartthings.com/t/zigbee-sniffer-recommendations/9689/3
differences zigbee and pro: https://www.eetimes.com/zigbee-and-zigbee-pro-which-feature-set-is-right-for-you/
After reading stuff on internet, I think we can still see/detect frames of Zigbee Pro protocol with a Zigbee (Zboss 1.0) sniffer, Only parsing of the information might not work. I have asked this question on the Zboss forum.
I reverted my CC2531 back to the original TI firmware and sniffed using the zigbee pro protocol during the paring of the YC600 with the TI package sniffer. To analyze you will need this software, it can be downloaded here
The only line which obviously stands out is line 24 but I'm not able to find anything interesting. Maybe some of you can?
Did you use sniffer of sniffer-2?
Sniffer
Sniffer-2 is not compatible with the CC2531
Thanks, I have managed to open the sniff. Line 24 is indeed a large one. Let me try to understand what is happening in this sniff.
I sniffed my system (1 QS1, 3 modules connected) with the TI fw as descriped https://github.com/Koenkk/zigbee2mqtt/issues/4221#issuecomment-700925206.
pair_QS1_TI_ZBPro_2020-11-03.zip
Still tying to understand whats going on.
Very difficult to interpret these types of sniffs. It seems I have to learn a lot. Finally got some time to download and install IAR Embedded Workbench for 8051. Went for the 4k limited source installation mode to have enough time to expremiment. Anyone who knows a good tutorial for beginners?
The limited 4k edition of IAR is useless. Do not waste time on it. Use the 30-days fully functional trial version.
Finally managed to get a working IAR for 8051 installation and was able to compile the genericapp example provided by TI.
I installed TI Code Composer Studio and was able to run TI zigbee example on an LAUNCHXL-26X2R1 board. Could see some zigbee communication with sniffer. But sill a long way to go.
Most helpful comment
And there I am...
Hope I can help out, I have a CC2531 available and the ECU-R paired with a YC600 and QS1. Iāll try the procedure above to sniff the traffic and post the results here. Might take a few days.