PINE64 PineNote (pine64-pinenote): Difference between revisions
update and add flashing info |
|||
Line 15: | Line 15: | ||
| architecture = aarch64 | | architecture = aarch64 | ||
<!-- the following status_* questions should be answered with Y - yes, P - partial, N - no, or left blank (for untested or unknown) --> | <!-- the following status_* questions should be answered with Y - yes, P - partial, N - no, or left blank (for untested or unknown) --> | ||
| status_usbnet = <!-- USB networking does work? then put Y here and delete this comment --> | | status_usbnet = N<!-- USB networking does work? then put Y here and delete this comment --> | ||
| status_flashing = <!-- Flashing with "pmbootstrap flasher" works? Put Y here. It works the same for everything coming below. --> | | status_flashing = Y<!-- Flashing with "pmbootstrap flasher" works? Put Y here. It works the same for everything coming below. --> | ||
| status_touch = <!-- Touch screen is working? You can also answer these questions with P for partially. --> | | status_touch = Y<!-- Touch screen is working? You can also answer these questions with P for partially. --> | ||
| status_screen = <!-- The display is working? --> | | status_screen = P<!-- The display is working? --> | ||
| status_wifi = <!-- Wireless network works? --> | | status_wifi = Y<!-- Wireless network works? --> | ||
| status_xwayland = <!-- Showing X11 applications in a Wayland compositor (Weston, KWin, ...) works? --> | | status_xwayland = Y<!-- Showing X11 applications in a Wayland compositor (Weston, KWin, ...) works? --> | ||
| status_fde = <!-- When installing with full disk encryption, can you type in the password with the on screen keyboard? --> | | status_fde = <!-- When installing with full disk encryption, can you type in the password with the on screen keyboard? --> | ||
| status_mainline = <!-- Instead of a Linux kernel fork, it is possible to run mainline. --> | | status_mainline = Y<!-- Instead of a Linux kernel fork, it is possible to run mainline. --> | ||
| status_battery = <!-- Charging the battery with charging-sdl is possible --> | | status_battery = Y<!-- Charging the battery with charging-sdl is possible --> | ||
| status_3d = <!-- Hardware accelerated 3D graphics (e.g. with freedreno) --> | | status_3d = N<!-- Hardware accelerated 3D graphics (e.g. with freedreno) --> | ||
| status_accel = <!-- The sensor that measures proper acceleration works --> | | status_accel = N<!-- The sensor that measures proper acceleration works --> | ||
| status_audio = <!-- Using the device's speakers/headphone jack works --> | | status_audio = Y<!-- Using the device's speakers/headphone jack works --> | ||
| status_bluetooth = <!-- It's possible to pair and use other devices via the bluetooth protocol --> | | status_bluetooth = Y<!-- It's possible to pair and use other devices via the bluetooth protocol --> | ||
| status_camera = <!-- Taking photos and videos works. --> | | status_camera = -<!-- Taking photos and videos works. --> | ||
| status_gps = <!-- The Global Positioning System sensor works. --> | | status_gps = -<!-- The Global Positioning System sensor works. --> | ||
| status_mobiledata = <!-- Connecting to the Internet via cellular network. --> | | status_mobiledata = -<!-- Connecting to the Internet via cellular network. --> | ||
| status_sms = <!-- Sending and receiving short messages works as intended. --> | | status_sms = -<!-- Sending and receiving short messages works as intended. --> | ||
| status_calls = <!-- Talking to other people over the cellular network. --> | | status_calls = -<!-- Talking to other people over the cellular network. --> | ||
| status = <!-- Text displayed in the "not booting" table on the Devices page , e.g "kernel compiles, doesn't boot" --> | | status = Booting mainline! UART required<!-- Text displayed in the "not booting" table on the Devices page , e.g "kernel compiles, doesn't boot" --> | ||
| status_otg = <!-- USB-OTG adapters work, e.g. to connect an USB flash drive to the device --> | | status_otg = N<!-- USB-OTG adapters work, e.g. to connect an USB flash drive to the device --> | ||
| status_nfc = <!-- Near-Field Communication (NFC) works --> | | status_nfc = -<!-- Near-Field Communication (NFC) works --> | ||
| booting = | | booting = yes <!-- The device is booting at all, can be yes/no *IMPORTANT* --> | ||
<!-- you can also use these lines if you need to: | <!-- you can also use these lines if you need to: | ||
Line 47: | Line 47: | ||
--> | --> | ||
}} | }} | ||
== Installation == | |||
{{Note|This will erase your userdata and make android unbootable, take backups of all affected partitions via ADB (rkdeveloptool read-partition only allows reading partitions < 32mb)}} | |||
Currently, installing postmarketOS requires UART access to manually boot the mainline kernel. If you have a developer unit, removing the back cover will reveal the pre-soldered UART wires, if you have a production unit you will have to solder these yourself. This will be resolved as soon as we have a u-boot build which can auto-boot from extlinux. | |||
Install rkdeveloptool from https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool, put the end of the pen near the top right of the back of the device to trigger rockusb mode. | |||
We need to wipe the boot and recovery partitions to make sure u-boot doesn't try and boot Android | |||
<pre> | |||
fallocate 32M blank.bin | |||
rkdeveloptool write-partition boot blank.bin | |||
rkdeveloptool write-partition recovery blank.bin | |||
</pre> | |||
Now build an image with pmbootstrap, I would recommend Phosh or sway. | |||
<pre> | |||
pmbootstrap init # pine64 pinenote | |||
pmbootstrap install | |||
</pre> | |||
And flash (pmbootstrap supports rkdeveloptool as of {{MR|2165|pmbootstrap}}). | |||
<pre> | |||
pmbootstrap flasher flash_rootfs # flashes to userdata | |||
pmbootstrap flasher flash_kernel # flashes to cache | |||
</pre> | |||
Alright, now for UART, reboot the device and it should put you in a u-boot shell, we can boot with: | |||
<pre> | |||
$ picocom /dev/ttyUSB0 -b 1500000 -l | |||
=> sysboot ${devtype} ${devnum}:b any ${scriptaddr} extlinux.conf | |||
</pre> | |||
b is the partition number (11) for the cache partition, where we flashed the extlinux boot partition to. | |||
You should now see the postmarketOS splash and the pinenote will boot. | |||
== Contributors == | == Contributors == | ||
Line 101: | Line 137: | ||
* [https://wiki.pine64.org/wiki/PineNote PINE64 wiki page] | * [https://wiki.pine64.org/wiki/PineNote PINE64 wiki page] | ||
* [https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool fork of rkdeveloptool with many improvements] this will be the version supported on the pinenote. | * [https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool fork of rkdeveloptool with many improvements] this will be the version supported on the pinenote. | ||
* {{MR|2165|pmbootstrap}} - support for rkdeveloptool in pmbootstrap for flashing with BSP u-boot | |||
* |
Revision as of 01:39, 5 February 2022
![]() The PineNote showing a pdf | |
Manufacturer | PINE64 |
---|---|
Name | PineNote |
Codename | pine64-pinenote |
Released | 2021 |
Hardware | |
Chipset | Rockchip RK3566 |
CPU | 4x 2Ghz Cortex-A55 |
GPU | Mali G52 2EE |
Display | 1404x1872 e-paper |
Storage | 128 GB |
Memory | 4GB |
Architecture | aarch64 |
Software | |
Original software | Unknown |
postmarketOS | |
Category | testing |
Pre-built images | no |
Mainline | yes |
Flashing |
Works |
---|---|
USB Networking |
Broken |
Internal storage |
No data |
SD card |
No data |
Battery |
Works |
Screen |
Partial |
Touchscreen |
Works |
Multimedia | |
3D Acceleration |
Broken |
Audio |
Works |
Camera Flash |
No data |
Connectivity | |
WiFi |
Works |
Bluetooth |
Works |
Miscellaneous | |
FDE |
No data |
USB OTG |
Broken |
HDMI/DP |
No data |
Sensors | |
Accelerometer |
Broken |
Magnetometer |
No data |
Ambient Light |
No data |
Proximity |
No data |
Hall Effect |
No data |
Haptics |
No data |
Barometer |
No data |
Installation
This will erase your userdata and make android unbootable, take backups of all affected partitions via ADB (rkdeveloptool read-partition only allows reading partitions < 32mb) |
Currently, installing postmarketOS requires UART access to manually boot the mainline kernel. If you have a developer unit, removing the back cover will reveal the pre-soldered UART wires, if you have a production unit you will have to solder these yourself. This will be resolved as soon as we have a u-boot build which can auto-boot from extlinux.
Install rkdeveloptool from https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool, put the end of the pen near the top right of the back of the device to trigger rockusb mode.
We need to wipe the boot and recovery partitions to make sure u-boot doesn't try and boot Android
fallocate 32M blank.bin rkdeveloptool write-partition boot blank.bin rkdeveloptool write-partition recovery blank.bin
Now build an image with pmbootstrap, I would recommend Phosh or sway.
pmbootstrap init # pine64 pinenote pmbootstrap install
And flash (pmbootstrap supports rkdeveloptool as of pmbootstrap!2165).
pmbootstrap flasher flash_rootfs # flashes to userdata pmbootstrap flasher flash_kernel # flashes to cache
Alright, now for UART, reboot the device and it should put you in a u-boot shell, we can boot with:
$ picocom /dev/ttyUSB0 -b 1500000 -l => sysboot ${devtype} ${devnum}:b any ${scriptaddr} extlinux.conf
b is the partition number (11) for the cache partition, where we flashed the extlinux boot partition to.
You should now see the postmarketOS splash and the pinenote will boot.
Contributors
- MartijnBraam
Users owning this device
- Aa13q
- AlleM43
- Antonroots
- Ayakael (Notes: Bringing-up SXMO, port maintainer)
- Caleb (Notes: Worked on mainline bringup)
- Icenowy
- MartijnBraam
How to enter flash mode
The device is only flashable using the rkusb bootloader mode. This can be done with the opensource rkdeveloptool utility.
To trigger the bootloader hold a magnet on the backcover of the pinenote while powering it on.
When it's booted correctly into bootloader mode it should show up in the device list of rkdeveloptool:
$ rkdeveloptool ld
DevNo=1 Vid=0x2207,Pid=0x350a,LocationID=100 Loader
It's possible to overwrite the eMMC with the LBA write command:
$ rkdeveloptool wl 0 rootfs.img
The 0 is the offset in blocks from the start of the eMMC, can be used to flash a partition if you know the offset
Recover from a broken bootloader
If uboot image is overwritten the rockusb mode won't work anymore. The device might boot into maskrom mode in which case it should show up in `rkdeveloptool list` as maskrom. If the uboot image is partially overwritten but still recognized by the maskrom it won't stay in maskrom mode and you'd have to open the back of the device and short TP1301 and TP1302 while powering up. This will make eMMC reads fail so maskrom always runs.
Once the device is in maskrom mode the only thing you can do is push a new loader into ram and start that.
$ rkdeveloptool list
here it lists maskrom now
The .bin file is build by u-boot and might have a slightly different version
$ rkdeveloptool db rk356x_spl_loader_v1.04.108.bin
$ rkdeveloptool ptt
now it's able to read flash and list the partitions
Installation
Todo
See also
- PINE64 wiki page
- fork of rkdeveloptool with many improvements this will be the version supported on the pinenote.
- pmbootstrap!2165 - support for rkdeveloptool in pmbootstrap for flashing with BSP u-boot