3d1a705820
>>TPL: board_init_r() spl_init Trying to boot from BOOTROM Returning to boot ROM... spl:debug uart enabled in board_init_f spl_early_init bind node aliases Device 'aliases' has no compatible string bind node mmc@fe320000 - attempt to match compatible string 'rockchip,rk3399-dw-mshc' - attempt to match compatible string 'rockchip,rk3288-dw-mshc' - found match at 'rockchip_rk3288_dw_mshc': 'rockchip,rk2928-dw-mshc' matches 'rockchip,rk3288-dw-mshc' bind node sdhci@fe330000 - attempt to match compatible string 'rockchip,rk3399-sdhci-5.1' - attempt to match compatible string 'arasan,sdhci-5.1' - found match at 'rockchip_rk3399_sdhci_5_1': 'arasan,sdhci-5.1' matches 'arasan,sdhci-5.1' bind node serial@ff180000 - attempt to match compatible string 'rockchip,rk3399-uart' - attempt to match compatible string 'snps,dw-apb-uart' - found match at 'ns16550_serial': 'ns16550' matches 'snps,dw-apb-uart' bind node serial@ff1a0000 - attempt to match compatible string 'rockchip,rk3399-uart' - attempt to match compatible string 'snps,dw-apb-uart' - found match at 'ns16550_serial': 'ns16550' matches 'snps,dw-apb-uart' bind node spi@ff1d0000 - attempt to match compatible string 'rockchip,rk3399-spi' - found match at 'rockchip_spi': 'rockchip,rk3288-spi' matches 'rockchip,rk3399-spi' bind node flash@0 - attempt to match compatible string 'jedec,spi-nor' - found match at 'spi_flash_std': 'jedec,spi-nor' matches 'jedec,spi-nor' bind node power-management@ff310000 - attempt to match compatible string 'rockchip,rk3399-pmu' - found match at 'rk3399_syscon': 'rockchip,rk3399-grf' matches 'rockchip,rk3399-pmu' bind node syscon@ff320000 - attempt to match compatible string 'rockchip,rk3399-pmugrf' - found match at 'rk3399_syscon': 'rockchip,rk3399-grf' matches 'rockchip,rk3399-pmugrf' bind node i2c@ff3c0000 - attempt to match compatible string 'rockchip,rk3399-i2c' - found match at 'i2c_rockchip': 'rockchip,rk3066-i2c' matches 'rockchip,rk3399-i2c' bind node pmic@1b - attempt to match compatible string 'rockchip,rk808' - found match at 'rk8xx pmic': 'rockchip,rk805' matches 'rockchip,rk808' lists_bind_fdt() for pmic@1b: ret=-6 in dm_scan_fdt_node lists_bind_fdt() for i2c@ff3c0000: ret=-6 in dm_scan_fdt_node bind node pmu-clock-controller@ff750000 - attempt to match compatible string 'rockchip,rk3399-pmucru' - found match at 'rockchip_rk3399_pmucru': 'rockchip,rk3399-pmucru' matches 'rockchip,rk3399-pmucru' bind node clock-controller@ff760000 - attempt to match compatible string 'rockchip,rk3399-cru' - found match at 'rockchip_rk3399_cru': 'rockchip,rk3399-cru' matches 'rockchip,rk3399-cru' bind node syscon@ff770000 - attempt to match compatible string 'rockchip,rk3399-grf' - found match at 'rk3399_syscon': 'rockchip,rk3399-grf' matches 'rockchip,rk3399-grf' bind node vop@ff8f0000 - attempt to match compatible string 'rockchip,rk3399-vop-lit' No match for node 'vop@ff8f0000' bind node vop@ff900000 - attempt to match compatible string 'rockchip,rk3399-vop-big' No match for node 'vop@ff900000' bind node pinctrl - attempt to match compatible string 'rockchip,rk3399-pinctrl' - found match at 'rockchip_rk3399_pinctrl': 'rockchip,rk3399-pinctrl' matches 'rockchip,rk3399-pinctrl' bind node chosen Device 'chosen' has no compatible string bind node syscon@ff620000 - attempt to match compatible string 'rockchip,rk3399-cic' - found match at 'rk3399_syscon': 'rockchip,rk3399-grf' matches 'rockchip,rk3399-cic' bind node dfi@ff630000 - attempt to match compatible string 'rockchip,rk3399-dfi' No match for node 'dfi@ff630000' bind node dmc - attempt to match compatible string 'rockchip,rk3399-dmc' - found match at 'rockchip_rk3399_dmc': 'rockchip,rk3399-dmc' matches 'rockchip,rk3399-dmc' bind node syscon@ff330000 - attempt to match compatible string 'rockchip,rk3399-pmusgrf' - found match at 'rk3399_syscon': 'rockchip,rk3399-grf' matches 'rockchip,rk3399-pmusgrf' bind node config Device 'config' has no compatible string dm_scan_fdt() failed: -6 dm_extended_scan_dt() failed: -6 dm_init_and_scan() returned error -6 spl_early_init() failed in rockchip SPL: -6 ### ERROR ### Please RESET the board ### |
||
---|---|---|
firmware | ||
kernel | ||
keyboard-updater | ||
nixos | ||
sound | ||
u-boot | ||
.gitignore | ||
build.sh | ||
configuration.nix | ||
cross-hacks.nix | ||
default.nix | ||
overlay.nix | ||
pinebook_pro.nix | ||
README.md | ||
system.nix | ||
wip.config | ||
with-cross.nix |
WIP stuff to get started on the pinebook pro.
Using in your configuration
Clone this repository somwhere, and in your configuration.nix
{
imports = [
.../pinebook-pro/pinebook_pro.nix
];
}
That entry point will try to stay unopinionated, while maximizing the hardware compatibility.
Compatibility
Tested
- X11 with modesetting
- Wi-Fi
- Brightness controls
- Speaker output
Untested
- Bluetooth
Known issues
- Suspend (or resume) fails.
Tips
The backlight can be controlled using light
(programs.light.enable
).
Image build
$ ./build.sh
$ lsblk /dev/mmcblk0 && sudo dd if=$(echo result/sd-image/*.img) of=/dev/mmcblk0 bs=8M oflag=direct status=progress
The build.sh
script transmits parameters to nix-build
, so e.g. -j0
can
be used.
Once built, this image is self-sufficient, meaning that it should already be booting, no need burn u-boot to it.
The required modules (and maybe a bit more) are present in stage-1 so the display should start early enough in the boot process.
The LED should start up with the amber colour ASAP with this u-boot configuration, as a way to show activity early. The kernel should set it to green as soon as it can.
Note about cross-compilation
This will automatically detect the need for cross-compiling or not.
When cross-compiled, all caveats apply. Here this mainly means that the kernel will need to be re-compiled on the device on the first nixos-rebuild switch, while most other packages can be fetched from the cache.
u-boot
Assuming /dev/mmcblk0
is an SD card.
$ nix-build -A pkgs.uBootPinebookPro
$ lsblk /dev/mmcblk0 && sudo dd if=result/idbloader.img of=/dev/mmcblk0 bs=512 seek=64 oflag=direct,sync && sudo dd if=result/u-boot.itb of=/dev/mmcblk0 bs=512 seek=16384 oflag=direct,sync
The eMMC has to be zeroed (in the relevant sectors) or else the RK3399 will use the eMMC as a boot device first.
Alternatively, this u-boot can be installed to the eMMC.
Installing to SPI has yet to be investigated.
Updating eMMC u-boot from NixOS
Caution: this could render your system unbootable. Do this when you are in a situation where you can debug and fix the system if this happens. With this said, it should be safe enough.
$ nix-build -A pkgs.uBootPinebookPro
$ lsblk /dev/disk/by-path/platform-fe330000.sdhci && sudo dd if=result/idbloader.img of=/dev/disk/by-path/platform-fe330000.sdhci bs=512 seek=64 oflag=direct,sync && sudo dd if=result/u-boot.itb of=/dev/disk/by-path/platform-fe330000.sdhci bs=512 seek=16384 oflag=direct,sync
Alternative boot order
If you rather USB and SD card is tried before the eMMC, pkgs.uBootPinebookProExternalFirst
can be installed, which has an alternative patch set added on top that will
change the boot order.
The SD image is built using the "alternative boot order" u-boot. Thus, flashing the image to your eMMC keeps external devices bootable.
Keyboard firmware
$ nix-build -A pkgs.pinebookpro-keyboard-updater
$ sudo ./result/bin/updater step-1 <iso|ansi>
$ sudo poweroff
# ...
$ sudo ./result/bin/updater step-2 <iso|ansi>
$ sudo poweroff
# ...
$ sudo ./result/bin/updater flash-kb-revised <iso|ansi>
Note: poweroff must be used, reboot does not turn the hardware "off" enough.