NixOS on ARM/Firefly AIO-3399C: Difference between revisions
imported>Samueldr m Removes unnecessary spaces |
imported>Makefu add documentation even though nothing works yet :) |
||
Line 4: | Line 4: | ||
!colspan="2" class="title"|Firefly AIO-3399C | !colspan="2" class="title"|Firefly AIO-3399C | ||
|- | |- | ||
|colspan="2"|[[File:Firefly_AIO-3399C.png|frameless|256px|A Firefly AIO-3399C | |colspan="2"|[[File:Firefly_AIO-3399C.png|frameless|256px|A Firefly AIO-3399C attached to LVDS]] | ||
|- | |- | ||
!Manufacturer | !Manufacturer | ||
Line 16: | Line 16: | ||
|- | |- | ||
!Boot order | !Boot order | ||
| eMMC | | official: eMMC | ||
|- | |- | ||
!Maintainer | !Maintainer | ||
Line 24: | Line 24: | ||
== Status == | == Status == | ||
It can boot the image provided by firefly on [http://www.t-firefly.com/doc/download/54.html the chinese download page], click on '''Ubuntu (GPT)'''. | It can boot the image provided by firefly on [http://www.t-firefly.com/doc/download/54.html the chinese download page], click on '''Ubuntu (GPT)'''. The image has also been uploaded to [https://archive.org/details/AIO-33399C archive.org]. | ||
The official documentation, which is a pretty good state, can be found at [http://wiki.t-firefly.com/en/AIO-3399C/ the wiki of firefly] | The official documentation, which is a pretty good state, can be found at [http://wiki.t-firefly.com/en/AIO-3399C/ the wiki of firefly]. However as of right now i was unable to: | ||
* build an nixos image which can be booted as root image from the emmc (root image must be build as "android" boot) | |||
* build an sd-image with a kernel which detects the card at stage one with NixOS (cannot find rootfs) | |||
* build the the bootloader with NixOS (blobs and trustedboot comes from rockchip) | |||
== Board-specific installation notes == | == Board-specific installation notes == | ||
== Serial console== | == Serial console== | ||
On the board there are 3 pins which have a 2.54mm pitch, this is the debug console with the text DEBUG on it. Starting from the middle to the side of the board: | |||
* GND (Black Wire) | |||
* RX (White Wire) | |||
* TX (Green Wire) | |||
* VCC, only the silver trace point and not a pin | |||
Baud rate is <code>1500000</code> | |||
Connect to it via: | |||
<syntaxHighlight lang=bash> | |||
nix-shell -p picocom --run "picocom -b 1500000 /dev/ttyUSB0" | |||
</syntaxHighlight> | |||
When you build your own image, you need the following extra kernel command-line parameters to get serial output: | |||
<syntaxHighlight lang=nix> | |||
{ | |||
boot.kernelParams = ["console=ttyS2,1500000n8" "earlycon=uart8250,mmio32,0xff1a0000" "earlyprintk"]; | |||
} | |||
</syntaxHighlight> | |||
== Compatibility notes == | == Compatibility notes == | ||
See the [http://opensource.rock-chips.com/wiki_Status_Matrix Rockchip compatibility matrix]. Uboot requires the Rockchip Miniloader and an arm trusted boot image. | |||
=== Downstream kernel === | === Downstream kernel === | ||
The downstream kernel sources can be found on github at [https://github.com/FireflyTeam/kernel]. The stable kernel branch they are maintaining is <code>4.4</code>, however mainline 4.19 should already work according to the [http://opensource.rock-chips.com/wiki_Status_Matrix Rockchip compatibility matrix]. | |||
=== u-boot === | |||
Firefly maintains an own u-boot fork at [https://github.com/FireflyTeam/u-boot] | |||
=== Flashing via Rockchip Loader Mode === | === Flashing via Rockchip Loader Mode === | ||
Line 47: | Line 75: | ||
==== Firefly upgrade_tool ==== | ==== Firefly upgrade_tool ==== | ||
Firefly provides an <code>upgrade_tool</code> which is a modified [http://opensource.rock-chips.com/wiki_Upgradetool rock-chip upgrade tool]. Using the upstream tool however may result in weird errors like being unable to flash the image or being unable to erase the flash. | Firefly provides an <code>upgrade_tool</code> which is a modified [http://opensource.rock-chips.com/wiki_Upgradetool rock-chip upgrade tool]. Using the upstream tool however may result in weird errors like being unable to flash the image or being unable to erase the flash. To be sure use the [https://archive.org/details/AIO-33399C archive.org mirror]. | ||
However, because the software is essentially a blob, you will need to either patchelf the thing or use '''steam-run''': | |||
<syntaxHighlight lang=bash>nix-shell -p steam-run --run "steam-run ./upgrade_tool"</syntaxHighlight> | |||
=== Rockchip MaskROM Mode === | === Rockchip MaskROM Mode === | ||
Maskrom mode is a way to get extended privileges when flashing but you need to shorten two trace points on the board. Follow [http://wiki.t-firefly.com/en/AIO-3399C/maskrom_mode.html the official documentation]. | Maskrom mode is a way to get extended privileges when flashing but you need to shorten two trace points on the board. Follow [http://wiki.t-firefly.com/en/AIO-3399C/maskrom_mode.html the official documentation]. However the loader mode should be enough for most things. | ||
== Resources == | == Resources == | ||
* [ | * [http://en.t-firefly.com/product/industry/aio_3399c Official product page] | ||
* [http://wiki.t-firefly.com/en/AIO-3399C/ Firefly Wiki Page for the AIO-3399c] | * [http://wiki.t-firefly.com/en/AIO-3399C/ Firefly Wiki Page for the AIO-3399c] |
Revision as of 23:35, 29 January 2019
Firefly AIO-3399C | |
---|---|
Manufacturer | Firefly |
Architecture | AArch64 |
Bootloader | ? |
Boot order | official: eMMC |
Maintainer | makefu |
Status
It can boot the image provided by firefly on the chinese download page, click on Ubuntu (GPT). The image has also been uploaded to archive.org.
The official documentation, which is a pretty good state, can be found at the wiki of firefly. However as of right now i was unable to:
- build an nixos image which can be booted as root image from the emmc (root image must be build as "android" boot)
- build an sd-image with a kernel which detects the card at stage one with NixOS (cannot find rootfs)
- build the the bootloader with NixOS (blobs and trustedboot comes from rockchip)
Board-specific installation notes
Serial console
On the board there are 3 pins which have a 2.54mm pitch, this is the debug console with the text DEBUG on it. Starting from the middle to the side of the board:
- GND (Black Wire)
- RX (White Wire)
- TX (Green Wire)
- VCC, only the silver trace point and not a pin
Baud rate is 1500000
Connect to it via:
nix-shell -p picocom --run "picocom -b 1500000 /dev/ttyUSB0"
When you build your own image, you need the following extra kernel command-line parameters to get serial output:
{
boot.kernelParams = ["console=ttyS2,1500000n8" "earlycon=uart8250,mmio32,0xff1a0000" "earlyprintk"];
}
Compatibility notes
See the Rockchip compatibility matrix. Uboot requires the Rockchip Miniloader and an arm trusted boot image.
Downstream kernel
The downstream kernel sources can be found on github at [1]. The stable kernel branch they are maintaining is 4.4
, however mainline 4.19 should already work according to the Rockchip compatibility matrix.
u-boot
Firefly maintains an own u-boot fork at [2]
Flashing via Rockchip Loader Mode
The board can easily be flashed by booting the device into the Rockchip loader mode.
To bring the device in the loader mode:
- Disconnect from power
- Connect USB-C from the board to your computer
- Hold 'Recovery' button pressed
- Connect power, wait for 2 (or more) seconds
- Short press the 'reset' button and release the 'Recovery' button afterwards
Firefly upgrade_tool
Firefly provides an upgrade_tool
which is a modified rock-chip upgrade tool. Using the upstream tool however may result in weird errors like being unable to flash the image or being unable to erase the flash. To be sure use the archive.org mirror.
However, because the software is essentially a blob, you will need to either patchelf the thing or use steam-run:
nix-shell -p steam-run --run "steam-run ./upgrade_tool"
Rockchip MaskROM Mode
Maskrom mode is a way to get extended privileges when flashing but you need to shorten two trace points on the board. Follow the official documentation. However the loader mode should be enough for most things.