Skip to content

Day02 - Device List Exploration

This lab explores the device files available in the /dev directory and identifies hardware interfaces such as UART, SPI, and I2C.


List All Devices

Command:

ls /dev

Example output (partial):

spidev10.0
ttyAMA10
serial0
mmcblk0
mmcblk0p1
mmcblk0p2

The /dev directory contains device nodes that represent hardware devices managed by the Linux kernel.


UART Device

UART devices appear as:

/dev/tty*

On this system:

ttyAMA10
serial0

Check symbolic link:

ls -l /dev/serial*

Example:

serial0 -> ttyAMA10

Meaning:

  • ttyAMA10 is the actual UART device
  • serial0 is an alias pointing to the default UART

Example usage:

echo "hello" > /dev/ttyAMA10
cat /dev/ttyAMA10

SPI Device

SPI devices appear as:

/dev/spidev<bus>.<chip-select>

On this system:

spidev10.0

Meaning:

  • SPI bus: 10
  • Chip Select: 0

Example usage in C:

int fd = open("/dev/spidev10.0", O_RDWR);

SPI communication is usually configured with ioctl() calls.


I2C Device

I2C devices appear as:

/dev/i2c-<bus>

Example:

/dev/i2c-1

However, on this system the I2C interface is not enabled by default, so no /dev/i2c-* device is present.


Enable I2C

Enable I2C using:

sudo raspi-config

Navigate to:

Interface Options
I2C
Enable

Reboot the system afterwards.

After enabling I2C, the following device should appear:

/dev/i2c-1
/dev/i2c-13
/dev/i2c-14

Storage Device

Storage devices appear as block devices.

Example:

/dev/mmcblk0
/dev/mmcblk0p1
/dev/mmcblk0p2

Meaning:

  • mmcblk0 → SD card
  • mmcblk0p1 → partition 1
  • mmcblk0p2 → partition 2

Summary

Detected devices:

Interface Device
UART ttyAMA10
UART alias serial0
SPI spidev10.0
I2C not enabled
Storage mmcblk0

The /dev directory exposes hardware devices as files that can be accessed by user applications.