The use of a flash drive is mandatory for this image. The process goes like this:
-
Wait for the Raspberry Pi to fully boot up. Preferably you would want it connected to the monitor.
-
Plug in a FAT32 flash drive into any USB port.
-
Wait a few seconds until the antenna LED of the GPG3 turns to green.
-
Do QA tests on as many GBs as you want.
-
Power down the RaspberryPi by pressing on the power button of the GoPiGo3.
The recommended way of taking out the flash drive from the Raspberry Pi is to press the power button on the GoPiGo3 and wait it to fully shutdown.
You can also remove the flash drive during its operation and have the application stop accordingly, but it's not a safe thing to do - data may get corrupted on the flash drive. Hot plugging it back in will start the app again.
For this project to be ready for use in China, we need to set up an image for Jin. The instructions for this image are the following.
Download the latest Raspian Desktop image (as of this moment it's the stretch distribution) and proceed with the following.
Install docker with the following command:
curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh
And then add pi
user to the docker
group.
sudo usermod -aG docker pi
newgrp docker
Download the image for the GB QA app with:
docker image pull robertlucian/gbtest
For our next installation, we need to get devmon
installed. Run this:
sudo apt-get update
sudo apt-get install devmon -y
Next, follow the instructions in the README.md to enable the required devices (PiCamera, SPI) and to change the split size for the GPU.
Then create a file in /opt/gbqa/start_devmon.sh
with the following contents:
#!/usr/bin/env bash
devmon --exec-on-drive "docker container run --rm -d --name gbtest --privileged -v %d:/app/data -v /run/lock:/run/lock robertlucian/gbtest" \
--exec-on-unmount "docker container kill --signal=SIGINT gbtest && ! timeout 3 docker container wait gbtest && docker container stop gbtest" \
--exec-on-remove "docker container kill --signal=SIGINT gbtest && ! timeout 3 docker container wait gbtest && docker container stop gbtest"
Create a systemd service in /etc/systemd/system/gbqa.service
with these contents:
[Unit]
Description=Devmon App To Launch GB-QA Application On Drive
[Service]
Type=idle
ExecStart=/bin/bash /opt/gbqa/start_devmon.sh
[Install]
WantedBy=multi-user.target
To enable the service and load it do:
sudo systemctl daemon-reload
sudo systemctl enable gbqa
Next, let's setup the power button service for the GPG3.
Create a script called gpg3_power.py
in /opt/gbqa
and add these lines:
import RPi.GPIO as GPIO
import time
import os
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23, True)
while True:
if GPIO.input(22):
os.system('docker container kill --signal=SIGINT gbtest')
os.system('timeout 3 docker container wait gbtest')
os.system('docker container stop gbtest')
os.system('shutdown now -h')
time.sleep(0.1)
Next, let's install the RPi.GPIO
library:
sudo pip install RPi.GPIO
Wait for it to finish and then add a service for the above script. Create one in /etc/systemd/system/gpg3_power.service
:
[Unit]
Description=GoPiGo3 Power Service
[Service]
Type=idle
ExecStart=/usr/bin/env python /opt/gbqa/gpg3_power.py
[Install]
WantedBy=multi-user.target
And finally just reload the daemon and enable the service.
sudo systemctl daemon-reload
sudo systemctl enable gpg3_power
In order to let the new mounter to automatically mount new flash drives, we gotta disable the built-in one that comes with Raspbian Desktop.
Go to File Manager > Edit > Preferences > Volume Management from the GUI interface (the Desktop) and uncheck all 3 auto-mounting options.
Reboot and give it a shot with a flash drive and then finally rip the image and send it to Jin.