2019-11-14 23:40:51 +01:00
|
|
|
WIP stuff to get started on the pinebook pro.
|
2019-11-14 23:47:56 +01:00
|
|
|
|
2020-01-07 21:20:13 +01:00
|
|
|
## Using in your configuration
|
2019-11-14 23:47:56 +01:00
|
|
|
|
2020-01-07 21:20:13 +01:00
|
|
|
Clone this repository somwhere, and in your configuration.nix
|
2019-11-14 23:47:56 +01:00
|
|
|
|
|
|
|
```
|
2020-01-07 21:20:13 +01:00
|
|
|
{
|
|
|
|
imports = [
|
|
|
|
.../pinebook-pro/pinebook_pro.nix
|
|
|
|
];
|
|
|
|
}
|
2019-11-14 23:47:56 +01:00
|
|
|
```
|
|
|
|
|
2020-01-07 21:20:13 +01:00
|
|
|
That entry point will try to stay unopinionated, while maximizing the hardware
|
|
|
|
compatibility.
|
2019-11-14 23:47:56 +01:00
|
|
|
|
2020-01-07 21:20:13 +01:00
|
|
|
## Compatibility
|
2019-11-14 23:47:56 +01:00
|
|
|
|
2020-01-07 21:20:13 +01:00
|
|
|
### Tested
|
|
|
|
|
|
|
|
* X11 with modesetting
|
|
|
|
* Wi-Fi
|
|
|
|
* Brightness controls
|
2020-01-22 04:11:03 +01:00
|
|
|
* Speaker output
|
2020-01-07 21:20:13 +01:00
|
|
|
|
|
|
|
### Untested
|
|
|
|
|
|
|
|
* Bluetooth
|
|
|
|
|
|
|
|
### Known issues
|
|
|
|
|
|
|
|
* Suspend (or resume) fails.
|
2020-01-06 21:36:56 +01:00
|
|
|
|
2020-01-07 21:36:28 +01:00
|
|
|
### Tips
|
|
|
|
|
|
|
|
The backlight can be controlled using `light` (`programs.light.enable`).
|
|
|
|
|
2020-01-06 21:36:56 +01:00
|
|
|
## Image build
|
|
|
|
|
|
|
|
```
|
|
|
|
$ ./build.sh
|
2020-01-06 22:57:27 +01:00
|
|
|
$ lsblk /dev/mmcblk0 && sudo dd if=$(echo result/sd-image/*.img) of=/dev/mmcblk0 bs=8M oflag=direct status=progress
|
2020-01-06 21:36:56 +01:00
|
|
|
```
|
|
|
|
|
2020-01-06 23:30:19 +01:00
|
|
|
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.
|
|
|
|
|
2020-01-07 02:28:37 +01:00
|
|
|
The required modules (and maybe a bit more) are present in stage-1 so the
|
|
|
|
display should start early enough in the boot process.
|
2020-01-06 23:30:19 +01:00
|
|
|
|
2020-01-18 00:30:52 +01:00
|
|
|
The LED should start up with the amber colour ASAP with this u-boot
|
2020-01-07 02:29:08 +01:00
|
|
|
configuration, as a way to show activity early. The kernel should set it to
|
|
|
|
green as soon as it can.
|
|
|
|
|
2020-01-06 23:30:19 +01:00
|
|
|
## 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.
|
2020-01-07 21:20:13 +01:00
|
|
|
|
|
|
|
## `u-boot`
|
|
|
|
|
2020-07-15 02:31:00 +02:00
|
|
|
> **NOTE**: The following instructions are for if you haven't installed U-Boot to the SPI flash.
|
|
|
|
|
2020-01-07 21:20:13 +01:00
|
|
|
Assuming `/dev/mmcblk0` is an SD card.
|
|
|
|
|
|
|
|
```
|
2020-07-15 01:30:27 +02:00
|
|
|
$ nix-build -A pkgs.ubootPinebookPro
|
2020-01-07 21:20:13 +01:00
|
|
|
$ 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.
|
|
|
|
|
2020-01-07 21:58:47 +01:00
|
|
|
|
2020-01-17 20:14:53 +01:00
|
|
|
### Updating eMMC u-boot from NixOS
|
|
|
|
|
2020-07-15 02:31:00 +02:00
|
|
|
> **NOTE**: The following instructions are for if you haven't installed U-Boot to the SPI flash.
|
|
|
|
|
2020-01-17 20:14:53 +01:00
|
|
|
**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.
|
|
|
|
|
|
|
|
```
|
2020-07-15 01:30:27 +02:00
|
|
|
$ nix-build -A pkgs.ubootPinebookPro
|
2020-01-17 20:14:53 +01:00
|
|
|
$ 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
|
|
|
|
```
|
|
|
|
|
2020-01-18 00:30:57 +01:00
|
|
|
### Alternative boot order
|
|
|
|
|
2020-07-15 01:30:27 +02:00
|
|
|
If you rather USB and SD card is tried before the eMMC, `pkgs.ubootPinebookProExternalFirst`
|
2020-01-18 00:30:57 +01:00
|
|
|
can be installed, which has an alternative patch set added on top that will
|
|
|
|
change the boot order.
|
|
|
|
|
2020-01-22 04:37:42 +01:00
|
|
|
The SD image is built using the "alternative boot order" u-boot. Thus, flashing
|
|
|
|
the image to your eMMC keeps external devices bootable.
|
|
|
|
|
2020-01-18 00:30:57 +01:00
|
|
|
|
2020-01-07 21:58:47 +01:00
|
|
|
## Keyboard firmware
|
|
|
|
|
|
|
|
```
|
|
|
|
$ nix-build -A pkgs.pinebookpro-keyboard-updater
|
2020-01-22 21:29:19 +01:00
|
|
|
$ sudo ./result/bin/updater step-1 <iso|ansi>
|
|
|
|
$ sudo poweroff
|
2020-01-07 21:58:47 +01:00
|
|
|
# ...
|
2020-01-22 21:29:19 +01:00
|
|
|
$ sudo ./result/bin/updater step-2 <iso|ansi>
|
|
|
|
$ sudo poweroff
|
|
|
|
# ...
|
|
|
|
$ sudo ./result/bin/updater flash-kb-revised <iso|ansi>
|
2020-01-07 21:58:47 +01:00
|
|
|
```
|
2020-01-22 21:29:19 +01:00
|
|
|
|
|
|
|
Note: poweroff must be used, reboot does not turn the hardware "off" enough.
|
2020-07-15 02:31:00 +02:00
|
|
|
|
|
|
|
|
|
|
|
## About pre-built images
|
|
|
|
|
|
|
|
It is assumed that the official binary cache can be trusted. Any other source
|
|
|
|
for images is of unknown trustworthiness.
|
|
|
|
|
|
|
|
As a broader goal of trust within the NixOS community, we strongly recommend
|
|
|
|
users build their own images on hardware they trust so they know the
|
|
|
|
provenance.
|
|
|
|
|
|
|
|
This is why this repository does not offer pre-built images. I would also like
|
|
|
|
that no third party pre-built images are produced.
|
|
|
|
|
|
|
|
Once the upstream kernel fully supports the Pinebook Pro, it will not be an
|
|
|
|
issue as the generic AArch64 images will work with the Pinebook Pro.
|