Long-term connected Wixels radio issue

We have approx 35 Wixels connected to mac minis over USB (“serial”), communicating with an external sensor Wixel. We’ve had about 6 of the Wixels radios stop communicating with the sensors. A USB unplug/plug gets the Wixel back up and running again. Every night at 2am the machines reboot - during this time the Wixel doesn’t lose power (we’re experimenting with an actual shutdown to solve issues with another device, which may address the Wixel problem). The wixel is still running - interacting with serial works and we can get information for the connected wixel using the command line utility. It just seems like the radio no longer works.

With logging that is already in place, there is no obvious pattern to the Wixel radio issues, it seems random. This has happened to 6 of our Wixels so far, with one unit stopping working altogether.

Any ideas on why this might be happening? Is the Wixel suitable for continuously running, or should we periodically power cycle them? The sensor wixels, so far, have run flawlessly and we’ve had more problems with the power supplies failing than anything.

Thanks!

Hello.

I am sorry you are having trouble with your Wixels. I don’t know of any particular problem with the Wixel itself that would cause the radio to stop working after a long time, so this sounds like it could be a firmware issue. If you provide your Wixel code and more information about what is going wrong, I might be able to help troubleshoot it. I don’t know anything about the radio protocol you are using, but one possibility might be that the two Wixels are both transmitting at the same time, so neither can receive packets from the other. We make this problem less likely in our Wixel apps by using pseudo-random packet timing.

As a workaround, you might implement a USB-serial command that causes the Wixel to do a complete reset. In response to the command, the Wixel could disable the USB pull-up, then wait for at least 100 ms so the computer can detect the disconnection, and then enable the watchdog timer and sit in an infinite loop until the processor resets.

–David

Thanks - will send you the code for both Rx and Tx.

We’ve thought about the remote restart - and will likely implement that when we get a chance. Our base station code doesn’t transmit (yet, anyway) and only receives. There are other Wixels in the vicinity - but separated by cinder block walls and large distances. Overall we’ve been pleased with the Wixels - just trying to make them more reliable.

After receiving a helpful email from David, I went ahead and made some recommended changes to our code. It has only been running for a few hours, so we won’t know immediately if it fixes our problem. It is related to how calibration is triggered - a Wixel that only receives will not recalibrate itself until it is rebooted (which ours aren’t).

The way we ensured calibration was by setting the RX Wixel to IDLE instead of FSTXON:

    radioQueueInit();
    MCSM1 = 0x00;    // Disable CCA.  After RX, go to IDLE.  After TX, go to IDLE.