Solution to Constant Motion Capture not working consistently

A little back story:

I had flashed RTSP firmware onto my Wyze cams, later I decided to switch to CMC given the more than fair price and ease of accessing motion recordings through the Wyze app.

When I decided to switch back to the main firmware, I ran into a few issues. First thing I did was flash the latest firmware from the RTSP firmware I had on the cam, when doing this, CMC did not work. I then tried flashing an old pre-cmc firmware, and then OTA upgrades to most current…CMC started to work when it wanted to, but non CMC motion recording works perfectly. Then when 4.9.5.105 came out, upgraded to that and CMC worked for a few hours between device resets, non-cmc motion recording still works perfectly. Given this behavior, I knew it had to be a firmware related issue.

Below is the solution if you experience CMC not working, maybe regardless if you originally had RTSP firmware installed or not.

Again, unsure if this is just a firmware bug, or some weird issue when you go from RTSP back to main firmware

The Issue:

When CMC is enabled, at lease on my devices they do not close TCP connections when they receive a FIN packet from your router/firewall. The lack of an acknowledgment of a request to close a connection either leaves your router in a FIN_WAIT_2 state for the connection to the Wyze cam, or it will force close the connection.

What should happen, and what non-cmc devices are doing is they acknowledge the request to close the TCP connection, and then establish a new connection once the old one is closed. Wyze cams under normal behavior should be doing this, or sending keep-alive requests to the router.

The solution for Pfsense is to create a separate firewall rule for TCP traffic and set a TCP state timeout of say 300 seconds. Also, you should enable sloppy states so if the Wyze cam tries to call home without sending an initial SYN request, the connection is allowed. Default settings don’t timeout TCP quickly, and won’t accept TCP connections not existing in the state table.

I have relayed this info to Wyze support, waiting to hear back. Unsure if this is a definite “patch” as I have just been testing for a few days. I hope to hear feedback from Wyze and to see this issue fixed.

If you are having this issue, and don’t know how to change these settings I am more than happy to help.

If you are a tech and want more details I’ll happily share with you the state tables showing this behavior.