Difference between revisions of "PineNote Development"

From PINE64
Jump to navigation Jump to search
(Needed to apt install scdoc to make)
Tag: Manual revert
 
(95 intermediate revisions by 18 users not shown)
Line 1: Line 1:
This article seeks to provide general development information for the [[PineNote]]
This article seeks to provide general mainline Linux development information for the [[PineNote]].


= Flashing Software =
== Mainline development ==


Currently, the only ways to flash software are from the factory Android installation (UART shell, adb, or fastboot) or by using rkdeveloptool.
=== Status ===


== Side-by-side setup ==
The following table aims to provide a list of kernel modules required for running the PineNote. It also aims at listing repositories of work in progress. While some overlap with the Quartz64 module list ([[Quartz64_Development#Upstreaming_Status]]) is expected, only modules relevant to the PineNote hardware should be listed here.


It is possible to set up a partition for mainline development without disturbing the factory Android installation. This allows updating a mainline kernel, DTB, and initramfs over Wi-Fi until WiFi or USB OTG is working in mainline Linux.
{|class="wikitable plainrowheaders" border="1"
! scope="col" | Function
! scope="col" colspan="2" | Status
! scope="col" | Module
! scope="col" | Notes
|-
| Suspend mode driver
| colspan="2" style="text-align:center;"|tbd
| <code>rockchip-sip</code>
| The rockchip-sip driver is not mainlineable; it is only needed <sup>[https://github.com/smaeul/linux/commit/72127ca2806623a9de52cc1de39b06a38a22fe48 (via a hack)]</sup> for suspend/resume to work when downstream TF-A is used. Suspend on upstream TF-A ([https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/16952 status]) should work without any special drivers.
|-
| Touchscreen
| colspan="2" style="background:PaleGreen; text-align:center;"|Linux Mainline
| <code>cyttsp5</code>
| As of 6.2-rc1<sup>[https://git.kernel.org/linus/5b0c03e24a061f9c9e8b28fa157b80990c559a37]</sup>
|-
| Digitizer
| colspan="2" style="background:PaleGreen; text-align:center;"|Linux Mainline
| <code>i2c_hid_of</code>
|
|-
| Pen BLE Buttons
| colspan="2" style="text-align:center;"|tbd
| <code>ws8100-pen</code>
| https://github.com/smaeul/linux/commit/46e87f1f9c7dd22af26d99f60eb83d2cace43cb5
|-
| EBC Display controller
| colspan="2" style="text-align:center;"|tbd
| <code>rockchip-ebc</code>
| [https://lore.kernel.org/all/20220413221916.50995-1-samuel@sholland.org/ RFC PATCH 00/16 drm/rockchip: Rockchip EBC ("E-Book Controller") display driver]
|-
| EBC PMic
| colspan="2" style="text-align:center;"|tbd
| <code>tps65185</code>
| driver developed here: <sup>[https://github.com/smaeul/linux/tree/rk35/tps65185]</sup>, small tweaks to resume behavior added on top here: <sup>[https://github.com/m-weigand/linux/commits/mw/rk35/tps65185]
|-
| LED backlight driver
| colspan="2" style="background:PaleGreen; text-align:center;"|Linux Mainline
| <code>lm3630a</code>
|
|-
| Accelerometer
| colspan="2" style="background:PaleGreen; text-align:center;"|Linux Mainline
| <code>st-accel-i2c</code> (silan,sc7a20)
| As of 5.18-rc1<sup>[https://git.kernel.org/linus/c7a43b089826b17e46419d93c00c0d2f4b26735f]
|-
| Rastergraphics unit RGA2e
| colspan="2" style="text-align:center;"|tbd
| <code>rga</code> (v4l2 mem2mem driver)
| WIP patches for activation on the Pinenote/dithering/Y4-conversion can be found here: <sup>[https://github.com/m-weigand/linux/commits/mw/rk35/rk356x-rga]</sup>.
Note that the rga2e in the rk3566 only works for RAM <= 4 G!).
Simple demo program found here: <sup>[https://github.com/m-weigand/rga-v4l2-demo]</sup>
|-
| Mali GPU
| style="background:LightYellow; text-align:center;"|Linux Mainline
| style="background:PaleGreen; text-align:center;"|Upstream Mesa
| <code>panfrost</code>
| As of 5.18 <sup>[https://git.kernel.org/linus/810028668c6d9da25664195d6b906c98a8169f72]</sup> this got added to the <code>.dtsi</code> file, but it's status is disabled. Enabling the <code>gpu</code> node upstream needs to wait till <code>rockchip-ebc</code> is upstreamed.
|-
| Wifi/BT
| colspan="2" style="background:PaleGreen; text-align:center;"|Linux Mainline
| <code>brcmfmac</code>
|
|}


The recommended partition for this is <tt>mmcblk0p11</tt> aka <tt>/cache</tt>. It is large and already formatted as <tt>ext4</tt>, so it is readable from U-Boot. Here are some general steps:
=== Mainlining notes ===


# From the UART or adb shell, set up your chroot in <tt>/cache</tt>. I used the Alpine Linux rootfs tarball.
Some work happening here: https://gitlab.com/calebccff/linux, the idea is to import the parts of the eink/ebc drivers which are open source and use the downstream u-boot framebuffer driver as a reference to create a basic framebuffer driver.
# Copy in your kernel and DTB, using for example <tt>scp</tt> or <tt>wget</tt> inside the chroot.
# Finally, create and boot an <code>extlinux.conf</code> as described below.


== Using rkdeveloptool ==
Currently mainline struggles to boot due to weird issues while probing fixed regulators (?). It also fails to detect eMMC.


rkdeveloptool is a command line utility built on libusb.
Further work is being done here: https://github.com/smaeul/linux/commits/rk356x-ebc-dev. This has a complete device tree, with working eMMC. Pen input also works out of the box. Wi-Fi and BT work with firmware copied from the factory Android image.


=== Downloading and Building rkdeveloptool ===
== Pages discussing the development efforts ==


PINE64 develops [https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool its own updated fork of rkdeveloptool on GitLab].
The software releases can be found here in the future:  


You will need to have libusb 1.0, its development headers and scdoc installed.
* [[PineNote Software Releases]]


<pre>
The following pages discuss the development efforts for the PineNote:
git clone https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool.git
cd rkdeveloptool
mkdir build
cd build
cmake ..
</pre>


This sets up all the build files. You can then compile with <code>make</code> inside the build directory.
* [[PineNote Development]]
* [[PineNote Development/Flashing]]
* [[PineNote Development/Booting Linux]]
* [[PineNote Development/Building Kernel]]
* [[PineNote Development/TODOs]]


After you're done, you'll likely also need to install the udev rules, or else your user won't have permission to access the USB devices:
For tweaks and tricks see:
* [[PineNote Development/Software Tweaks]]


<pre>
For app development see:
sudo cp 99-rk-rockusb.rules /etc/udev/rules.d/
* [[PineNote Development/Apps]]
sudo udevadm --control reload
</pre>


=== Building Downstream U-Boot ===
== How to boot mainline ==


While in maskrom mode, we need to have a u-boot to download onto the device for any of the other commands to work.
UART is currently REQUIRED for this to work! We depend on u-boot falling back to console. Once we have a prebuilt u-boot which will use extlinux by default, UART won't be needed anymore.


<pre>
You can compile a u-boot that uses extlinux by default by following the instructions [https://github.com/JoshuaMulliken/pinenote_uboot/blob/aa9ecbd3d3e716f163f5a900824630f24e9f04ba/README.md#changing-default-boot-order here].
git clone -b quartz64 https://gitlab.com/pgwipeout/u-boot-rockchip.git
git clone -b rkbin https://github.com/JeffyCN/rockchip_mirrors.git rkbin
cd u-boot-rockchip
export CROSS_COMPILE=aarch64-none-linux-gnu-
make rk3566-quartz64_defconfig
./make.sh
</pre>


=== Entering Maskrom Mode ===
=== Getting to a U-Boot prompt ===


# Flip the device around so that the display faces down
You can get to a U-Boot prompt by:
# Lay the pen on the right side, with its tip pointing towards the speaker grill, and its magnet pointing towards the upper right corner of the label on the back.
# Turn the device on and wait for it to show up in <code>lsusb</code>. It should now be in Loader mode, according to <code>rkdeveloptool list-devices</code>
# Unplug the device and plug it back in. It should now be in maskrom mode.


This can be a bit fiddly to get right, and may need a few tries.
# Holding Ctrl-C while the display panel initializes.
# Wiping the "boot" partition.


=== Running rkdeveloptool ===
=== Using sysboot ===


First, you'll want to make sure the device you've connected is in maskrom mode:
The '''extlinux.conf''' should have the following contents:


<pre>
timeout 10
./rkdeveloptool list
default MAINLINE
</pre>
menu title boot prev kernel
label MAINLINE
  kernel /vmlinuz
  fdt /rk3566-pinenote.dtb
  initrd /initramfs
  append earlycon console=tty0 console=ttyS2,1500000n8 fw_devlink=off PMOS_NO_OUTPUT_REDIRECT


It should output something like <code>DevNo=1 Vid=0x2207,Pid=0x350a,LocationID=202    Maskrom</code>. If it doesn't, see [[PineNote Development#Entering Maskrom Mode]].
At the U-Boot console, run the following command to boot your mainline kernel:


You can now download u-boot onto it:
sysboot ${devtype} ${devnum}:9 any ${scriptaddr} extlinux.conf
<pre>
./rkdeveloptool boot ../u-boot-rockchip/rk356x_spl_loader_v1.08.111.bin
</pre>


This should output <code>Downloading bootloader succeeded.</code>.
=== Booting with individual commands ===


We can now verify that this worked using e.g. the "read flash info" command:
Booting with individual commands can be useful when you need to temporarily add some kernel command line arguments. Use these or similar commands at the U-Boot shell:


<pre>
load mmc 0:b ${kernel_addr_r} boot/Image
./rkdeveloptool read-flash-info
load mmc 0:b ${fdt_addr_r} boot/rk3566-pinenote.dtb
</pre>
setenv bootargs ignore_loglevel root=/dev/mmcblk0p11 rootwait init=/bin/bash
booti ${kernel_addr_r} - ${fdt_addr_r}
 
== Configuration ==
 
=== Firmware for WiFi & Bluetooth and Waveform data ===


'''TODO:''' finish this section
==== Using Maximilian's Debian image  ====
If the Android partition (super) and waveform partition (waveform) is left intact the image extracts the WiFi, BT driver and waveform from the partitions on first run.


=== Creating a mainline boot image ===
For instance if you repartitions the userdata partition and installs the image there.


You can create a filesystem image that replaces the Android boot or recovery partition by doing roughly the following:
==== Getting it from the Android install manually ====
Copy WiFi/BT firmware from Android:


# Erase boot and dtbo with rkdeveloptool or fastboot (back them up first!!!)
mkdir -p /cache/lib/firmware/brcm
# Create an ext2 partition image and mount it (fallocate, mkfs.ext2)
cp /vendor/etc/firmware/fw_bcm43455c0_ag_cy.bin /cache/lib/firmware/brcm/brcmfmac43455-sdio.bin
# Build your mainline kernel
cp /vendor/etc/firmware/nvram_ap6255_cy.txt /cache/lib/firmware/brcm/brcmfmac43455-sdio.txt
# Copy the kernel, dtb and an initramfs to the root of the mounted image (use any old postmarketOS initramfs)
cp /cache/lib/firmware/BCM4345C0.hcd /cache/lib/firmware/brcm/BCM4345C0.hcd
# Create a file in the root of the mounted image called <code>extlinux.conf</code> as described below
# Unmount the image and then use rkdeveloptool to flash it to the "recovery" partition on the pinenote (it's about the right size until we get around to replacing the partition layout).


== Using fastboot ==
Copy waveform partition (via previously dumped file):


Follow the steps for "Creating a mainline boot.img", but instead of flashing it with rkdeveloptool, use fastboot. You can enter fastboot in either of two ways:
adb root
adb push waveform.img /cache/lib/firmware/waveform.bin


# Use "reboot bootloader" from adb or a UART console.
Or via dd within Linux:
# Get a U-Boot prompt and run <code>fastboot usb 0</code>.


= Mainline development =
dd if=/dev/mmcblk0p3 of=/lib/firmware/waveform.bin bs=1k count=2048


== Status ==
==== Getting the Wifi and Bluetooth driver blobs from "other" sources ====
===== WiFi =====
The WiFi firmware .bin blob can be obtained by installing the Debian package firmware-brcm80211 (in the non-free section; in Bookworm and later it's in the non-free-firmware section)


Some work happening here: https://gitlab.com/calebccff/linux, the idea is to import the parts of the eink/ebc drivers which are open source and use the downstream u-boot framebuffer driver as a reference to create a basic framebuffer driver.
The WiFi brcmfmac43455-sdio.txt file can according to Eugen be sourced from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/brcm/brcmfmac43455-sdio.AW-CM256SM.txt needs a renaming when copying it to /lib/firmware/brcm/brcmfmac43455-sdio.txt). The content of the upstream .txt is different than the Android configuration, but is supposed to work.
 
As you don't have WiFi yet you need to get the ''firmware-brcm80211*.deb'' and ''brcmfmac43455-sdio.txt'' file on the PineNote by other means, for instance using an USB stick
 
===== Bluetooth =====
 
Once you have WiFi working you can get BCM4345C0.hcd by installing the ''bluez-firmware'':


Currently mainline struggles to boot due to weird issues while probing fixed regulators (?). It also fails to detect eMMC.
sudo apt install bluez-firmware


Further work is being done here: https://github.com/smaeul/linux/commits/rk356x-ebc-dev. This has a complete device tree, with working eMMC. Pen input also works out of the box. Wi-Fi and BT work with firmware copied from the factory Android image.
=== Configuring the E-ink refresh mode ===


== How to boot mainline ==
* https://github.com/m-weigand/mw_pinenote_misc/tree/main/rockchip_ebc/patches contains information on how/where to write in ''/sys'' to alter the refresh mode
* https://github.com/m-weigand/mw_pinenote_misc/tree/main/gnome_extension contains the gnome extension used in Maximilian image


UART is currently REQUIRED for this to work! We depend on u-boot falling back to console. Once we have a prebuilt u-boot which will use extlinux by default, UART won't be needed anymore.
=== Touchscreen and Pen In X.org ===


=== Getting to a U-Boot prompt ===
By default the pen config is flipped 180° (which makes it unusable) and the touchscreen doesn't work. Placing the following config in <code>/etc/X11/xorg.conf.d/50-touchscreen.conf</code> will fix both problems:


You can get to a U-Boot prompt by:
Section "InputClass"
    Identifier "evdev touchscreen"
    MatchProduct "tt21000"
    MatchIsTouchscreen "on"
    Driver        "evdev"
EndSection
Section "InputClass"
    Identifier    "RotateTouch"
    MatchProduct    "w9013"
    Option    "TransformationMatrix" "-1 0 1 0 -1 1 0 0 1"
EndSection


# Holding Ctrl-C while the display panel initializes.
== Further information ==
# Wiping the "boot" partition.
=== Notes Written by Some Developers ===


=== Using sysboot ===
* https://github.com/m-weigand/mw_pinenote_misc (Not super legible "notes", but very helpful repo with patches, videos, etc)
** specifically see this section for helpful install/configure scripts: https://github.com/m-weigand/mw_pinenote_misc/tree/main/rockchip_ebc/patches#compiling.
* https://github.com/0cc4m/pinenote-misc
** patch for enabling gpu: https://github.com/0cc4m/pinenote-misc/blob/main/mesa-archlinux-arm/mesa/rockchip-ebc.patch
** prebuilt pkg's: https://github.com/0cc4m/pinenote-misc/releases
* https://pwarren.id.au/pinenote/build_notes.txt
* https://github.com/DorianRudolph/pinenotes
* https://github.com/tpwrules/nixos-pinenote


<code>extlinux.conf</code> should have the following contents:
=== Alternative to patching of mesa ===


<pre>
Mesa needs to be patched to add the driver entry point. The alternative to this, is the renaming of the ebc driver to an existing mesa driver entry point. A good existing name can be "repaper". To change the driver name, edit in the kernel tree the following files:
timeout 10
default MAINLINE
menu title boot prev kernel


label MAINLINE
* replace "rockchip-ebc" with "repaper" in the two places in the file: drivers/gpu/drm/rockchip/rockchip_ebc.c <br>
  kernel /vmlinuz
* preventive, replace "repaper" with "repaper-disabled" in the two places in the file: drivers/gpu/drm/tiny/repaper.c <br>
  fdt /rk3566-pinenote.dtb
  initrd /initramfs
  append earlycon console=tty0 console=ttyS2,1500000n8 fw_devlink=off PMOS_NO_OUTPUT_REDIRECT
</pre>


At the u-boot console, run the following command to boot your mainline kernel:
=== Video of Factory Android OS ===


<pre>
[https://www.youtube.com/watch?v=DWuTGgQHw98 PineNote Developer Edition w/Tech Demo Android OS (Video Only)]
sysboot ${devtype} ${devnum}:9 any ${scriptaddr} extlinux.conf
</pre>


=== Booting with individual commands ===
Informal walkthrough of the factory Android installation on the PineNote Developer Edition, recorded by a community member (Apr 2022). This is useful to look back at the original OS after erasing it from your device, or to get some additional detail before your device arrives.


Booting with individual commands can be useful when you need to temporarily add some kernel command line arguments. Use these or similar commands at the U-Boot shell:
The video also includes a chapter at the end showing [https://www.youtube.com/watch?v=DWuTGgQHw98&t=802s how to enable Android Debug Bridge ("adb") over USB]. Once enabled, keep the device powered and connect a USB cable directly to the PineNote (i.e. no UART breakout) to a computer running <code>adb</code>.


load mmc 0:b ${kernel_addr_r} boot/Image
[[Category:PineNote]]
load mmc 0:b ${fdt_addr_r} boot/rk3566-pinenote.dtb
setenv bootargs ignore_loglevel root=/dev/mmcblk0p11 rootwait init=/bin/bash
booti ${kernel_addr_r} - ${fdt_addr_r}

Latest revision as of 23:34, 7 April 2023

This article seeks to provide general mainline Linux development information for the PineNote.

Mainline development

Status

The following table aims to provide a list of kernel modules required for running the PineNote. It also aims at listing repositories of work in progress. While some overlap with the Quartz64 module list (Quartz64_Development#Upstreaming_Status) is expected, only modules relevant to the PineNote hardware should be listed here.

Function Status Module Notes
Suspend mode driver tbd rockchip-sip The rockchip-sip driver is not mainlineable; it is only needed (via a hack) for suspend/resume to work when downstream TF-A is used. Suspend on upstream TF-A (status) should work without any special drivers.
Touchscreen Linux Mainline cyttsp5 As of 6.2-rc1[1]
Digitizer Linux Mainline i2c_hid_of
Pen BLE Buttons tbd ws8100-pen https://github.com/smaeul/linux/commit/46e87f1f9c7dd22af26d99f60eb83d2cace43cb5
EBC Display controller tbd rockchip-ebc RFC PATCH 00/16 drm/rockchip: Rockchip EBC ("E-Book Controller") display driver
EBC PMic tbd tps65185 driver developed here: [2], small tweaks to resume behavior added on top here: [3]
LED backlight driver Linux Mainline lm3630a
Accelerometer Linux Mainline st-accel-i2c (silan,sc7a20) As of 5.18-rc1[4]
Rastergraphics unit RGA2e tbd rga (v4l2 mem2mem driver) WIP patches for activation on the Pinenote/dithering/Y4-conversion can be found here: [5].

Note that the rga2e in the rk3566 only works for RAM <= 4 G!). Simple demo program found here: [6]

Mali GPU Linux Mainline Upstream Mesa panfrost As of 5.18 [7] this got added to the .dtsi file, but it's status is disabled. Enabling the gpu node upstream needs to wait till rockchip-ebc is upstreamed.
Wifi/BT Linux Mainline brcmfmac

Mainlining notes

Some work happening here: https://gitlab.com/calebccff/linux, the idea is to import the parts of the eink/ebc drivers which are open source and use the downstream u-boot framebuffer driver as a reference to create a basic framebuffer driver.

Currently mainline struggles to boot due to weird issues while probing fixed regulators (?). It also fails to detect eMMC.

Further work is being done here: https://github.com/smaeul/linux/commits/rk356x-ebc-dev. This has a complete device tree, with working eMMC. Pen input also works out of the box. Wi-Fi and BT work with firmware copied from the factory Android image.

Pages discussing the development efforts

The software releases can be found here in the future:

The following pages discuss the development efforts for the PineNote:

For tweaks and tricks see:

For app development see:

How to boot mainline

UART is currently REQUIRED for this to work! We depend on u-boot falling back to console. Once we have a prebuilt u-boot which will use extlinux by default, UART won't be needed anymore.

You can compile a u-boot that uses extlinux by default by following the instructions here.

Getting to a U-Boot prompt

You can get to a U-Boot prompt by:

  1. Holding Ctrl-C while the display panel initializes.
  2. Wiping the "boot" partition.

Using sysboot

The extlinux.conf should have the following contents:

timeout 10
default MAINLINE
menu title boot prev kernel

label MAINLINE
  kernel /vmlinuz
  fdt /rk3566-pinenote.dtb
  initrd /initramfs
  append earlycon console=tty0 console=ttyS2,1500000n8 fw_devlink=off PMOS_NO_OUTPUT_REDIRECT

At the U-Boot console, run the following command to boot your mainline kernel:

sysboot ${devtype} ${devnum}:9 any ${scriptaddr} extlinux.conf

Booting with individual commands

Booting with individual commands can be useful when you need to temporarily add some kernel command line arguments. Use these or similar commands at the U-Boot shell:

load mmc 0:b ${kernel_addr_r} boot/Image
load mmc 0:b ${fdt_addr_r} boot/rk3566-pinenote.dtb
setenv bootargs ignore_loglevel root=/dev/mmcblk0p11 rootwait init=/bin/bash
booti ${kernel_addr_r} - ${fdt_addr_r}

Configuration

Firmware for WiFi & Bluetooth and Waveform data

Using Maximilian's Debian image

If the Android partition (super) and waveform partition (waveform) is left intact the image extracts the WiFi, BT driver and waveform from the partitions on first run.

For instance if you repartitions the userdata partition and installs the image there.

Getting it from the Android install manually

Copy WiFi/BT firmware from Android:

mkdir -p /cache/lib/firmware/brcm
cp /vendor/etc/firmware/fw_bcm43455c0_ag_cy.bin /cache/lib/firmware/brcm/brcmfmac43455-sdio.bin
cp /vendor/etc/firmware/nvram_ap6255_cy.txt /cache/lib/firmware/brcm/brcmfmac43455-sdio.txt
cp /cache/lib/firmware/BCM4345C0.hcd /cache/lib/firmware/brcm/BCM4345C0.hcd

Copy waveform partition (via previously dumped file):

adb root
adb push waveform.img /cache/lib/firmware/waveform.bin

Or via dd within Linux:

dd if=/dev/mmcblk0p3 of=/lib/firmware/waveform.bin bs=1k count=2048

Getting the Wifi and Bluetooth driver blobs from "other" sources

WiFi

The WiFi firmware .bin blob can be obtained by installing the Debian package firmware-brcm80211 (in the non-free section; in Bookworm and later it's in the non-free-firmware section)

The WiFi brcmfmac43455-sdio.txt file can according to Eugen be sourced from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/brcm/brcmfmac43455-sdio.AW-CM256SM.txt needs a renaming when copying it to /lib/firmware/brcm/brcmfmac43455-sdio.txt). The content of the upstream .txt is different than the Android configuration, but is supposed to work.

As you don't have WiFi yet you need to get the firmware-brcm80211*.deb and brcmfmac43455-sdio.txt file on the PineNote by other means, for instance using an USB stick

Bluetooth

Once you have WiFi working you can get BCM4345C0.hcd by installing the bluez-firmware:

sudo apt install bluez-firmware

Configuring the E-ink refresh mode

Touchscreen and Pen In X.org

By default the pen config is flipped 180° (which makes it unusable) and the touchscreen doesn't work. Placing the following config in /etc/X11/xorg.conf.d/50-touchscreen.conf will fix both problems:

Section "InputClass"
    Identifier "evdev touchscreen"
    MatchProduct "tt21000"
    MatchIsTouchscreen "on"
    Driver        "evdev"
EndSection
Section "InputClass"
    Identifier    "RotateTouch"
    MatchProduct    "w9013"
    Option    "TransformationMatrix" "-1 0 1 0 -1 1 0 0 1"
EndSection

Further information

Notes Written by Some Developers

Alternative to patching of mesa

Mesa needs to be patched to add the driver entry point. The alternative to this, is the renaming of the ebc driver to an existing mesa driver entry point. A good existing name can be "repaper". To change the driver name, edit in the kernel tree the following files:

  • replace "rockchip-ebc" with "repaper" in the two places in the file: drivers/gpu/drm/rockchip/rockchip_ebc.c
  • preventive, replace "repaper" with "repaper-disabled" in the two places in the file: drivers/gpu/drm/tiny/repaper.c

Video of Factory Android OS

PineNote Developer Edition w/Tech Demo Android OS (Video Only)

Informal walkthrough of the factory Android installation on the PineNote Developer Edition, recorded by a community member (Apr 2022). This is useful to look back at the original OS after erasing it from your device, or to get some additional detail before your device arrives.

The video also includes a chapter at the end showing how to enable Android Debug Bridge ("adb") over USB. Once enabled, keep the device powered and connect a USB cable directly to the PineNote (i.e. no UART breakout) to a computer running adb.