I've seen a few posts here by users figuring they have a defective unit.
Whenever they ask for help they are just pointed to some web page that's badly written with directions that don't work.
I'm not sure if a recent batch of FireFly RK3399's were shipped to people like me with only the Android image installed, whether the Quick Start > Starter Guide is just really out of date or there's a QC (Quality Cotroll) problem with the shipments.
My shiny new unit, booted up Android fine and I immediately wanted to boot to Linux as the Fly is advertised as being dual-boot.
(I personally have no interest in Android and will probably never use it and question why it's installed as the default boot, but someone must have figured that's what most users want.)
The problem is, if you follow Quick Start > Sarter Guide > Q1: How to switch to Ubuntu from Android - it will always boot to a black screen - because there is no Ubuntu pre-installed. Why on earth that option was set in Android if there is no Ubuntu partition to boot to is beyond me.
I've discovered that most of the documentation I've run across on the FireFly site is badly written and/or out of date. This is probably because quite a lot of it comes from the RockChip site. To make matters worse, there are so many versions of dev programs that probably originated at RockChip and ended up on gihub and gitlab and elsewhere.
Add to the list that Downloads pages such as the following for Firmware Upgrade Tool only have notes in Chinese. Two tools are listed there with different names and versions.
Anyway, let's hope FireFily do something about making this experience of purchasing one of their products enjoyable instead of painful.
Here's how I got linux installed on my Fly.
1. I don't use Windows, so I had to install Linux on an old Mac Mini. I set it up for dual boot.
2. Download an Ubuntu Linux image file onto your Linux host machine.
There were a couple listed around here, somewhere I dound and downloaded the one named:
Firefly-RK3399-ubuntu16.04-20180416112819.img
which unpacked (tar xzf) to
Firefly-RK3399-ubuntu16.04-20180416112819.img
linux machine:
Linux_Upgrade_Tool_v1.24.zip
upgrade_tool_v1_26.tar.gz
4. Untar/Unzip each in a separate directory.
Name the directories something like:
ut-v1_24
ut-v1_26
Unzip Linux_Upgrade_Tool_v1.24.zip in ut-v1_24
Untar upgrade_tool_v1_26.tar.gz in ut-v1_26
The v1.24 probably works, but I used the v1_26.
(There is also a v1_33 on RockChip's github area that I found later on, but I haven't
tested it).
5. The compressed tar file upgrade_tool_v1_26.tar.gz is missing an important file called
config.ini, so copy if rom the ut-v1_24 directory to the ut-v1_26 directory.
You can also create your own config.ini with the following lines:
firmware=
loader=
parameter=
misc=
boot=
kernel=
system=
recovery=
rockusb_id=
msc_id=
6. I made a symbolic link in the v1_26 update_tool directory to the image file that I'd downloaded
in step 2 to make life easier. I called it 'update.img' because that seems to be the norm.
So in the v1_26 directory:
ln -s ../path/to/Firefly-RK3399-ubuntu16.04-20180416112819.img update.img
(Be careful, if you're new to using 'ln -s' it's easy to nuke the source file if you swap the
source and target names)
7. Make sure your FireFly RK3399 is powered up.
Plug in the USB -> USB-C cable between your linux host and the FireFly and then
get it into loader mode:
Press and *hold* the Recovery button (left hand side)
Briefly press and release the Reset button (right hand side)
Wait a second and release the Recovery button.
8. Fire up upgrade_tool in the v1_26 directory. it should give a list of connected
devices, yours is likely to be 1, so type 1 and press return:
sudo ./upgrade_tool
List of rockusb connected
DevNo=1 Vid=0x2207,Pid=0x330c,LocationID=107 Loader
Found 1 rockusb,Select input DevNo,Rescan press <R>,Quit press <Q>:1
---------------------Tool Usage ---------------------
Help: H
Quit: Q
Version: V
Clear Screen: CS
------------------Upgrade Command ------------------
ChooseDevice: CD
SwitchDevice: SD
UpgradeFirmware: UF <Firmware>
UpgradeLoader: UL <Loader>
DownloadImage: DI <-p|-b|-k|-s|-r|-m image> [parameter file]
DownloadBoot: DB <Loader>
EraseFlash: EF <Loader|firmware>
LowerFormat: LF
----------------Professional Command -----------------
TestDevice: TD
ResetDevice: RD [subcode]
ResetPipe: RP [pipe]
ReadFlashID: RID
ReadFlashInfo: RFI
ReadChipInfo: RCI
ReadSector: RS <BeginSec> <SectorLen> [-decode] [File]
WriteSector: WS <BeginSec> <File>
ReadLBA: RL <BeginSec> <SectorLen> [File]
WriteLBA: WL <BeginSec> <File>
EraseBlock: EB <CS> <BeginBlock> <BlokcLen> [--Force]
-------------------------------------------------------
Now just run the UpgradeFirmware command with the name of the image file:
Rockusb>uf update.img
Once it's done uploading, type 'Q' to quite.
9. Reboot the FireFly - you can probably just press and hold the Reset button (right hand side)
for a second and let go.
10. With some luck, you will boot into Linux.
I'm very impressed with the built quality of my FireFly RK3399. It's just such a pity that support and documentation are so poor.
Case in point, next I want to install the rootfs (linux) onto my Samsung T5 portable SSD just plugged into the USB 3.0 port. It can average about 350 MB/sec versus 40 MB/sec on the eMCC.
I've been able to unpack the image file above and alter the parameter file to use /dev/sdaX, but I've been unable to re-pack things together. It's frustrating as hell and really shouldn't be.