Complete Beginner Guide: Installing Ubuntu & ROS Noetic on Raspberry Pi 3B or any raspberry (VM as Master, Pi as Slave)


Author: REDDIX ROBOTICS

This guide is based on a real-world debugging journey with actual errors, fixes, and final success. If you follow this exactly, you will run ROS successfully.


Hardware & Software Requirements

Hardware

  • Raspberry Pi 3B
  • 16GB or 32GB SD Card (Class 10)
  • Power Adapter
  • HDMI + Monitor + Keyboard
  • PC/Laptop with Ubuntu 20.04 VM
  • Wi-Fi Network

Software

  • Raspberry Pi Imager
  • Ubuntu 20.04 LTS (64-bit)
  • ROS Noetic

 

STEP 1 — Download Ubuntu 20.04 for Raspberry Pi

Download from:

https://ubuntu.com/download/raspberry-pi

Select: Ubuntu 20.04 LTS (64-bit for Pi)


STEP 2 — Flash SD Card Using Raspberry Pi Imager

  1. Insert SD card into PC
  2. Open Raspberry Pi Imager
  3. Select OS → Ubuntu 20.04 (64-bit)
  4. Select Storage → Your SD Card
  5. Click WRITE

STEP 3 — Enable SSH & Configure Wi-Fi Before First Boot

Enable SSH

Open system-boot folder → create empty file named: ssh

Configure Wi-Fi (network-config file)

version: 2
wifis:
  wlan0:
    dhcp4: true
    optional: true
    access-points:
      "YOUR_WIFI_NAME":
        password: "YOUR_WIFI_PASSWORD"

STEP 4 — First Boot

Insert SD → connect HDMI + keyboard → power on.

Default login:

username: ubuntu
password: ubuntu

You will be forced to change password.


STEP 5 — Check IP Address

ip a

Look for: inet 192.168.xx.xxx


STEP 6 — Fix Black Screen + LED Issue

  • Solid red LED = power OK
  • Blinking green LED = SD activity

✅ Wait 3–5 minutes. Do NOT remove power.


STEP 7 — Enable & Verify SSH Service (CRITICAL)

sudo systemctl status ssh

If missing:

sudo apt install openssh-server -y

Start SSH:

sudo systemctl start ssh

Enable SSH on Every Boot:

sudo systemctl enable ssh

Verify:

sudo systemctl status ssh

STEP 8 — SSH Into Pi from VM

ssh ubuntu@192.168.31.2XX

❌ SSH Key Error Fix

ssh-keygen -f ~/.ssh/known_hosts -R "192.168.31.2XX"

STEP 9 — Update System

sudo apt update
sudo apt upgrade -y

❌ dpkg Error Fix

sudo dpkg --configure -a
sudo apt --fix-broken install

STEP 10 — Set Hostname

sudo hostnamectl set-hostname reddixbot
sudo reboot

STEP 11 — Install ROS Noetic on Pi

sudo apt install curl gnupg lsb-release -y
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
sudo apt install ros-noetic-ros-base -y

STEP 12 — ROS Master–Slave Networking

VM IP: 192.168.31.XX

Pi IP: 192.168.31.2XX

nano ~/.bashrc

source /opt/ros/noetic/setup.bash
export ROS_MASTER_URI=http://<VM_IP>:11311
export ROS_IP=192.168.31.2XX

STEP 13 — Start ROS Master on VM

roscore

STEP 14 — Final Test

rostopic list

Output must show:

/rosout
/rosout_agg

Final Result

  • ROS Master running on VM
  • ROS Slave connected on Pi
  • SSH stable
  • Ready for motor control & navigation

Coming Next on My Blog

  • 4WD Motor Driver Node
  • L298N Control
  • Keyboard Teleop
  • Xbox Controller
  • Autonomous Navigation

Comments