Deploying to a robot with a non-standard ip

We just had our first in-person meeting in a very long time. It was great seeing people and getting to work with a full-sized robot again. Most of the robot was in great shape, but we could not get our code onto the bot (or to connect to it to see what was on it).

We tried wirelessly first, and got connected but no code, then we tried to deploy, but could not find the robot. We tried using a cable, but still could not find the robot.

Then, we noticed that it had an IP address of 10.Te.Am.90 rather than .2. So, at this point, we knew we probably needed to use the USB cable and go directly to the Rio, but we did not have one (we were in a new room due to Covid protocols, and I could not go get one.

Moving forward, we will have one, and go that route. However, this question has come up a few times with us. How do we deploy code to a robot that is on a non-standard IP?

We are between Java and Python right now. Our mini bots are all programmed in Java, but as we are transitioning, the main robot is programmed in RobotPy.

So, the question is, if your robot is not on a standard IP address, is it possible to specify that in Gradle (for Java), or as a flag (in python)?

Or, is this not something that can be done?

1 Like

Do you have Bonjour installed? The deploy should have fallen back to mDNS if so, making the IP address of the RIO irrelevant.

1 Like

Thank you. I always forget about Bonjour. The laptop had just updated, so there is a high likelihood that it was disabled.

1 Like

This can’t be done as of now because GradleRIO looks for a hardcoded list of addresses.
Open an issue in the GradleRIO repo and perhaps an option to do this will be added for 2022.

2 Likes

One of the addresses it looks for is roborio-TEAM-frc.local, so as long as bonjour (or another mDNS responder) is installed, it should deploy successfully, but you’re correct that there’s not a specific override available to set a custom IP target.

1 Like

Is there any reason you can’t set the RIO’s IP to the standard 10.x.y.2? I think the FMS uses mDNS these days anyway, but I hate relying on mDNS.

1 Like

Thank you all. We could not figure out how to set the Rio’s IP. (We did not have the cable for the Rio flashing tool, and totally spaced the radio config in our troublshooting).

This time away made our troubleshooting quite rusty. We will continue to meet though and will be better for it in the long run.

Also, if you’re on Windows, you can always use the HOST file - this is basically a local DNS for your specific machine. So you can manually map roborio-TEAM-frc.local to any specific IP that you need.

1 Like

That is incredible. Could you point me to any literature about that? That could be an incredible last-resort temporary fix.

Old windows trick that I’ve been using forever…dated back to Windows 95…okay I’m “dating” myself here…


You can also just google Windows Host file and you’ll find plenty of references.

1 Like

This is incredible. We solved the problem today with the right cables. However this will definitely be something to consider.

Thank you. I remember computers without a GUI-driven OS, so no need to worry about dating yourself. I also remember typing papers on a typewriter. Luckilly I did not have to do that often (It was middle school) or in college at all.

You had typewriters?

They were not even electric. We had two. One was beautiful, but a pain to use, and the other had eraser tape and multi colors. In all fairness, my mother was a Ludite at the time (to some degree, she still is. The microwave is only for drying wood). There were computers, we just did not have one (we had a black and white T.V. too).

I got my first computer, a used Apple II e, in high school. I also remember being in the first class to have access to telnet. :slight_smile:

color tape…wow…I never got the multi tape - way too expensive (I recalled)…

but my 1st computer (HS) was the Trash-80…and then the color version of it…1st language (we learned before our computer teacher) was BASIC…and machine language. Not sure anyone even remember but our storage was a casette tape and having to take the tape out and manually wind them all the way to the beginning to try to synch (okay my memory is blocking out those pain)…

1st prank was to Peek and Poke out the entire screen to make it only respond to a single key and otherwise appeared frozen. He didn’t think it was funny initially (cost of replacement/repair) but then thought it was funny as hell.

1 Like

My first computer was an IBM360 (owned by the Atlanta public schools). We connected to it with an IBM Selectric typewrite terminal and 300 baud acoustic modem. The school’s computer lab primary function was a broom closet. I still cannot wrap my head around the fact my phone has more computing power than the mainframe did.

1 Like

It is actually possible to add new ip addresses in current gradlerio.

In the roborio block near the top after setTeamOrDefault, add

addAddress("ipaddress") 

That will add whatever is in the quotes to the address list. It can either be an ipv4 address or a dns name.

Syntax might change slightly in 2022, but the same basic idea will exist.

5 Likes

I’ll give you odds on this thread going on for more posts about punching cards uphill in the snow both directions and how traumatic it was.

3 Likes

Let me tell you… :slight_smile:

2 Likes

I am enjoying the reminiscing. Not only that, I love it when there are excellent hidden tricks deep within Windows that do not get stripped down or removed completely. I wish I could mark multiple solutions as there are some deft workarounds as well as some clear reasons why this is not the best path forward.

Also, in the interest of reminiscing, I just have to say that all this talk of old computers reminded me of playing Zork. Oh those were the days (also, the biggest letdown of the Ready Player One Film. I so wanted to see that house). I still show it to students. Some of them love it.

1 Like

Late to the game here, but for RobotPy if you use the --help option you’ll find what you’re looking for:

$ ./robot.py deploy --help
usage: robot.py deploy ...

...
  --robot ROBOT         Set hostname or IP address of robot
2 Likes