Skip to main content

Documentation

Troubleshooting

Jetson Nano: Capabilities fail to start​

Problem​

The latest Jetpack version available for Jetson Nano's does not permit the creation of overlayfs' inside a unshare -rm environment, which causes capabilities to fail to start. The log will say something like:

using unshare -r
preparing sandbox for @transitive-robotics/foxglove-webrtc (robot)
mount: /home/robot/.transitive/tmp/tmp.gJHqvyLkRF/usr/merged: permission denied.
mount: /home/robot/.transitive/tmp/tmp.gJHqvyLkRF/opt/merged: permission denied.
...

Solution​

Grant the user you are using to install and run the Transitive agent password-less sudo (by adding USERNAME ALL = NOPASSWD: ALL to /etc/sudoers using visudo, where USERNAME is your username). Alternatively you can run Transitive in Docker.

Encrypted home-folder​

If your home directory is encrypted, the overlayfs' Transitive uses to sandbox its capabilities will fail.

Test​

If mount | grep $HOME | grep ecryptfs returns anything, then your home folder is encrypted.

Solution​

Create a folder on an unencrypted filesystem anywhere else on your system (e.g., /home/$USER_unencrypted), then sym-link it to ~/.transitive (e.g., ln -s /home/$USER_unencrypted ~/.transitive). Then reinstall the Transitive agent in the newly created folder.

The device doesn't show up in the Transitive Portal​

There can be several reasons for this, but most of the time it's a restriction on the network to connect to port 8883 on our cloud instance.

Test​

Run:

curl -m 3 transitiverobotics.com:8883

When the port is working you will see

curl: (56) Recv failure: Connection reset by peer

If it is not working, it will be something like:

curl: (7) Failed to connect to transitiverobotics.com port 8883: Connection timed out

Solution​

Talk to your network admin, which often is the IT staff of the customer where your robots are deployed, and request that they permit all traffic to transitiverobotics.com (or when self-hosting your own cloud instance), but for the very least permit port 8883.

Capabilities fail to start, throw error​

On a system with ROS, when capabilities don't start and these errors appear in the log:

sh: 1: /opt/ros/humble/setup.bash: Bad substitution
sh: 6: /opt/ros/humble/setup.bash: builtin: not found
sh: 11: .: cannot open /setup.sh: No such file

Then the default shell for the user running the Transitive agent is probably sh instead of bash.

Solution​

As the user running the agent, run:

chsh -s /bin/bash

Agent install fails with npm error ETIMEOUT​

This can happen if your machine has IPv6 enabled but your ISP doesn't actually support it.

Test​

Check if you can reach registry.transitiverobotics.com using IPv4 and IPv6:

IPv4:​
🞂 ping -c1 registry.transitiverobotics.com
PING registry.transitiverobotics.com (54.184.68.133) 56(84) bytes of data.
64 bytes from ec2-54-184-68-133.us-west-2.compute.amazonaws.com (54.184.68.133): icmp_seq=1 ttl=54 time=34.6 ms

--- registry.transitiverobotics.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 34.626/34.626/34.626/0.000 ms

This should always work.

IPv6​

This is often the culprit. If IPv6 is not configured, you should see this, which is fine:

🞂 ping -c1 -6 registry.transitiverobotics.com
ping: connect: Cannot assign requested address

Alternatively, if IPv6 is enabled but not routed, you might see this which is fine, too:

🞂 ping -c1 -6 registry.transitiverobotics.com
ping: connect: Network is unreachable

If IPv6 is configured correctly, a healthy response looks like this:

🞂 ping -c1 -6 registry.transitiverobotics.com
PING registry.transitiverobotics.com(ip-172-31-0-118 (2600:1f13:765:7d00:8a08:72a4:2f97:499e)) 56 data bytes
64 bytes from ip-172-31-0-118 (2600:1f13:765:7d00:8a08:72a4:2f97:499e): icmp_seq=1 ttl=64 time=0.034 ms

--- registry.transitiverobotics.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.034/0.034/0.034/0.000 ms

If, however, the request times out, then something might be amiss with your or your ISP's IPv6 configuration, which leads to the seen ETIMEOUT issue.

Solution​

Disable IPv6 on your machine:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 2>/dev/null || true
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1 2>/dev/null || true

If the agent installation works after that, you'll probably want to turn IPv6 off permanently, by adding this to your /etc/sysctl.conf:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6=1