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:
-
Doctor. Run it in the directory that holds
robot.toml:arc doctor robot.tomlEach
FAILline says what is missing and, where there is one, the command that fixes it. See Doctor failures. -
The session log. Every
arc runwrites one file tologs/next torobot.toml. The last lines before the client stopped usually name the cause. Under systemd the same output is injournalctl -u arc.
Enrollment
| Symptom | Likely cause | What to do |
|---|---|---|
arc run stops with this robot is not enrolled and [relay] cert is not set | The 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 revoked | The 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 Northstar | The account is suspended. | Contact Northstar. |
arc enroll says too many enrollment attempts | Too many tries in a short time. | Wait for the time the message gives. |
arc enroll says cannot reach the enrollment server | The 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: incomplete | A 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 enrollA 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 30sThe 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
| Symptom | Likely cause | What to do |
|---|---|---|
| Offline, and nothing is running on the robot computer | arc run is not running. | Start it, or check the service: systemctl status arc. See Run as a service. |
| The service keeps restarting | arc 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 ... failed | The 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-Fi | The 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 running | A 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.
| Message | Meaning | What 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 sync | The 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 console | Printed 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 unchanged | The 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 does | The change was written, but the upload after it failed. | Nothing. The next start reports it. |
... not reachable (...) or ... did not answer in time | The 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 cert | checkin_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 synced | cert 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 says | Meaning | What 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 start | A change is pushed and not applied yet. | Restart arc run, or run arc config pull while it is stopped. |
| Change needs review | The 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 change | The 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
| Line | Likely cause | What to do |
|---|---|---|
FAIL config: ... N blank value(s) to fill in | arc setup did not get every answer. | Run arc setup again. It asks only for the blanks. Or edit the file. |
FAIL config: not found | Wrong directory or path. | Run doctor in the directory that holds robot.toml, or give the path. |
FAIL config: ... not enrolled | No identity for this user. | Run arc enroll. |
FAIL can <link>: not UP | The 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 ping | Trossen: 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 exist | The 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 environment | The 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 client | arc run is running. | Expected while the robot runs. Stop it first if you want to run --identify. |
WARN relay cert: ... expired | The relay's certificate stored on the robot is out of date. | Contact Northstar. |
WARN config sync: out of sync: run arc config sync | A 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 watchdog | A 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 startDoctor 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.
| Symptom | Likely cause | What to do |
|---|---|---|
The log has Falling back to mock | use_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 in | The 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 process | An 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 0xD | The 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 operator | gravity_comp = true. | Set it to false and restart. |
| The wrong arm moves | Left 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 hold | A 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 stopped | The 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
| Symptom | Likely cause | What to do |
|---|---|---|
The log repeats camera '<role>' (index N) failed to open - retrying in 3s | The 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 N | The 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 open | Wrong 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 role | Wrist 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 set | The 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 depth | depth = true on a camera that is not a RealSense, or without record_stream = true. | Fix robot.toml. See Configure your robot. |
| Video stutters or lags | The 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 torobot.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.
NORTHSTAR