Useful Unix Commands
Networking
SSH
SSH (Secure Shell) is used to securely connect from a local to a remote system (ex. from a laptop to a coprocessor). Unlike other commands on this page, ssh is not Unix specific and can be done on Windows and MacOS from their respective terminals.
Note
You may see a warning similar to The authenticity of host 'xxx' can't be established...
or WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
, in most cases this can be safely ignored if you have confirmed that you are connecting to the correct host over a secure connection, and the fingerprint will change when your operating system is reinstalled or PhotonVision’s coprocessor image is re-flashed. This can also occur if you have multiple coprocessors with the same hostname on your network. You can read more about it here
Example:
ssh pi@hostname
For PhotonVision, the username will be pi
and the password will be raspberry
.
ip
Run ip address with your coprocessor connected to a monitor in order to see its IP address and other network configuration information.
Your output might look something like this:
2: end1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether de:9a:8f:7d:31:aa brd ff:ff:ff:ff:ff:ff
inet 10.88.47.12/24 brd 10.88.47.255 scope global dynamic noprefixroute end1
valid_lft 27367sec preferred_lft 27367sec
In this example, the numbers following inet
(10.88.47.12) are your IP address.
ping
ping is a command-line utility used to test the reachability of a host on an IP network. It also measures the round-trip time for messages sent from the originating host to a destination computer. It can be used to determine if a network interface is available, which can be helpful when debugging.
File Transfer
All files under /opt/photonvision
are owned by the root user. This means that if you want to modify them, the commands to do so must be ran as sudo.
SCP
SCP (Secure Copy) is used to securely transfer files between local and remote systems.
Example:
scp [file] pi@hostname:/path/to/destination
SFTP
SFTP (SSH File Transfer Protocol) is another option for transferring files between local and remote systems.
Filezilla
Filezilla is a GUI alternative to SCP and SFTP. It is available for Windows, MacOS, and Linux.
Miscellaneous
v4l2-ctl
v4l2-ctl is a command-line tool for controlling video devices.
List available video devices (used to verify the device recognized a connected camera):
v4l2-ctl --list-devices
List supported formats and resolutions for a specific video device:
v4l2-ctl --list-formats-ext --device /path/to/video_device
List all video device’s controls and their values:
v4l2-ctl --list-ctrls --device path/to/video_device
Note
This command is especially useful in helping to debug when certain camera controls, like exposure, aren’t behaving as expected. If you see an error in the logs similar to WARNING 30: failed to set property [property name] (UsbCameraImpl.cpp:646)
, that means that PhotonVision is trying to use a control that doesn’t exist or has a different name on your hardware. If you encounter this issue, please file an issue with the necessary logs and output of the v4l2-ctl --list-ctrls
command.
systemctl
systemctl is a command that controls the systemd
system and service manager.
Start PhotonVision:
systemctl start photonvision
Stop PhotonVision:
systemctl stop photonvision
Restart PhotonVision:
systemctl restart photonvision
Check the status of PhotonVision:
systemctl status photonvision
journalctl
journalctl is a command that queries the systemd journal, which is a logging system used by many Linux distributions.
View the PhotonVision logs:
journalctl -u photonvision
View the PhotonVision logs in real-time:
journalctl -u photonvision -f