Rockpi4/dev/usb-install
ROCK Pi 4 > Development > Install from USB OTG port
Rock PI supports Maskrom mode, which is a special operation mode for CPU to wait for USB OTG port command. The PC tools we use to communicate with rock PI in Maskrom mode are the rkdevelopment tool and AndroidTool tool. We use the rkdevelopment tool in Linux/macOS and the AndroidTool tool under Windows.
Contents
Requirement
- ROCK Pi 4 mainboard
- eMMC module
- Power adapter
- USB Male A to Male A cable(important) USB C to USB A cable does not working on all PCs. See discussion.
Install Tools&Drivers
Windows
Step 1:Install Android tool
The tool is provided in a compressed package. First, download the compressed package of this tool, and click the download link (AndroidTool_Release_v2.69.zip). After downloading, unzip it. Installation is complete.
Step 2:Install driver
Using the RK driver assistant tool to install the driver.
There’s no need to connect your Rockchip device during this procedure just download and extract RKDriverAssistant.zip
Then double click on DriverInstall.exe in the RKDriverAssistant directory to start the utility. If you installed the Rockchip USB drivers for any other Rockchip devices already, make sure you click “Uninstall Driver” first.
Then click “Install Driver”, the driver has finish installing.
Linux
For Linux, we build the rkdeveloptool from source code.
To build rkdeveloptool on a Debian based Linux distribution, follow the instruction below:
Install build dependency:
sudo apt-get install libudev-dev libusb-1.0-0-dev dh-autoreconf
Clone the source code and build:
git clone https://github.com/rockchip-linux/rkdeveloptool cd rkdeveloptool autoreconf -i ./configure make
If you encounter compile error like below
./configure: line 4269: syntax error near unexpected token `LIBUSB1,libusb-1.0' ./configure: line 4269: `PKG_CHECK_MODULES(LIBUSB1,libusb-1.0)'
You should install pkg-config libusb-1.0
sudo apt-get install pkg-config libusb-1.0
Then re-run
autoreconf -i ./configure make
Now you have rkdeveloptool executable at the current directory.
sudo cp rkdeveloptool /usr/local/bin/
MacOS
For macOS, we build the rkdeveloptool from source code.
To build rkdeveloptool on macOS, you need homebrew(or similar package manager) to install required packages.
Install build dependency:
brew install automake autoconf libusb lsusb
Clone the source code and build:
git clone https://github.com/rockchip-linux/rkdeveloptool cd rkdeveloptool autoreconf -i ./configure make
If you encounter compile error like below
./configure: line 4269: syntax error near unexpected token `LIBUSB1,libusb-1.0' ./configure: line 4269: `PKG_CHECK_MODULES(LIBUSB1,libusb-1.0)'
You should install pkg-config libusb-1.0
brew install pkg-config
Then re-run
autoreconf -i ./configure make
Now you have rkdeveloptool executable at the current directory.
sudo cp rkdeveloptool /usr/local/bin/
Boot the board to maskrom mode
To boot ROCK Pi into maskrom mode is simple:
- 1. Power off the board
- remove microSD card
- if your board has removable eMMC module, remove it
- if your board is Plus version with soldered eMMC, press and hold the maskrom key. (1: Maskrom 2: Reset 3: Recovery)
- 2. Plug the USB Male A to Mail A cable to ROCK Pi 4 OTG port(the upper USB3 port), the other side to PC
- 3. Power on the board, release the maskrom key(important)
- 4. For Linux/macOS
Now on your Linux PC, lsusb command show show the following usb devices
Bus 003 Device 005: ID 2207:330c
- 4. For Windows
Open device manager in your Windows PC, check the Device Manager:
It means the device is in maskrom mode now.
- 5. Now plug the eMMC module and proceed the next step to flash.
Alternatively, if you are running Android and can access ADB, you can reboot the device to loader mode `adb reboot bootloader` then use the rkdeveloptool to reset the device into maskrom mode `rkdeveloptool rd 3` or Windows AndroidTool Switch button to go to maskrom mode.
Begin Installation USB -> eMMC
Linux/macOS
On your PC, run the rkdeveloptool
rkdeveloptool ld # List the device DevNo=1 Vid=0x2207,Pid=0x330c,LocationID=305 Maskrom
Download the loader (flash helper) to init the ram and prepare the flashing environment etc. If you don't have it, you can download it from here
rkdeveloptool db rk3399_loader_vxxxx.bin
Write the GPT image to eMMC, start to write from offset 0.
rkdeveloptool wl 0 /path/to/rockpi4b-xxx-gpt.img
Reboot the device
rkdeveloptool rd
Now the device should boot the new image on eMMC
Please notice that when you want to erase eMMC on board, you can use this command. Get zero.img from here.
rkdeveloptool db rk3399_loader_vxxxx.bin rkdeveloptool wl 0 zero.img
Windows
Double click the AndroidTool.exe and you will see the following interface: If your ROCK Pi is in maskrom mode and connects to PC, you can see that the program detect it, as the red box shown below:
Step 1: Select Loader
Next, click the button in the red box on the right last columns select the loader "rk3399_ loader_ xxxxx.bin ",
Note: the loader (flash helper) is used to init the ram and prepare the flashing environment etc. If you don't have it, you can download it from here
Step 2: Select Image
Then click the right last columns to in the Image row and choose the image you want to flash.
Note: Normally the image name should ends with xxx-gpt.img. If the image name ends with xxx-rkupdate.img, you can not flash with this method.
Step 3: Run
Finally, click the "run" button in the red box below, and you will see the content in the red box on the right. When the progress reaches 100%, the download is completed.
Install by partitions(Advanced)
Linux/macOS
Sometimes we only want to update a partition of the image, for example only the boot partition to update kernel only. We can flash by partitions
| Part Number | Offset | Name | Description | | ----------- | ------ | ------- | -------------------------- | | 1 | 32KB | loader1 | First stage loader | | 2 | 8MB | loader2 | U-boot image | | 3 | 12MB | trust | ATF | | 4 | 16MB | boot | Kernel partition, bootable | | 5 | 128MB | rootfs | Rootfs |
When the board is in maskrom mode, flash the partitions with the following command and offset:
rkdeveloptool db rk3399_loader_*.bin rkdeveloptool wl 64 idbloader.img rkdeveloptool wl 16384 uboot.img rkdeveloptool wl 24576 trust.img rkdeveloptool wl 32768 boot.img rkdeveloptool wl 262144 rootfs.img
Windows
TBD.
FAQ
If you meet such these situations, you can try to change the bin file by rk3399_loader_v1.20.119.bin
Troubleshooting
- If you have issue with flashing via USB OTG, start a new post on the forum. https://forum.radxa.com/c/dev