The firmware allows creating a device with a easily configurable functionality including inputs, outputs, ADC, pulse counter/generator, I2C, external sensors.
Features overview
I’ve placed all features on the separate page. It is too long.
- The status LED indicator works now.
- The firmware supports up to 8 GPIO inputs or outputs.
- The “switch” mode for inputs.
- Pull-up and Pull-down options for inputs and outputs.
- Analog inputs.
- Internal temperature measurement.
- Source voltage measurement.
- UART (only text commands between an external device and a host, look at README.txt).
- Simple MODBUS master implementation (reading sensors).
- Some environmental sensors (DS18B20, BMP280, BME280, DHT 11, DHT 22, DHT 12, AM2301, Sonoff SI7021, MHZ19, SenseAir S8, Sensirion SPS30, SI7021 (I2C), CCS811).
- BH1750 (Ambient Light Sensor).
- PZEM-004T (Energy Monitor Sensor)INA219 (DC Voltage/Current Sensor), INA3221 (3-channel DC Voltage/Current Sensor), ACS712, ACS758 (Current Sensors)
- Pulse generator.
- Pulse counter (infinite, resettable, interval).
- PWM (hardware, up to 128 kHz).
- PWM (software, up to 3 kHz).
- Bi-stable relay.
- Watchdog timer.
- Configurable default reporting interval.
- Expert options (model ID, manufacturer info, network key, etc.).


Download
Your comments and bug reports are welcome :-)!
Changelog
The detailed changelog is placed on a separate page.
Raymond
Would it be possible to use this Firmware to flash it into a Gledopto LED-driver, which has a TI CC2530, and control RGB+CCT lights? so 5 channels? Gledopto’s has wierd bugs.
Owner
Sorry, but I didn’t test my firmware with this device. I don’t know how to configure firmware for it.
Marco
Hi,
I want to build a battery zigbee led strip device with this E18-MS1-PCB (http://www.ebyte.com/en/product-view-news.html?id=122).
This firmware could be set up for client device only, with max energy save mode setting (deep sleep) activated?
Thanks you
Owner
Hmm, a LED strip and power saving. Are you sure? Your LED strip will consume much more energy than CC2530. In any case, the firmware does not support power saving yet.
Wojciech
Would it be easy to add InfraRed (IR) receiver, for example to receive IR signal from IR sensor conected to CC2531. I would like to use it with Hob2Hood induction cooking plate.
Owner
Sorry, but I do not plan to add IR to the firmware. You can use an external Arduino board to decode an IR signal and send data through UART.
Smartict
With support for the new E18-MS1PA2 I double checked the old PCB Usermanual for the E18-MS1PA1 series. The E18-MS1PA1 already used the pins p1.0 and p1.1 and it had the same compiler directive for the HAL_PA_LNA directive. So with earlier versions of your tool i always used the board type CC2530 + CC2592 (as this is indeed under the hood in the older E18-MS1PA1). Would you suggest now to keep using this board type or would you suggest to move to the CC2530 + RFX2401 board type with the adjusted TXEN and RXEN setting to P11/P10 for the older E18-MS1PA1 type? Your suggestion is highly appreciated.
Owner
Leave CC2530 + CC2592 for MS1PA1. It is a proven and working solution.
Gianpi
Hello,
does the firmware is suitable to build battery-powered sensors?
Thanks
Owner
No, yet.
David
Hello,
I just bought 2 repeaters zigbee-cc2530+cc2592
thinking it was compatible with deconZ an could be extend my network.
When I start one it is not recognized by phoscom, dconZ through the graphic interface.
But after a while I can see the node in dconZ but no connections are created with my other zigbee components.
The stock firmware is zigbee-switch-configurable-firmware-v2-210
My config:
raspberry 3b+
deconZ raspbee
sensors door/window xiaomi
Do you have maybe an idea about that issue, please?
Thank you for your time.
Best regards,
David
Owner
Hi David. I’m sorry, but I cannot answer questions about the dconZ because I didn’t try it at all.
If you can successfully pair a device with your network, new connections may appear after a while. It is not a fast process.
galdaka
Hi! I have flashed the CC2530 with the end_device firmware and added it to Home assistant.
I only need one ouput and I don’t know the default output pins of the firmware.
State_l1 in which PIN is assigned by default to turn on or off?
Owner
Hi! You can use any pin from P01-P6, P12-P17 as output. If you do not need other channels in HA, you may adjust your device configuration (in HA) and delete unused channels.
galdaka
Hi. Thank you for answering so quickly. None of the pins you refer to works for state_l1 when I send payload: “{\” state_l1 \ “: \” OFF \ “}” or payload: “{\” state_l1 \ “: \” ON \ “}” the voltage is always the same
Owner
Then you should show your full configuration. What pin did you configure as Output 1? Did you select the pull-up mode?
galdaka
I had everything working for a month.
topic: zigbee2mqtt / Air Wick / l1 / set
payload: “{\” trigger \ “: 1}”
It no longer works in Home Assistant.
PS: I don’t have the latest firmware on the CC2530
Owner
Hi. Are you sure that the 1ms interval is enough to get any feedback on your device?
Simon
Hi, great site and thanks for posting your hard work for all to share. I was looking in your downloads and noticed that you haven’t posted a version of coordinator for CC2530 without an amplifier. I’ve found that the Z-Stack 1.2 won’t run on my basic board and was looking for alternatives and ended up on your site. Have you ever compiled and tested 1.2 coordinator against a plain CC2530?
Owner
Hello. The coordinator firmware for a simple CC2530 is useless. Therefore I didn’t make it.
Yusuf
Thank you for this great project, I hope you continue.
I have a question, do you have detailed information about battery consumption? I am thinking of designing some products with CR2032 batteries and I am thinking of meeting the software needs from this project. (Of course I am planning a high donation for this in order to remain ethical)
Owner
Currently, the firmware does not support the power-saving mode. I collect donations for this feature. Consumption: 26 mA in the active mode (measurements) or 0.4uA in the sleep mode.
Jürgen
Thank you for your amazing work! It’s making things so easy!
I have problems when using BMP280 with CC2530.
It reports the values only 2-4 times, then it doesn’t respond anymore until i reset the device. I tried different ports (e.g. same like in your documentation) , watchdog, etc but always the same result.
Do you have a hint?
Owner
Hello. Did you try EndDevice or Router firmware?
Jürgen
Your absolutely right, thanks! The End-Device firmware works like a charm with my E18-MS1-PCB.
Is it a limitation or a bug?
Owner
I do not know :). Maybe, the router does not free resources for polling BME280 correctly.
Sergey
hello.
looking like similar problem with ACS712
doesn’t respond after same minutes in router mode and work correctly in end-device mode…
any chance to resolve that?
Owner
I’m working on this problem.
Maui
Hey guys,
when I change from routing to Endpoint, is this some kind of Power Saving?
Has anyone of you tested this?
Owner
Hi. No. The firmware does not support power saving yet.
Verydarksheep
Hi! How much coffee would it take to support power saving? 🙂
Owner
Hi! Maybe, 10 liters of coffee :).
Bennic
Great configurator! Thank you for your work.
Bought you 3 coffee 🙂
Owner
Thank you 🙂
Doublet
I have connected 4 DS18B20 to port P15 on CC2530 (external pull-up) like you described with no ID per sensor. The 4 sensors are reporting values, but all on l1 in a random order.
Here is an example of one report via MQTT:
{“device_l1″:”28-CB-FE-E3-08-00-00-99″,”device_l2″:”AA-BB-CC-DD-EE-FF-01-02″,”device_l3″:”AA-BB-CC-DD-EE-FF-01-03″,”device_l4″:”AA-BB-CC-DD-EE-FF-01-04″,”l1″:18.875,”l2″:0,”l3″:0,”l4″:0,”l5″:26,”linkquality”:110,”temperature_l1″:18.9,”temperature_l2″:0,”temperature_l3″:0,”temperature_l4″:0,”temperature_l5″:26}
How can I get these 4 sensors to report separately on l1, l2, l3, l4 ?
Owner
You need to add D18B20 on other outputs with the same pin number and specify the device ID.
Doublet
Thnx, done it and this is how: https://community.home-assistant.io/t/diy-zigbee-4x-ds18b20-temperature-measurement/246584
Owner
Thank you! I’ve added a link to your tutorial.
Dmitry
Thank you very match for your amazing job. Hope you’ll continue and we’ll see control of addressable led one day.
Dave
Hello!
Would it be possible to use Z-Stack 3.0.x? According to this: https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator it would support more direct children.
I already use quite a few DIY routers with your firmware and it works flawlessly. (Thanks!) One thing that I noticed is that every router has only 5 routes at maximum. I have a pretty large network and possibility to increase routes number per router is really tempting. I feel that I may lack some “bandwidth” as all my DIY routers are already at their limits.
Cheers!
Owner
Sorry, but I do not plan to use Z-Stack 3 for CC2530 and CC2531. I think ‘direct children’ are applicable for a coordinator only.
Dave
Ok, that’s fine. Thanks for such a quick reply! 🙂
I’m not sure if ‘direct children’ are applicable to coordinator only. I just can’t tell because I use ConBee with deCONZ and see only 5 routes from DIY routers, routes for sensors are simply not shown in deCONZ.
I will trust your knowledge cause I don’t have anything to back up my feeling 😉
PS I’m looking forward to PSM! And thanks for recent update with “firmware for end devices (without routing)” – that will be much useful in some places.
Dave
PS I just wanted to donate, however I can’t do so via Yandex.
It’s in Russian and I cannot change the language, and for some reason it does not accept my credit card. Please consider providing buymeacoffee.com or PayPal donation options. I will certainly back up your hard work 🙂
Owner
The page detects geolocation and shows the appropriate variant :-). Thank you for the info about buymeacoffee.com. I’ve added that button too.
Dave
That’s great, thanks!