Network setup
Back to Robobot B
WiFi network
If you are at DTU and the small display shows an IP, then all is fine. Otherwise read further down.
Network Manager
The NetworkManager uses device UUID as part of the Wi-Fi network setup. This means that (sometimes) an SD card can not be moved from one robot to another with a functional Wi-Fi connection.
After 20 seconds, an attempt to solve this is activated using the commands below (the code is found in svn/robobot/setup/rename_host.bash - last half).
Use the last line to setup manually - or the GUI, if available.
See the current network settings
nmcli dev show
Network manager connection with UUID
nmcli connection
List available wifi access points
nmcli dev wifi
Connect to DTUdevice net
sudo nmcli device wifi connect DTUdevice password <password> ifname wlan0 ipv6.method "disabled"
This should create a new system-connection file with a usable UUID. IPv6 is disabled, as many of the IPv6 MACs seem to be the same (we cloned the SD card), and this will blacklist the connection for stealing the MAC.
Reload Network Manager to read this.
sudo nmcli connection reload
Home network connection
If you know the SSID and password, you can prepare the robot for another (home) network. Use this command (replacing <SSID> and <password>):
sudo nmcli device wifi connect <SSID> password <password> ifname wlan0
If you have no network contact, then use a local link (cable) or attach a screen and keyboard.
Cable connection
Using static IP and DNS server on Raspberry
Assign a static IP for the Raspberry:
sudo nmcli connection add con-name eth0-manual ifname eth0 type ethernet ip4 192.168.7.7/24 ipv6.method disabled
The IP for the Raspberry is 192.168.7.1 when a cable is connected and the Network manager is reloaded.
sudo nmcli con reload
Install DNS server on Raspberry
Allow the connected PC to get an IP automatically; install DNSMASQ
sudo apt install dnsmasq
Configure the use by editing /etc/dnsmasq.conf
sudo nano /etc/dnsmasq.conf
Uncomment and change two lines. It is to be used on ETH0 only and in the IP range 192.168.7.50 to 192.168.7.99.
# DNS requests only on # specified interface interface=eth0 # range of addresses available for lease and optionally # a lease time dhcp-range=192.168.7.50,192.168.7.99,255.255.255.0,12h
Restart the dnsmasq
sudo service dnsmasq restart
To see the status of the dnsmasq service use:
journalctl -b0 -u dnsmasq.service
After this, when you plug in a cable to a PC, then, after some seconds, both the robot and the PC should have an IP in the range 192.168.7.x. And the robot should display the new IP 192.168.7.7.
You can now access the robot using
ssh local@192.168.7.7
Local link
Note: This method failed in most cases
If wifi is too slow or unavailable, a local link using a network cable could be the solution.
Many PCs will assign a local link IP like 168.254.x.x, and the Robot will do the same. The robot IP will be displayed on the small display but may be obscured if a Wi-Fi IP is available.
To prepare this behaviour, log in to the Raspberry using wifi (or attach a screen and keyboard) and make a preferred local-link cabled connection:
sudo nmcli con mod "Wired connection 1" ipv4.method link-local ipv6.method disabled
This should then be the behaviour after a reboot. "Wired connection 1" needs to be spelt this way; see the valid names using:
nmcli connection
Reload Network manager
sudo nmcli connection reload
Check IP and SSID
When the Pi has rebooted, connect to it using SSH once again. Check that the Pi is connected to WiFi
ifconfig
Under wlan0 confirm that the Pi has received an IP (inet addr) and note down the first three sections of the IP - they are most likely 10.197.21x.xxx
To see which SSID you are connected to, use
iwconfig
or
nmcli -o
The MAC address ('HWaddr' or 'ether') of the Pi should also be noted down - this probably starts with B8:27:EB:xx:xx:xx make sure to get all of it.
Find IP of robot (Linux)
In case the Pi gets a new IP address after reboot, you can search for it using the MAC address and nmap. If nmap is not installed, start by installing it
sudo apt-get install nmap
To search for the Pi using the MAC address in terminal type
nmap -sP 10.197.218.0/20 | awk '/^Nmap/{ip=$NF}/B8:27:EB:23:A0:F5/{print ip}'
where 10.197.218 is the first three sections of the IP you noted down, 20 is the number of fixed bits (out of 32), and B8:27:EB:23:A0:F5 is the MAC address of the Pi. This should return the IP of the Pi.
NB! the MAC can hold letters, they should probably be capital.
If you don't know the IP address
Use the first part to get a list of active IPs on the net:
nmap -sP 10.197.218.0/24
The robot's name should be included in the list, but the network may take a while to detect it.
NTP
Network Time Protocol is used to keep clocks in sync. Raspberry Pi will start with the date and time of the last proper shutdown, and some seconds after the internet is up, it will sync the clock using NTP.
NTP need to be installed, i.e. 'sudo apt install ntp' if not done already.
At DTU most clock sources are blocked, the clock source needs to be configured.
At DTU, edit /etc/NTP.conf or /etc/ntpsec/ntp.conf and add ntp.ait.du.dk to the top of the server pool list.
sudo nano /etc/ntpsec/ntp.conf
... # Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board # on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for # more information. pool ntp.ait.dtu.dk ...
Sync time (if on DTU net)
sudo ntpdate -u ntp.ait.dtu.dk
Should work in and around DTU - see also NTP howto for more details.
You can also check the status of the ntp service:
sudo systemctl status ntp.service