If you are having issues getting the Robot Controller phone and the Driver Station phone communicating with each other please read this interesting forum post.
It says that the versions of the software on the robot controller and the driver station need to be the same version AND that version needs to match with what is being used from the Android Studio SDK that was downloaded from GitHub.
The most recent versions of the driver station and robot controller are 1.25. If you load both of these on the phones but don’t have the most up to date SDK, when you connect the robot controller phone to Android Studio and transfer your programs to the phone, it will replace the Robot Controller Application on the phone with the one from the SDK. So now your versions won’t match. The first time you do this Android Studio provides a message stating that the version on the Robot Controller App is newer and that if you continue it will replace the version on the Robot Controller phone.
To fix this, download the latest version of the SDK from https://github.com/ftctechnh/ftc_app/releases, then save your opmodes to another directory and totally replace the ftc_app-master folder on your computer. Then copy your opModes back to the directory, update the FtcOpModeRegister and then when you transfer the new Opmodes to the phone, it will be on the most recent version 1.25. The first time you transfer to the Robot Controller it might give you a message that the versions were the same, but the signatures were different, just press OK to continue.
The new version of the SDK also had gotten rid of setChannelMode and replaced it with setMode.
After these changes, the phones should communicate more consistently.
EXTRA NOTES ABOUT COMMUNICATION:
After further testing with matching 1.25 versions on the phones and the SDK, I can confirm that the communication issues are improved. The 1.25 version of the robot controller program seems to handle communications with the USB controllers better than the older 1.2 version we were running. You need to update your SDK to get to the new 1.25 version of the robot controller program.
The steps we found that most consistently got the 2 phones to communicate and not get any red errors on the Robot Controller phone were:
1) Exit the program on the Robot Controller phone, so that you are at the main phone screen. You don’t need to reboot, just exit the program.
2) Power on the robot, without the RC phone plugged in to the robot.
3) Once the robot is fully powered up, give it 30 seconds or so, then plug the phone into the robot. It should then automatically open up the Robot Controller program and find the USB Controllers
4) On the Driver Station phone, most times it automatically recognized the Robot and went into a ready state waiting for selection of an OpMode. Occasionally, we had to exit from this program and re-start it. This seemed to work better than restart robot.
5) If we had to remove the phone, we didn’t even power off the robot, just unplugged the phone, compiled a new program and made sure before we plugged the phone into the robot that we were at the main phone screen (don’t have the program running when you plug it in the robot!). The program should start automatically once the phone is plugged in.
Hopefully this helps other teams that might be having communication issues with their robot!