How to prepare Raspberry Pi 4 devices for provisioning
Raspberry Pi 4 differs from Raspberry Pi 5 in its boot mode entry method:
-
Raspberry Pi 5 has a built-in power button
-
Raspberry Pi 4 requires GPIO configuration
Each Raspberry Pi 4 device requires one-time GPIO configuration before it can be provisioned.
This configuration is permanent and stored in the device EEPROM.
Before provisioning, configure the device to use GPIO pin 8 for RPIBOOT mode.
Requirements:
-
Raspberry Pi 4 device
-
SD card with Raspberry Pi OS
-
recovery.bintool
Procedure:
-
Follow the official instructions at:
https://github.com/raspberrypi/usbboot/tree/master/secure-boot-recovery#step-2---select-the-nrpiboot-gpio -
Use the
recovery.bintool to configure GPIO 8 as the RPIBOOT pin -
Verify the configuration (see verification procedure below)
This configuration persists permanently in the device EEPROM and does not need to be repeated.
Recommended GPIO Pin: GPIO 8
After GPIO configuration, verify the settings were applied correctly.
Verification procedure:
-
Boot the Raspberry Pi 4 normally with an SD card containing Raspberry Pi OS
-
Open a terminal and execute:
sudo rpi-eeprom-config
-
Verify the output contains:
WAKE_ON_GPIO=1 GPIO_EXPANDER_CFG=0x00000008
If these lines are present, the configuration is correct and the device is ready for provisioning.
If these lines are not present, repeat the recovery.bin configuration procedure.
After GPIO 8 configuration is complete, the device can be provisioned.
Required materials:
-
One jumper wire
-
One USB A to USB C cable
Connection procedure:
-
Connect GPIO 8 to GND (ground) on the Raspberry Pi 4 using the jumper wire
This activates RPIBOOT mode.
-
While maintaining the GPIO 8 to GND connection, connect the USB cable from your provisioning computer to the Raspberry Pi 4
-
Maintain the jumper wire connection throughout the entire provisioning process
-
Provisioning will begin automatically
Note: Unlike Raspberry Pi 5, no disconnection and reconnection is required. The device will complete all provisioning phases while the jumper remains in place.
| Point | Explanation |
|---|---|
One-time setup |
The GPIO configuration only needs to be done once per device. It is permanent. |
GPIO 8 recommended |
Use GPIO 8 for consistency. Other GPIO pins can work but GPIO 8 is the standard. |
Keep jumper connected |
Do not remove the jumper wire during provisioning. Leave it connected until both LEDs are off. |
No re-connection needed |
Unlike Raspberry Pi 5, you do not need to unplug and re-plug the device during provisioning. |
Good cables matter |
Use a high-quality USB cable. Poor cables cause connection problems. |
Symptoms: When you run sudo rpi-eeprom-config, you do not see the GPIO settings.
Solutions:
-
Follow the official recovery.bin instructions carefully:
https://github.com/raspberrypi/usbboot/tree/master/secure-boot-recovery#step-2---select-the-nrpiboot-gpio -
Make sure you used the correct recovery.bin file for your device
-
Try the configuration process again
-
Boot the device and verify again with
sudo rpi-eeprom-config
Advanced check:
You can also extract and inspect the full EEPROM:
sudo rpi-eeprom-config --out /tmp/current-eeprom.bin rpi-eeprom-config /tmp/current-eeprom.bin
Symptoms: You connect GPIO 8 to ground and plug in the USB cable, but nothing happens.
Solutions:
-
Check GPIO configuration first: Use the verification steps above to confirm GPIO 8 was configured correctly
-
Check the physical connection: Make sure the jumper wire connects GPIO 8 to a ground (GND) pin
-
Try a different USB cable: Use a shorter, high-quality cable
-
Try a different USB port: Some USB ports provide better power
-
Check your provisioning computer: Make sure it has enough power
-
Try a different GPIO: If GPIO 8 is not working, you can configure a different GPIO pin (but GPIO 8 is recommended)
Symptoms: The device starts provisioning but does not finish.
Solutions:
-
Keep the jumper wire connected: Do not remove the GPIO 8 to ground connection during provisioning
-
Check the logs: See the main troubleshooting section in the README
-
Verify the device was recognized: Check that the provisioning system detected the device
-
Try again: Disconnect everything, reconnect the jumper wire securely, and try again
Before first use:
-
Configure GPIO 8 using recovery.bin (once per device, permanent)
-
Verify with
sudo rpi-eeprom-config
For each provisioning:
-
Connect GPIO 8 to GND with jumper wire
-
Keep jumper wire connected
-
Plug in USB cable
-
Wait for both LEDs to turn off
-
Remove jumper wire and disconnect
Remember:
-
No disconnection/reconnection needed (unlike Pi 5)
-
Use good quality USB cables
-
Keep jumper wire in place until complete