Unable to get Home Decorator / Hampton Bay Zigbee fan to pair

Well, persistence seems to be key… I think the problem is I was powering this off at the circuit breaker - which then meant I needed the RPI to power up - which added delay. Doing it (more dangerously) by disconnecting one of the leads allowed it to work. Woohoo!

I have 4 paired together outside using the ZHA integration and it works good. I had to put a repeater plug outside to make sure they didn’t disconnect. Grouping them together makes them work better together for me.

I’m in the same scenario but I’m having trouble pairing mine…

I bought the elelabs zigbee usb adapter, set it up in ZHA, but I think the fan won’t reset and pair. I’ve tried the “on/off” every 3 seconds 8 times and the fan doesn’t do anything. I thought it’s supposed to blink 5 times or something… i’ve changed the timing of the on/off to 4 and 5 seconds and still no luck.

Any suggestions?

Figured this out. Turns out I needed to go to the developer tools and run the service zha.permit

Do not believe the manual, make your on/off at 1.5-2 second intervals. And this device is not a repeater, it does not route zigbee messages nor allow devices to connect through it. You will need a repeater nearby or the fan controller will fall off the mesh.

I got mine to pair, but every time HA restarts, the fan becomes unavailable. Then I have to go through trying to remove and reads the fan in order for it to work again. But it’s not always successful.

I have similar issues using zigbee2mqtt… not as bad as that - but the fan and light stops responding every few days. Annoying as hell. I’ve noticed that the issue doesnt seem to happen as much if I leave zigbee2mqtt in pairing mode permanently… but it does still happen. I just ordered the CC2652RB to replace my CC2531 coordinator to see if that helps.

I’ve been getting very frustrated w/ my zigbee setup for a while - especially with this fan and I have been debating replacing it. As a last ditch effort, I bought https://slae.sh/projects/cc2652/ to replace my existing USB zigbee coordinator and HUGE difference so far. Everything is much more responsive and fast - and so far the fan is much more reliable

Yes do install a “Zigbee Router” in the same room as your Zigbee fan to get more reliable reception.

Tip is to buy “IKEA Trådfri Signal Repeater E1746” or alternativly build your own DIY Zigbee Router.

Regardless you might want to look through the very relavant advice on Zigbee range extending here:

ZHA users with MR101Z fans will also want to read and follow the discussions about fan speeds here:

FYI, older CC2652 firmware has bugs so upgrade your Zigbee coordinator firmware (though be sure to backup its NVRAM with example zigpy-znp so that can restore it after the firmware upgrade if needed).

I was running 1.2 as that is what is recommended for the CC2531… 3.0 is still not recommended fo that device, but maybe it solves this issue… Not sure

Fact is CC253x is not recommeded for production in ZHA regardless of firmware. Z-Stack 3 on CC2531 with zigpy-znp is experimental, but so is Z-Stack Home 1.2 with zigpy-cc, and zigpy-znp is more stable.


Also, I understand that all that the ZHA integration page says about firmware can be quite confusing.

ZHA integration page https://www.home-assistant.io/integrations/zha/ list Texas Instruments based radios with Z-Stack Home 1.2.x (via the zigpy-cc library for zigpy) under “EXPERIMENTAL SUPPORT FOR ADDITIONAL ZIGBEE RADIO MODULES”, meaning that Z-Stack Home 1.2.x with zigpy-cc is not recommended for production with ZHA.

Though under “KNOWN WORKING ZIGBEE RADIO MODULES” it lists Texas Instruments based radios with Z-Stack 3.x.x (via the zigpy-znp library for zigpy) and if you follow the zigpy-znp link instead of the Zigbee2MQTT link you will find https://github.com/zha-ng/zigpy-znp project readme file.

Now if you read the whole of https://github.com/zigpy/zigpy-znp/blob/dev/README.md it says that it supports both Z-Stack Home 1.2.x and Z-Stack 3.0.x on CC2531, however, it also says that Z-Stack Home 1.2.x support on CC2531 is classified as “Alpha” (meaning experimental) and Z-Stack 3.0.x on CC2531 on is classified as “Beta” (meaning more mature than experimental but not stable enough for production).

If you continue to https://github.com/zigpy/zigpy-znp/blob/dev/README.md you will see that you can do a backup and restore to other hardware as long as the firmware is the similar versions, which means that you can start out with CC2531 hardware with Z-Stack 3.0.x firmware and later upgrade to CC2652 hardware with Z-Stack 3.x.x firmware if you do a backup and restore.

As you also noticed Zigbee2MQTT on the other hand (which is not the same ZHA) recommends Z-Stack Home 1.2.x firmware on CC2531 and CC2530 but you need to understand that their recommendation is for Zigbee2MQTT and not for ZHA. ZHA only links to https://www.zigbee2mqtt.io/information/supported_adapters because that project provide firmware image files, however that does not mean that their firmware image files only work with Zigbee2MQTT, as it happens, they also work with ZHA (both with zigpy-cc and zigpy-znp).

Again, the main point you should take out of this is that CC2531 is still not recommended for production, but if you want to continue using CC2531 with ZHA when upgrade to Z-Stack 3 and switch to zigpy-znp.

I tried this with Zigbee2mqqt and a CC2531 with limited success. At first the device refused to pair, but would quickly pair to my Smartthings hub when I plugged that back in. When I tried pairing to the CC2531 I made sure the Smartthings hub was unplugged to avoid interference. I re-flashed the CC2531 with source routing firmware instead following these instructions - https://www.zigbee2mqtt.io/information/flashing_the_cc2531.html . The fan paired right away after that, but it seemed like it was bombarding zigbee2mqtt with messages and it eventually locked up and stopped responding. After a restart, it refused to reconnect and only would after force deleting and factory resetting the fan. The log in zigbee2mqtt kept saying a probe for an OTA update failed at the time of lockup. My CC2531 doesn’t have an external antenna, but I’m in the same room with this fan. I know range on these fans is awful, but the CC2531 pairs to Ecolink contact sensors no problem on the other end of the house with no repeater in between. I gave up and paired it back to my Smartthings hub. Anyone have any other ideas?

Wow, my fan just magically paired itself today. HA is just full of surprises.

Can anyone point to to the documentation on the fan speed configuration? I see different fan speeds like low, med, high, but what is Auto and Smart?

This is the manual https://images.homedepot-static.com/catalog/pdfImages/a2/a2434365-e373-414b-b712-3a32a5698de6.pdf

The fan has a breeze mode that continuously changes the speed randomly. Not sure if that is considered “auto” or “smart”?

What zigbee stick are u using? I just ordered a LAUNCHXL-CC26X2R1 which has an upgraded chip. This fan has awful range and sends constant messages back to the controller so I dont think the cc2531 can handle it.

I got the Elelabs Zigbee USB Adapter.

It’s been working for the last few days, hoping it keeps working. Don’t even want to restart HA anymore. Haha

I ended up getting the Electrolama stick which is on the zigbee2mqtt compatible list of controllers. I ordered it on Tindie and it came in about two weeks from England. It’s based on the better CC2652R TI chip.

So far no issues at all with it. The fan works fine, no dropped connections, and quickly reconnects after a restart. It is now more reliable then it was on the Smartthings hub even. The cc2531 definitely doesn’t pair well with this fan and if you want to keep this fan an upgraded chip seems like the way to go.

Link to zigbee2mqtt compatible chips below. It’s first on the list.
Supported adapters | zigbee2mqtt.io

On another note though, when it came over from zigbee2mqtt into Home-assistant only the first 3 speeds are supported on this 4 speed fan. There’s no option to set high or the “smart” breeze mode. I got around it using the zigbee2mqtt palette in Node red which can set these two high and smart modes, but will probably need to do a custom fan template to mqtt to support all 4 speeds and the breeze mode right from home assistant.

If anyone needs it, here is a Node red flow I put together for Alexa control using this skill. It would come in as a bulb but percentages could be set for all 4 speeds, and 1 percent would set the smart/breeze mode - Introduction — Node-RED Smart Home Control documentation

[{"id":"a695a1be.001e28","type":"alexa-smart-home-v3","z":"a40e0c60.10e8c","conf":"","device":"30837","acknowledge":true,"name":"","topic":"","x":180,"y":2980,"wires":[["f143594b.5d1fa8"]]},{"id":"f143594b.5d1fa8","type":"switch","z":"a40e0c60.10e8c","name":"Fan Sets","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"OFF","vt":"str"},{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"1","vt":"num"},{"t":"btwn","v":"2","vt":"num","v2":"39","v2t":"num"},{"t":"eq","v":"ON","vt":"str"},{"t":"btwn","v":"40","vt":"num","v2":"59","v2t":"num"},{"t":"btwn","v":"60","vt":"num","v2":"79","v2t":"num"},{"t":"btwn","v":"80","vt":"num","v2":"100","v2t":"num"}],"checkall":"true","repair":false,"outputs":8,"x":380,"y":2980,"wires":[["2a72cba1.9277bc"],["2a72cba1.9277bc"],["d9dc35cf.15a0f8"],["3b6e5eff.4bb07a"],["6ff086e8.052d4"],["6ff086e8.052d4"],["b4b63eeb.cf809"],["c8e33ab4.fb9318"]]},{"id":"2a72cba1.9277bc","type":"api-call-service","z":"a40e0c60.10e8c","name":"Turn off","server":"","version":1,"debugenabled":false,"service_domain":"fan","service":"turn_off","entityId":"fan.bedroom_fan_3","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":640,"y":2900,"wires":[[]]},{"id":"d9dc35cf.15a0f8","type":"function","z":"a40e0c60.10e8c","name":"Smart Mode","func":"var payload = msg.payload;\nmsg.payload =  {  \n  \"fan_mode\": \"smart\"\n   }\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":2960,"wires":[["fd3144a7.b159"]]},{"id":"fd3144a7.b159","type":"zigbee2mqtt-out","z":"a40e0c60.10e8c","name":"","server":"","friendly_name":"Bedroom Fan","device_id":"0x0022a3000029410e","command":"state","commandType":"z2m_cmd","payload":"payload","payloadType":"msg","transition":0,"x":900,"y":3040,"wires":[]},{"id":"3b6e5eff.4bb07a","type":"function","z":"a40e0c60.10e8c","name":"Low","func":"var payload = msg.payload;\nmsg.payload =  {  \n  \"fan_mode\": \"low\"\n   }\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":3000,"wires":[["fd3144a7.b159"]]},{"id":"6ff086e8.052d4","type":"function","z":"a40e0c60.10e8c","name":"Medium","func":"var payload = msg.payload;\nmsg.payload =  {  \n  \"fan_mode\": \"medium\"\n   }\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":3040,"wires":[["fd3144a7.b159"]]},{"id":"b4b63eeb.cf809","type":"function","z":"a40e0c60.10e8c","name":"MH","func":"var payload = msg.payload;\nmsg.payload =  {  \n  \"fan_mode\": \"high\"\n   }\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":3080,"wires":[["fd3144a7.b159"]]},{"id":"c8e33ab4.fb9318","type":"function","z":"a40e0c60.10e8c","name":"High","func":"var payload = msg.payload;\nmsg.payload =  {  \n  \"fan_mode\": \"on\"\n   }\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":630,"y":3120,"wires":[["fd3144a7.b159"]]},{"id":"9102cdcf.0d17e","type":"function","z":"a40e0c60.10e8c","name":"On or Off","func":"if (msg.payload == \"off\") {\n    return { \"payload\" : { \"state\" : { \"power\" : \"OFF\" } }, \"acknowledge\" : true };\n}\nelse {\n    return { \"payload\" : { \"state\" : { \"power\" : \"ON\" } }, \"acknowledge\" : true };\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":540,"y":2780,"wires":[["59b054d2.958d54"]]},{"id":"7144f837.9c2bc","type":"stoptimer","z":"a40e0c60.10e8c","duration":"1","units":"Second","payloadtype":"num","payloadval":"0","name":"","x":720,"y":2840,"wires":[["59b054d2.958d54"],[]]},{"id":"59b054d2.958d54","type":"alexa-smart-home-v3-state","z":"a40e0c60.10e8c","conf":"","device":"30837","name":"","x":970,"y":2840,"wires":[]},{"id":"cd1feaf0.788fc","type":"zigbee2mqtt-in","z":"a40e0c60.10e8c","name":"Fan Mode","server":"","friendly_name":"Bedroom Fan","device_id":"0x0022a3000029410e","state":"fan_mode","outputAtStartup":true,"x":220,"y":2820,"wires":[["48742e58.67c"]]},{"id":"9cfe2f7d.b00ee","type":"function","z":"a40e0c60.10e8c","name":"Translate","func":"if (msg.payload == \"on\") {\n    return { \"payload\" : { \"state\" : { \"brightness\" : 100 } }, \"acknowledge\" : true };\n}\nelse if (msg.payload == \"smart\") {\n    return { \"payload\" : { \"state\" : { \"brightness\" : 1 } }, \"acknowledge\" : true };\n}\nelse if (msg.payload == \"low\") {\n    return { \"payload\" : { \"state\" : { \"brightness\" : 25 } }, \"acknowledge\" : true };\n}\nelse if (msg.payload == \"medium\") {\n    return { \"payload\" : { \"state\" : { \"brightness\" : 50 } }, \"acknowledge\" : true };\n}\nelse if (msg.payload == \"high\") {\n    return { \"payload\" : { \"state\" : { \"brightness\" : 75 } }, \"acknowledge\" : true };\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":540,"y":2840,"wires":[["7144f837.9c2bc"]]},{"id":"48742e58.67c","type":"switch","z":"a40e0c60.10e8c","name":"Off?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"off","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":390,"y":2820,"wires":[["9102cdcf.0d17e"],["9102cdcf.0d17e","9cfe2f7d.b00ee"]]}]

Many of the issues with the King of Fans/Hampton Bay controller are resolved by replacing the antenna with the one below. No soldering, just unplug the old one and plug in the new one.

wlaniot 2.4G Wireless Mini PCI PCI-E WiFi Bluetooth Internal Antenna Built-in Antenna (5dbi,700-2600Mhz,U.FL/IPX Connector,RG178 Cable 4inches) 2pcs https://www.amazon.com/dp/B077SVP7PN/ref=cm_sw_r_cp_api_glt_fabc_0TJ54ECGE06WC1D3RVCY?_encoding=UTF8&psc=1

Did that antenna replace the one on the usb controller or attach to the Hampton bay controller itself? If on the Hampton bay controller I assume you have to take it apart to get to the plug.

Sorry, I should have been more clear. It is the antenna on the Hampton Bay controller. You do need to open it up. I think there were four screws. One controller had a dab of glue holding the cable in place. The other one had nothing. I used a Stipe of electrical tape to secure the wire. Since then the fan has been reliable. The antenna is a little ugly and any day now, I’m going to paint it to match the ceiling and use double sided tape to stick it up. Any day it could happen.

1 Like