Help

Troubleshooting

Common problems by symptom, with the likely cause, what to do, and what to send Northstar when you ask for help.

If the arms move in a way you do not expect, press the emergency stop first. See Teleoperation.

Start here

Two things answer most questions:

  1. Doctor. Run it in the directory that holds robot.toml:

    arc doctor robot.toml

    Each FAIL line says what is missing and, where there is one, the command that fixes it. See Doctor failures.

  2. The session log. Every arc run writes one file to logs/ next to robot.toml. The last lines before the client stopped usually name the cause. Under systemd the same output is in journalctl -u arc.

Enrollment

SymptomLikely causeWhat to do
arc run stops with this robot is not enrolled and [relay] cert is not setThe robot has no identity, or the command runs as a different user than the one that enrolled.Run arc enroll as the user that runs the robot. See Enroll.
arc enroll says enrollment key not accepted: it is unknown or revokedThe key is mistyped, or it was rotated.Copy the key again from Show key on the Robots page. After a rotation only the new key works. See Rotate the key.
arc enroll says this account is suspended; contact NorthstarThe account is suspended.Contact Northstar.
arc enroll says too many enrollment attemptsToo many tries in a short time.Wait for the time the message gives.
arc enroll says cannot reach the enrollment serverThe robot computer has no route to the internet, or outbound TCP 443 is blocked.Check the network connection and the firewall.
arc doctor shows FAIL identity: incompleteA file is missing from ~/.config/arc/identity/.Run arc enroll again.

A robot that is not enrolled stops like this, and the config commands print the same line:

[yam-relay] ERROR: ~/robot/robot.toml: this robot is not enrolled and [relay] cert is not set. Run: arc enroll

A wrong or rotated key:

[arc] ERROR: enrollment key not accepted: it is unknown or revoked; check the key in your account (server: enrollment key not accepted)

The robot shows Revoked

A robot is revoked when someone selects Revoke in its row, or when the enrollment key is rotated. Rotating the key revokes every robot that enrolled with the old key.

On the robot, arc run keeps running but cannot check in. It prints this every 30 seconds:

[yam-relay] check-in refused (403): this robot's cert (sha256=1a613f90...) is not registered with the relay host, or [relay] robot_id does not match it - server says: client certificate is not registered to any robot; retrying in 30s

The config commands are refused the same way:

[arc] config sync: relay.example.com:443 answered 403 to POST /config/sync: {"error": "client certificate is not registered to any robot"}

What to do: enroll the robot again with the current key and the same name, then restart arc run. With the same name the robot keeps its id. Enroll has the command under "Enroll again".

The robot shows Offline

SymptomLikely causeWhat to do
Offline, and nothing is running on the robot computerarc run is not running.Start it, or check the service: systemctl status arc. See Run as a service.
The service keeps restartingarc run stops with an error at start.Read the error: journalctl -u arc -n 50. Then run arc doctor robot.toml.
The log repeats check-in ... timed out or check-in ... failedThe robot cannot reach Northstar on TCP 443.Check the network connection, DNS and the firewall. A proxy that replaces TLS certificates also causes this.
The log repeats check-in refused (403)The robot is revoked.See The robot shows Revoked.
The log repeats relay host busy (503)Northstar has no relay free for the robot right now.The robot retries by itself. If it lasts more than a few minutes, tell Northstar.
Offline after hours of running on Wi-FiThe Wi-Fi connection dropped and did not come back.Run arc doctor and fix each wifi warning. Check the watchdog: journalctl -t arc-net-watchdog. See Run as a service.
another arc client is already runningA second arc run was started, by hand or by the service.Stop one of them. Only one runs per robot computer.

Online, but no session starts

The robot shows Online in the console, but Northstar cannot start a session on it.

The likely cause is that outbound UDP is blocked. The robot checks in over TCP port 443, which is why it shows Online. It then has to reach its relay over UDP, on a port from 4433 to 4440. Many office firewalls allow web traffic only.

How to tell: in the session log, a checked in as line is followed by Connect failed (...); retrying in 2.0s, again and again, and no Connected to relay line ever appears.

What to do:

  • Ask your network team to allow outbound UDP from the robot computer to ports 4433 to 4440. See How it works.
  • Make sure no proxy on the path replaces TLS certificates.
  • To confirm the cause, connect the robot computer through a network without the firewall, for example a phone hotspot, and start again.

If the log does show Connected to relay and Streaming., the robot side is working. Tell Northstar the time and the robot id.

Settings sync messages

arc run prints one config sync: line at each start, and arc config pull prints the same line. See how settings sync.

MessageMeaningWhat to do
in sync (...)The file and the console's copy are the same.Nothing.
settings uploaded (...)The file had changed, or was never uploaded. The console now shows it.Nothing.
applied N changes from the console to ... ; the old file is kept as ...A change from the console was written into robot.toml.Nothing. The backup is next to the file.
N changes from the console, already in ...The file already had every value of the change.Nothing.
a change from the console is waiting, but ... has changed since it was last synced. Nothing was applied. Run: arc config syncThe file was edited on the robot after the change was made.Run arc config sync, then re-apply or discard the change on the Robot settings page.
a change made in the console was waiting. It now needs review in the consolePrinted by arc config sync in that case.Open the Robot settings page and select Re-apply selected or Discard.
change from the console not applied: ... is unchangedThe robot refused the change. The reason is in the message: a value out of range, a camera the file does not have, or a result that would not load.Read the reason. Discard the change on the Robot settings page and make a corrected one.
could not report it (...); the next start doesThe change was written, but the upload after it failed.Nothing. The next start reports it.
... not reachable (...) or ... did not answer in timeThe robot could not reach Northstar within a few seconds.arc run starts from the file as it is. Check the network if it repeats.
... answered 403 ...The robot is revoked.See The robot shows Revoked.
skipped, check-in is off or this robot has no client certcheckin_port = 0 is set in robot.toml, or the identity is incomplete.Remove checkin_port from [relay]. If that is not it, run arc enroll again.
... names its own relay cert, so this robot does not use an enrolled identity and its settings are not syncedcert is filled in under [relay]. The robot was set up before enrollment.Nothing. Such a robot does not sync.

At a start, a line that reports a problem ends with ; starting from the local file. The robot still starts.

arc config status says state: unknown with the same reason when it cannot read the state:

[arc] config: ~/robot/robot.toml
[arc] local hash: 862bb792...
[arc] state: unknown, relay.example.com:443 answered 403 to GET /config: {"error": "client certificate is not registered to any robot"}

On the Robot settings page:

The page saysMeaningWhat to do
"No settings yet."The robot has never uploaded its settings.Start the robot, or run arc config sync on it.
Waiting for the robot's next startA change is pushed and not applied yet.Restart arc run, or run arc config pull while it is stopped.
Change needs reviewThe file changed on the robot since the edit was made.Compare the two values per setting, then Re-apply selected or Discard.
The robot refused the last changeThe robot could not take the change. Its reason is shown.Discard, then make a corrected change.
"The robot synced its settings after this page was loaded."The copy you were editing is out of date.Reload the page and make the change again.

Doctor failures

LineLikely causeWhat to do
FAIL config: ... N blank value(s) to fill inarc setup did not get every answer.Run arc setup again. It asks only for the blanks. Or edit the file.
FAIL config: not foundWrong directory or path.Run doctor in the directory that holds robot.toml, or give the path.
FAIL config: ... not enrolledNo identity for this user.Run arc enroll.
FAIL can <link>: not UPThe CAN link is down.Run the command on the line: sudo ip link set <link> up type can bitrate 1000000. Check the adapter's USB cable.
FAIL can buses: both arms are on ...can_right and can_left name the same link.Fix one of them in robot.toml.
WARN can adapters: ...A CAN link name points at a different USB adapter than when setup ran. The names can swap after a reboot, which swaps the arms.Check the sides with arc doctor --identify robot.toml. If they are swapped, run arc setup --force and pick the links again.
FAIL arm right or arm left: does not answer pingTrossen: the arm is off, unplugged, or on another subnet.Check power and cable. The robot computer needs an address in the arms' subnet.
FAIL camera <role>: ... does not existThe USB camera is unplugged, or its device number changed.Plug it in. Use a device path under /dev/v4l/by-id/ as index, or run arc setup again.
FAIL camera slots: ... both use ...Two roles name the same camera.Fix one entry in robot.toml.
FAIL arm backend: ... is not installed in this environmentThe install was for another arm type, or arc runs from a different Python environment.Run the installer again with the right --backend. See Install.
FAIL client lock: held by another arc clientarc run is running.Expected while the robot runs. Stop it first if you want to run --identify.
WARN relay cert: ... expiredThe relay's certificate stored on the robot is out of date.Contact Northstar.
WARN config sync: out of sync: run arc config syncA console change is waiting and the file was edited.See Settings sync messages.
SKIP config sync: state unknown: ...Northstar could not be asked.Check the network. A 403 means the robot is revoked.
WARN wifi ... or WARN net watchdogA Wi-Fi setting that keeps a robot offline after a drop.Run the nmcli command on the line. See Run as a service.

A file with blanks:

[arc] FAIL  config: ~/robot/robot.toml: 5 blank value(s) to fill in before this file can be used: [arms].can_right, [arms].can_left, [[cameras]][0].serial, [[cameras]][1].index, [[cameras]][2].index. Fill them in with arc setup, or edit the file, or arc run will not start

Doctor exits with code 1 when any line is FAIL. A WARN does not fail it.

The arms do not move

First check that an operator has taken control. The arms do not follow anyone until then. See Teleoperation.

SymptomLikely causeWhat to do
The log has Falling back to mockuse_mock = true is set, and an arm failed to open. The robot looks connected and that arm never moves.Set use_mock = false in [arms], fix the cause of the failed open, and restart.
The log has SIM mode - mock arms (no hardware)The client was started with --sim.Start it without --sim.
The log repeats Failed to open right or left ... Retrying inThe arm cannot be reached: its CAN link is down, or the arm is not powered.Bring the link up and power the arm. The client opens the arm by itself at the next try.
The log has CAN channel ... is in use by another arc arm processAn arm process from the previous run is still stopping.Wait. The arm opens by itself when the old process has exited.
The start fails while enabling the arms, with fault 0xDThe motors latched a communication-loss fault when the client was stopped while the arms stayed powered.Cycle the arm power. If this happens at every restart, see startup_fault_reset in Configure your robot.
The arms hold against gravity but ignore the operatorgravity_comp = true.Set it to false and restart.
The wrong arm movesLeft and right are swapped.Run arc doctor --identify robot.toml with the client stopped, and move each arm by hand. Swap can_left and can_right if needed.
The arms stop in the middle of a session and holdA camera failed, or the link got slow or dropped.The operator sees the reason and resumes. If a camera is named, see Camera problems.
The arms are stiff after the client has stoppedThe client was killed or crashed, so the motors were not released, or release_on_exit = false.Support the arms and cycle the arm power.

arc doctor --identify reads the arm positions with the motors off. Do not run it while arc run or anything else is driving the arms.

Camera problems

SymptomLikely causeWhat to do
The log repeats camera '<role>' (index N) failed to open - retrying in 3sThe USB camera is unplugged, or its /dev/video number changed after a replug or reboot.Plug it in. Set index to a device path under /dev/v4l/by-id/, or run arc setup again.
The log has camera '<role>' failed (...) - arms forced to HOLD, camera dropped followed by restart attempt NThe camera stopped delivering frames.It restarts by itself, after 5, 10, 20, 40, then every 60 seconds. If it keeps failing, check the cable and the USB port.
A RealSense camera fails with No module named 'pyrealsense2'The RealSense library is not installed.Run the installer again with --realsense. See Install.
A RealSense camera does not openWrong serial number in robot.toml, or the camera is unplugged.Check the cable. Run arc setup again to read the serial.
A camera shows under the wrong roleWrist cameras are swapped.Run arc doctor --identify robot.toml and look at the pictures in doctor-snapshots/. Swap the two entries in robot.toml.
A camera fails to open after record_resolution was setThe camera does not offer that size.Use a size the camera offers, or remove the key.
The start stops with a config error that names depthdepth = true on a camera that is not a RealSense, or without record_stream = true.Fix robot.toml. See Configure your robot.
Video stutters or lagsThe network link, most often Wi-Fi.Use a wired connection if you can. Northstar may ask for the output of arc lagdiag logs/.

While a camera is down the rest keeps running. The arms hold until the operator resumes.

Ask Northstar for help

Send these with your message:

  • The session log of the run that had the problem: the file from logs/ next to robot.toml.
  • The output of arc doctor robot.toml.
  • The version: the output of arc --version.
  • The robot id, as shown on the Robots page.
  • When it happened, with the time zone, and what you saw.
  • For a settings problem, the output of arc config status.
  • For a network problem on Wi-Fi, the output of journalctl -t arc-net-watchdog --since today.

Do not send your enrollment key or the file robot_key.pem. Northstar never needs them.

On this page

Robot client 0.2.8
docs.northstarrobotics.ai