VIRemote possibly legal as part of Driver Station?

Hello everyone,
I have recently taken a new interest in VIRemote (an Apple-only mobile app that allows you to control a LabVIEW Front Panel from a mobile device/tablet), particularly in integrating it into the FRC Dashboard. However, as it requires a network connection, the Apple device would have to be connected to the FMS network.

First rule restriction: You can’t create your own wireless networks. I would have to somehow use a wired Ethernet connection to the Driver Station, which I believe is possible using the Lightning port, a USB host adapter for the lightning port, a powered USB hub, and a USB to Ethernet adapter. This would also improve the immense throttling of data that occurs when you try to stream a whole dashboard over WiFi.

Second rule restriction: Ports. VIRemote defaults to port 2055, which I know is not allowable for use for communicating to the robot. Do the port restriction rules apply to network communication contained within the Driver Station? If not, would an IP-based network connection on the FMS network be considered contained within the Driver Station?

Additionally, if the port restrictions do apply, are there any allowable ports that I could use for VIRemote communication?

If all this works out, I could control a Dashboard from an IPad, make a VR dashboard, you name it, anything to do with the Dash and an Apple mobile device. It would be a great project. If it turns out to be illegal for competition, it’ll still be a fun project for the offseason.

Some things to consider:
Yes, wired only. The throttling actually happens at the radio where you are limited to 7 Mbps (Mega-bits per second) - see Application Notes section here (IP Networking at the Event manual)

Other devices are allowed to be on the network; however, you must connect the provided ethernet cable directly to your driver station computer -R98 - (which means all communication between your device and the field needs to happen through your computer - either via a bridged connection, a NAT setup, or through software like the Dashboard).

The field moved to using DHCP with the adoption of the OpenMesh radio, but static addresses are still available using address 10.TE.AM.x
where x is equal to 6 through 19 (although a camera would preclude 11) as per the static workaround section.

As for ports to use to communicate, 2055 is out, but there a couple of ranges that are open for bidirectional team use (1180 and 5800-5810) as in the Which network ports are open on the competition field section

WPI has posted a summary of all of this (and links to the docs) here: http://wpilib.screenstepslive.com/s/4485/m/24193/l/319135-ip-networking-at-the-event

Another thing to consider - you could use your DS computer as a NAT (that is to say, have all the communication between your phone and the field come through the computer - that would mean that you computer would open a port (in the allowed range) for forwarding, your robot would send and receive data from [DRIVER STATION IP]:[THAT PORT] and your computer would copy that data over the usb to you phone and make it available at [SOME OTHER IP (because this is a local are network (LAN) shared only between your computer and your device)]:[SOME OTHER PORT]) However, setting that up may be difficult (I am aware of softwares like VMWare Player that use this, and you home router does as well, but I am not aware of a software or library - meaning program it yourself - that would make this easy).

Last thing - You could make a dashboard VI (or just customize the provided one) and since this runs on the computer, connect your device to it via a LAN (again basically just plugging it into the computer and not bridging that connection to the field). This would allow you to send as much data back and forth between the dashboard and your remote as your network card allows, but the DS is still running the dashboard and handling all the communication to the robot.

Be interested to see what you come up with.

Thanks for all the info, it looks like port forwarding is my best option.
Also, FYI, I only intend to control the Dashboard from the Apple device.

The problem I saw in making a second LAN is that, then, what is the IP of the computer running the VI? would it have two IP addresses?

That depends on a number of things.

Does your computers network adapter always handle all the traffic?
Does it allow for multiple IP’s on different networks simultaniously (wireless, vs wired, vs another port)?
Does your computer have multiple ethernet ports so you would just use two of those (one for fms and one for the remote), causing all traffic through the network adapter?
Would you instead be connecting your remote to the computer via a LAN over Usb adapter (which would probably have a second IP based on the settings for that LAN)?

Easiest way to find out is wire up a potential configuration (probably tether to the robot via ethernet to simulate the FMS connection - I know it’s different settings, but the ethernet port used and related would be an accurate simulation), open command prompt, and type ipconfig (this will show all IP addresses your computer is currently claiming).

You should see at least one section that has the header like “Ethernet adapter Ethernet #” - my computer has 2-5 due to VMware and my work’s VPN. Most likely, while the usb to ethernet adapter is plugged in, you would see a second adapter for it. If the output from ipconfig is confusing, you can also go into control panel
etwork and sharing center\change adapter settings to see a list of all adapters and their names (I don’t have a ethernet over usb adapter handy).

Or skip all of that and download the examples from ThrowLab (the maker of VIRemote) and run the hello world example (it displays the IP address that it thinks you should connect the device to).

It’s using a String to IP VI (built into LabVIEW) that takes a string and attempts to resolve it, so if you used a second computer plugged in how would connect your iphone/ipad, and call that vi (from on the second computer) like so (attached thumbnail - but change the string constant to the name of the DS computer), you would get the IP that you can use to talk to the computer over the adapter (which may or may not be the same).

IPReslover.png


IPReslover.png