I did some testing of the new 3.21 worlds firmware today, the results are mixed.
The following was observed the first time I ran these tests, I subsequently tested again with standard 3.21 firmware but was unable (so far) to duplicate the results. In other words, the standard firmware was able to establish a link every time I power cycle the cortex. No idea what to make of this, perhaps something to do with WiFi channel selection or interference, anyway, this is what what I fould the first time around.
Looking more closely at the failed link condition, it does appear that the user code does try and start as the LED in the digital port turns on, however, something then goes wrong.
The test condition used a cortex (hardware rev A3) running a small EasyC program tested first with the new 3.21_worlds firmware and then with the standard 3.21 firmware that is included with the current releases of EasyC (126.96.36.199) and ROBOTC (3.08). A joystick using 3.21 firmware was linked to the cortex with a competition switch connected set to driver control, power from the cortex was then removed and reapplied, the time taken to link back to the joystick was measured. This was supposed to simulate a reset to the cortex (for example, motors stall causing brown out or battery connector was loose). For the purpose of this test there was no backup battery.
The standard firmware links approximately twice as fast as the new firmware, however, 50% of the time it failed to re-establish a link giving a single green VEXnet LED.
The worlds firmware always managed to re-establish a link but this takes on average 19 seconds after reapplication of power.
A video showing a comparison between standard and worlds firmware when a link is successfully achieved is posted here. (click on image to play)
A video showing a comparison between standard and worlds firmware when the standard firmware fails to achieve a link is posted here. (click on image to play)
So my conclusion is that the new worlds firmware (in my environment) is slower to re-establish a VEXnet link after a power loss but is more reliable when compared to the standard firmware.
ROBOTC 3.04 uses master and joystick firmware 3.16. I have used this for many months and it seems stable, I don’t know if it suffers the problems of 3.21 but the teams I coach used it at several competitions without problems.
Just because your robot works fine before you put it in the box to ship to worlds, doesn’t mean it will be fine after shipping, at the worlds venue, with 3000 other wifi running.
Conservative: If it ain’t broke, don’t fix it.
Denial: If it ain’t broke now, it ain’t never gonna break in the future.
Tinkering: If it ain’t broke, break it! Then fix it better than new.
Proaction: Look for things that are about to break, by seeing reports of other peoples problems, and look for ways to make your robot more robust.
Test multiple software versions to find out if they work for you.
Do it in advance, so you don’t have to panic at the last minute.
Have “quick-swap” cortex physical and electrical connections, and a spare, pre-programmed cortex ready to swap in during your time out.
I heard advice once: “If you think the field is causing you to be disabled during driver control, just pull the competition plug; Now if it doesn’t work, you know it is your own robot fault” Was that only from the pre Vexnet days of Crystals, or does it still apply to vexnet ? Does pulling the competition cable out of the Vexnet joystick cause a wifi-disconnect?
From my experience, no. My team will sometimes unplug the competition cord when we’re supposed to retrieve robots from the field and drive the robot towards us so we don’t have to walk as far onto the field.
The standard 3.21 firmware sometimes works well, sometimes it will not connect.
The worlds 3.21 firmware always manages to connect, sometimes it only takes 10 seconds, sometimes it takes around 20 seconds, presumably it has to retry something, this may have been the point in the standard firmware that used to fail to connect and now it re-tries.
My guess at what is happening is that it has something to do with the selected WiFi channel. Some channels allow good connections, others have problems. I don’t really have the tools to analyze this but when the system is first turned on a negotiation between cortex and joystick happens. They are using an ad-hoc network (perhaps on a randomly chosen channel) and send ARP packets to exchange IP addresses (typically 10.1.163.120 and 121). There is no SSID visible for this ad-hoc network but the BSSID is probably known to both cortex and joystick, guess this is part of the learning process during tethering. After connection has been made something unknown happens as “normal” WiFI packets stop and it looks like a point to point tunnel is created, this is where I would need more test equipment to be able to understand it.
Anyway, I did revert my system to version 3.16 firmware in both cortex and joystick (although 3.21 in the joystick seemed to still connect to the cortex with 3.16). Connections are noticeably faster and I was not able to cause the reconnect problems of 3.21.
Here is a comparison of 3.16 to standard 3.21.
So I don’t exactly know what feature VEX tried to improve in the 3.21 firmware although I though it was to do with reverting to standalone operation if WiFI was not present or something like that.
When I had asked in January this was the response.
Well todays test shows an increase in VEXnet link time rather than a decrease. Obviously this is a test of one system in one environment and may be different for others.
I’m not drawing any conclusions from these tests, as jgraber points out what happens when 400 systems are turned on at once may be different from a single system running in my house. However, if team 8888 were going to worlds and we did not need the IME support in the new version I would keep them on 3.16 (ROBOTC 3.04). If I had already upgraded to 3.21 and did not want to downgrade then certainly the new worlds version is more reliable and I would install that. In all cases I would pack many 9V backup batteries and change the one on the cortex every day so that hopefully re-linking in the middle of a match did not happen.
i have seen the same thing that jpearman had originally came forward with. the new firmware takes longer to initially link and to resume link after dropped, but there is a much better chance that it actually does link back up after loosing connection.