| Text | This test case is to be carried out on a Raspberry Pi Compute Module 4 4GB.
Follow the installation steps at
IoT installation media
-
After logging in, run
systemctl status, and look at the
"State:" reported at the top of the output
-
State should be reported as "running". In particular, it should
not read "degraded".
-
Run
sudo flash-kernel
-
Exit code is clean (0) and no error messages are reported
-
Run
sudo reboot
-
System reboots successfully to a login prompt
-
Run
sudo shutdown -h now
-
System shuts down in a reasonable time (less than a minute)
-
(for 25.10, questing, and onwards only)
Create new boot assets and deliberately corrupt them, ensuring that
boot fallback operates as expected
- Run
sudo flash-kernel to write new boot assets to the
boot partition
- Run
sudo truncate -s 10M /boot/firmware/vmlinuz to
truncate the Linux kernel, corrupting it
- Run
sudo reboot
- Once the system finally returns to a login prompt, run
cat
/boot/firmware/new/state
-
Observe three separate reboots: the first should be relatively short and
causes the pi to enter "tryboot" mode. The second should fail with the
Linux kernel panicking. The third should be the fallback which should
then succeed. The final cat command should print "bad" indicating the
new boot assets were found to be faulty.
-
Check output of
free -h
-
Reported "Mem" under "total" is consistent with a
Raspberry Pi Compute Module 4 4GB. It should be in the region of 3.6-3.8GB.
-
Perform a large (300-600MB) file copy to USB storage
- Generate a large (500MB) file:
dd if=/dev/urandom of=rubbish
bs=1M count=500
- Insert a USB stick (appropriately sized) into a spare USB port
- Make a mount directory:
sudo mkdir /mnt/stick
- Mount the stick:
sudo mount /dev/sda1 /mnt/stick
(modify mount-point as necessary; check sudo dmesg
output if unsure)
- Copy the file:
sudo cp rubbish /mnt/stick/
- Unmount the stick:
sudo umount /mnt/stick
- Remove the stick from the USB port
- Re-insert the stick into the USB port
- Re-mount the stick:
sudo mount /dev/sda1 /mnt/stick
(again, adjust mount-point as necessary)
- Compare the copied file to that on the stick:
cmp rubbish
/mnt/stick/rubbish
-
cmp returns 0 and outputs nothing, indicating the files are
identical
-
With an HDMI monitor that supports audio plugged into
the HDMI0 output, and an available MP3 file:
- Install ffmpeg and amixer with
sudo apt install ffmpeg
alsa-utils
- Find the correct card name for the HDMI0 port:
cat /proc/asound/cards and note the name in [brackets]
for the HDMI0 port
- Attempt to play your MP3 file with:
ffmpeg -i
music.mp3 -f alsa -ar 22050 default:CARD=name
substituting name for the card name found during the
previous step, and music.mp3 for your choice of MP3 file,
e.g. ffmpeg -i "Jeff Wayne - War of the Worlds.mp3"
-f alsa -ar 22050 default:CARD=vc4hdmi0
- Use Ctrl+C or q to end playback early, if you
wish
- If you cannot hear anything, first check that the mixer's volume is
not set too low; run alsamixer, and adjust the volume
(J for down, K for up) before exiting
(Esc) and retrying playback
- Audio can be heard through the device
-
With an HDMI monitor that supports audio plugged into
the HDMI1 output, and an available MP3 file:
- Install ffmpeg and amixer with
sudo apt install ffmpeg
alsa-utils
- Find the correct card name for the HDMI1 port:
cat /proc/asound/cards and note the name in [brackets]
for the HDMI1 port
- Attempt to play your MP3 file with:
ffmpeg -i
music.mp3 -f alsa -ar 22050 default:CARD=name
substituting name for the card name found during the
previous step, and music.mp3 for your choice of MP3 file,
e.g. ffmpeg -i "Jeff Wayne - War of the Worlds.mp3"
-f alsa -ar 22050 default:CARD=vc4hdmi0
- Use Ctrl+C or q to end playback early, if you
wish
- If you cannot hear anything, first check that the mixer's volume is
not set too low; run alsamixer, and adjust the volume
(J for down, K for up) before exiting
(Esc) and retrying playback
- Audio can be heard through the device
-
Check auto-configuration of ethernet
- Run
ip addr
- Check that a valid IP address is recorded on the eth0 interface
- Check
ping google.com successfully pings a few times
(Ctrl+C to cancel)
-
The "eth0" interface should have a DHCP
assigned IP address and you should be able to ping google.com
-
Configure wifi via netplan
-
The "wlan0" interface should have a DHCP
assigned IP address and you should be able to ping google.com
-
Configure bluetooth, scan for, and pair, a device
- Install bluez with
sudo apt install bluez
- Run
sudo bluetoothctl
- Check bluetoothctl prints
Agent registered
- Check the MAC address looks "real" (not some obviously blank
value like AA:AA:AA:AA:AA:AA)
- Run
scan on
- Make some other Bluetooth device visible for pairing (e.g. go into
Bluetooth settings on your Android phone)
- Verify the other Bluetooth device appears in console output
- Run
pair XX:XX:XX:XX:XX:XX
where XX:XX:XX:XX:XX:XX is the other device's MAC address, as it
appears in scan output
- Verify the passcode on both devices
- Check output includes "Pairing successful"
- Disable scanning with
scan off
- Exit tool with
quit
-
The Bluetooth interface should have a valid MAC address (not
AA:AA:AA:AA:AA:AA), can see and pair with another Bluetooth device.
-
Check the CPU clock speed using
vcgencmd
- Stress the CPU by doing
yes > /dev/null &
- Run
sudo vcgencmd measure_clock arm after about 5 sec
- Kill the stress process
- The output should be around 1.5GHz (obtained from online specs)
-
Run
sudo vcmailbox 0x00010004 8 8 0 0
-
The output should have the board serial number as the 6th integer.
-
Test
dtmerge
- Copy the live device tree using
dtc -I fs -O dtb -o test.dtb /proc/device-tree
- Use dtmerge to overclock the SD card.
dtmerge test.dtb merged.dtb - sd_overclock=62
- Check the contents of the new DTB.
dtdiff test.dtb merged.dtb
- Delete both test.dtb and merged.dtb
-
merged.dtb should have
brcm,overclock-50 = 0x3e under the SD card device.
-
Test
dtoverlay
- Run
sudo dtoverlay pwm
- Run
sudo dtoverlay -l
- The PWM Overlay should show up as loaded. Remove it by running
sudo dtoverlay -r pwm
-
Test
dtparam
- Run
sudo dtparam sd_overclock=62
- Run
sudo dtparam -l
- The sd_overclock parameter should show up as set. Remove it by running
sudo dtparam -r 0
-
Run
sudo pinctrl
- The output should have status of the GPIO pins.
-
Run
sudo raspinfo
- The output should have an information dump about the Pi.
If all actions produce the expected results listed,
please submit a 'passed' result.
If any action fails, or produces an unexpected result,
please submit a 'failed' result and file a bug. Please be sure to include
the bug number when you submit your
result.
|