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.
Frans
Have two quick questions about this great firmware:
1. I see the Sensirion SPS30 is supported, can i also use the SCD30 (CO2) sensor? Or do you need to add this sensor?
2. Do you think a battery powered end-device will be possible in future firmware updates?
Owner
Hi,
1. Yes, I should add this sensor before.
2. Yes, I’m working on it.
m0wlheld
Hi,
just flashed your firmware to a cheap CC2531 (see below) stick in order to use it to control my „smart“ power meter. I already configured and tested a counter and it works.
However, I don‘t know neither the correct firmware settings for the onboard LED, nor how to configure „internal temperature“ and „voltage“.
Any chance you might help, please?
Device: https://www.itead.cc/cc2531-usb-dongle.html
Owner
Hi,
This dongle uses the following pins:
Green LED: P00
Red LED: P01
Button S1: P12
Button S2: P13
https://ptvo.info/zigbee-configurable-firmware-features/diy-configurable-router-firmware-for-cc2531-dongle/
Petr
Hi, I don’t know what I’m doing wrong, but I’m using a few cc2530 with the latest FW and zigbee2mqtt and Home Assistant, unfortunately I can’t configure more than 5 outputs, although they see 8 in HA, but they don’t work from 6. Thank you for your help.
Owner
Sorry, but I cannot help with HA. Could you try to send commands directly through MQTT and zigbee2mqtt?
EmU
Hey thanks a lot for your great software. Have it already used in some nice projects
Would it be a possible (with a reasonable effort for you) to add a rotary encoder to the supported device list. I was planing to build this media knob as a battery powered device and the cc2530 seems to be a good micro controller for this type of project. But till now your Firmware seems to be the only where I can just imagine to get this thing up and running.
https://blog.prusaprinters.org/3d-print-an-oversized-media-control-volume-knob-arduino-basics_30184/
And maybe a rotary encoder could also be used for other great projects with the cc2530 and your firmware.
Thanks a lot just for a answer
Owner
Sorry, I do not plan to add this encoder.
Wojciech
Hello,
please take a look on this project https://github.com/kakaki/esphome_dietrich.
This is connection with Boiler Die Dietrich using ESP8266 base on wifi chip.
It is possible that your Firmware can do this using CC2530 somehow with zigbee ?
What do you think?
Thx
Wojtek
Owner
Hello. No, my firmware cannot communicate with Dietrich.
Giovanni
Hi, are there linux or mac versions available?
Owner
Hi,
Sorry, but no.
gio
Hi, i’m preparing a site where i would like to publish my works with a zigbee board (that i designed) and this firmware. Can i link there your site and use screenshots of your software?
If you want you can also use my projects designes in your cookbook section.
Let me know, thank you.
Owner
Hi, Yes, of course, you can link to my website and use images and screenshots.
Xap
Hello,
First of all, THANK YOU, I tried to use the TI environment but this firmware did my life really easy.
I want to request one feature… as you know the output power of gpio is only 4ma (except two pins). To use in some applications is not enougth, but we have 19-4ma pins.
Using more than one pin for the same output, to reinforce output power, can do our life even easier.
For example SSR G3MB requires about 10ma. With ESP I use directly connected to 5v and GND to open-gate, but to do the same with cc2530 I’m limited to two SSRs.
In any case… thanks for all.
Owner
Sorry, but I can only offer to add an external transistor. I think it is a bad practice to connect several outputs to one wire.
Xap
Using open-gate and low shouldn’t be a problem. Using high and low yes because during some clock steps can be a shortcut.
Yes, I know a ttl fet is the best way.
Thank you for your answerd.
Jim
Hello,
First , Thanks for your work !
I have a little issue with this bistable relay (https://i.stack.imgur.com/GOItR.jpg), I try to connect it to the CC2530 with a power suply 5V and I don’t know how configure the firmware to work with the relay.
I tried “Bistable Relay ON/OFF” function , “Pulse Switch” and “GPIO” on Output 1 pin P06 and connect it to the T pin of the relay but I always have the same issue that I need to switch two times the switch l1 in my home assistant to activate 1 time the relay. So each OFF command are send, the relay move but I would like that the relay move each ON and OFF commands like a basic switch.
I hope you’ve an idea how I can configure the firmware.
Thanks in advance for your answer.
Owner
You need the “Pulse switch” output in the firmware. Remember state: off. Restore state: Off. Maybe, you should try to enable the “Inversed” option. Also, check the voltage on the “T” output. It should not be more than 3.3v.
Casey (Spain)
Hello,
First of all thank you for the amazing firmware.
I am currently trying to set it up with a Conbee II stick with Deconz running on HA, using a CC2530+CC2591.
I would like to achieve 4 x (Single click , Double click and long click) so this can trigger scenes in HA.
I have used P01,P02,P03 and P04. Configured as GPIO Pull-UP and checked the Long and Double box.
Output 1 configured as GPIO Pull-down on P13, for no particular reason really.
Firmware loaded to the CC and connected to Deconz with no issues.
I can see the 4 End Points created. And the Multistate Input (Basic) of each endpoint.
I have binded to the coordinator.
But I do not see how the atribute should be added since it is a write only with a current value of 103.
Read Config fails obviousy on the attribute editor.
Could you please give me some advide on this? I must be missing something obviously.
It is not shown in Phoscon BTW.
And I do not detect any event in the deconz_event in HA.
Thank you very much.
Casey (Spain)
Hi Again,
Just seen that there is a Beta version for Phoscon that came out end of last year that mentions:
-Enable light bindings for PTVO switch relay 4/8 and DIYRUZ devices
So might be best to wait for the next stable version to see if that way i can get it in via phoscon to HA.
Any help is of course appreciated
Thanks for all the work again.
HL
I want to use the CC2530 for motion sensor using HFS-DC06 Microwave radar. I flashed my board successfully as below. The device is added to Home Assistant successfully as well. However, I do not know how to get the info from Home Assistant as a switch. Could you please help me! Thank you.
——
Board type: CC2530 + CC2591
Device type: Router
Transmit enable (TXEN): P12Receive enable (RXEN): P14
Update firmware’s timestamp : 2021-01-28
Default reporting interval (s): 60
Input pins:
P06: Input 2, GPIO, Pull-down, Switch
Owner
Please, do the following:
1. Add output2 with any unused pin: Output2, GPIO, Pull-up, Remember state off
2. Link your Input2 to Output2.
3. Delete your device in Z2M and HA.
4. Repair the device.
Roman
Hi, after a long search I found this great firmware.really amazing effort.
Ordered some 2530 for testing now.
I was seeking for a possibility UART an esp32 to send data (e.g. 12 x ds18b20, etc.) via cc2530 to zigbee2mqtt.
Might this be possible with your firmware?
🙂 if it would work in both directions the esp could also be used to switch etc.
The esp32 can be programmed in micropython. So it would be universal for somebody like me lacking the knowledge to write firmware.
Thank you for your time doing such a great job!
Owner
My firmware can send data to an external device through UART and send it back to a coordinator. But the firmware does not parse it. It would help if you had a custom converter on the coordinator side.
Richard
Hi, Amazing work! Is this (/could it be?) compatible with Philips Hue bridges for a single PWM output to show up as a lamp with brightness control?
Owner
Sorry, but I didn’t test my firmware with these bridges.
gio
Hi, great work! It would be possible to use your firmware in small projects to sell on Tindie or similar? Donations would be enough to compensate your work in this case? Thank you.
Owner
Hi! No problem. It would be great if you can also add a link to my website with the firmware.
Moji
This is amazing, thank you very much. could you please show us some examples of good hex files?
Owner
What hex files do you mean?
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.
Raymond
I’ve hooked some wires to the device. CC-tool says Firmware is locked. When I find out which output-pin is connected to which pin of the Mosfet-driver. Do you recon it would be possible?
Owner
If a chip is locked, you should Erase it the first time.
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.
mamra
you can change under expert settings:
– manufacture to ‘LUMI’
– Model ID to ‘lumi.router’
and will be seen in phoscon but connections will show only with routers, no end devices
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!