Setting up a Physical Device

Gather the Physical Components

A list of currently tested devices is maintained in the Reference Platforms page.

Always reference the documentation of the board you have selected for assembly instructions and requirements. At a minimum you will need the board, a power source, and a microSD card.

Network connection

If support for your wireless network devices are not available in the Fedora image, it will have to be added after installation. You will need a wired connection to complete the install of the layered package.

For the Fedora disk images:

  • The Raspberry Pi WiFi is supported in the base image.

SD Card

The Fedora IoT image is currently 4GB in size. The best speed class depends on the usage. A faster speed class is better for writes but the trade off is slower read speed.

Documentation for your board may also recommend specific SD Card choices as well as required physical sizes for each device.

The following procedures will overwrite everything on the micro SD card. Be sure to backup any data before continuing!

Create a Bootable SD Card

If you have not already downloaded the image, do so now and make a note of the download location and filename.

Determine the SD Card Device name

There are several options for determining the media device name.

  • Run the lsblk command before and after inserting the card. The new device that appears on the list is the device for the media. If your microSD card has partitions, locate the name from the line that is type 'disk'. In this example the device name is mmcblk0 and will be referenced later as /dev/mmcblk0:

$ lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mmcblk0         179:0    0  14.9G  0 disk
├─mmcblk0p1     179:1    0   142M  0 part /run/media/user/22DA-CAE8
├─mmcblk0p2     179:2    0     1G  0 part /run/media/user/8b87a5af-12c7-4990-940e-5b457336b11f
└─mmcblk0p3     179:3    0   2.9G  0 part /run/media/user/cce2e189-9aee-4b3e-b031-aac9bdc632c9
...output omitted...
  • If you have the udisks2 package installed you may find the udisksctl command helpful in determining the media device name. It will show the model and only the device name without the extra partition information. In this example, a 16GB SanDisk Ultra shows as 'SL16G':

$ udisksctl status
MODEL                     REVISION  SERIAL               DEVICE
  ----------------------------------------------------
SAMSUNG MZSLW1T0HMLH-000L1           S308NAAH501124       nvme0n1
SL16G                               0x51821336           mmcblk0
  • Finally, the kernel messages will show the addition of a device. In a terminal window before inserting the device run:

$ dmesg -w

Scripted image transfer with arm-image-installer

Install the arm-image-installer package:

$ sudo dnf install arm-image-installer

Display the usage for the utility. This will display an example command:

$ sudo arm-image-installer

Usage: arm-image-installer <options>

	--image=IMAGE   - xz compressed image file name
	--media=DEVICE  - media device file (/dev/[sdX|mmcblkX])
Optional
	--addconsole    - Add system console kernel parameter for the target
	--addkey        - /path/to/ssh-public-key
	--args          - Optional kernel parameters listed in quotes
	--norootpass	- Remove the root password
	--relabel       - SELinux relabel root filesystem on first boot
	--resizefs      - Resize root filesystem to fill media device
	--sysrq		- Enable System Request debugging of the kernel
	--target=TARGET	- target board for uboot
	-y		- Assumes yes, will not wait for confirmation
Help
	--supported     - List of supported hardware
	--version       - Display version and exit

Example: arm-image-installer --image=Fedora-Rawhide.xz --target=Bananapi --media=/dev/mmcblk0

For the Raspberry Pi Model 3 B/B+ use:

--target=rpi3

Provide the correct path for the downloaded image and the microSD media. Replace XXX with the location of your media. It will be sdX or mmcblkX depending on hardware:

$ sudo arm-image-installer --image=Fedora-IoT-[version].raw.xz --target=rpi3 --media=/dev/XXX

Other options of interest:

  • The --addkey= option will place a specified ssh public key into the /root/authorized_keys file (the option expects the path to the key).

  • The --resizefs options will expand the /sysroot partition to use all remaining space on the microSD card.

Manual Image Transfer with dd

Replace XXX with the location of your media. It will be sdX or mmcblkX depending on hardware.

xzcat Fedora-IoT-[version].raw.xz | sudo dd status=progress bs=4M of=/dev/XXX

Configure a Serial Console (Optional)

If you wish to use a serial console you’ll need to configure it. Details for the Raspberry PI are here.