Last modified: 2023-03-29

PipePhone

DISCLAIMER

I am just a customer and these are my opinions. I am not affiliated with PinePhone or Pine64.

I have purchased PINEPHONE Beta Edition with Convergence Package Linux SmartPhone, and later I also got myself the keyboard case right after it became available.

PinePhone specs:

  • CPU: 64-bit Quad-core 1.2 GHz ARM Cortex A-53
  • RAM: 3GB LPDDR3 SDRAM
  • Storage: 32GB eMMC

Bug

When using the keyboard case, do not charge your phone via the USB-C on your phone, but via the USB-C in the keyboard case. You will fuck-up the changing circuit. See manual.

Warning

PinePhone Pro has different boot order! PinePhone boots primarily from SD card, then eMMC. PinePhone pro boots primarily from eMMC, booting the Manjaro u-Boot, taking away control over the bootloader. This is unacceptable.

p-boot demo on SD card

p-boot-demo is definitely a must-have. In essence, it is a collection of multiple Operating Systems for PinePhone, and it allows you to quickly try out various operating systems. Download link is in the Download section.

Installation

Decompress the archive

\$ zstd -d multi.img.zst

Write the image to SD card (in this example the SD card shows up as /dev/sdc block device)

# dd if=multi.img of=/dev/sdc bs=4M oflag=direct status=progress

Resize the second partition with fdisk

# fdisk /dev/sdc
  • Delete 2nd partition
  • Create new partition
    • Partition number: 2
    • Partition type: primary
    • First sector: 409600
    • Do not remove the file-system signature

Warning

So not forget to change first sector!

The original partition table had 2nd partition starting at sector 409600.

Disk /dev/sdc: 14.52 GiB, 15590227968 bytes, 30449664 sectors
Disk model: UHS-II SD Reader
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x12345678

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdc1  *      8192   409599   401408  196M 83 Linux
/dev/sdc2       409600 20479999 20070400  9.6G 83 Linux
Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Partition number (1,2, default 2): 

Partition 2 has been deleted.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
First sector (2048-30449663, default 2048): 409600
Last sector, +/-sectors or +/-size{K,M,G,T,P} (409600-30449663, default 30449663): 

Created a new partition 2 of type 'Linux' and of size 14.3 GiB.
Partition #2 contains a btrfs signature.

Do you want to remove the signature? [Y]es/[N]o: n

Command (m for help): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

The resize the BTRFS file-system.

# mount /dev/sdc2 /mnt/
# btrfs filesystem resize max /mnt/
# sync
# umount /mnt
# eject /dev/sdc

Flash eMMC

Firstly use the p-boot to boot JumpDrive, and then connect the phone via USB-C cable to you phone. The JumpDrive will expose eMMC and SD card is block devices.

You can then use dd to write image you wish to install.

# dd if=Manjaro-ARM-phosh-pinephone-beta28.img of=/dev/sdc bs=4M oflag=direct conv=fsync status=progress

Keyboard tools

Firstly install yay

# pacman -S --needed base-devel
\$ git clone https://aur.archlinux.org/yay.git
\$ cd yay
\$ makepkg -si

Then install pinephone-keyboard-git

\$ yay -S pinephone-keyboard-git

Now you can use ppkb-i2c-charger-ctl to interact with the battery charger.

Review

Initially I started with DanctNIX (ArchLinux), mostly because I like ArchLinux but also because encrypted system partition with dm-crypt is a must-have. Unfortunately there are many problems, mostly caused by broken Pine64 community.

I also started with SXMO, but soon had to switch to Phosh. SXMO is nice and super-cool, but unfinished. For example you can't send / press numerical keys during call. This is important when calling companies to navigate though answering machine.

Right now, I am using Manjaro with Phosh, just because it seems to be the least broken option.

Overall, this phone has a lot of pros and cons.

Pros:

  • You can purchase spare parts
  • One of few Open-Source friendly phones on market that did not die few months after launch

Cons:

Verdict (after almost 2 years of daily use):

  • Would I recommend this phone to "normal" people as daily driver?
    • No way
  • Would I recommend this phone to Linux geeks as daily driver?
    • No
  • Would I recommend this phone to Linux geeks as a toy?
    • Maybe
  • I am happy with my purchase of this phone?
    • Not really, I am disappointed with the software and Pine64 community
  • Would I buy this phone again?
    • No

Just to say, my requirements for phone are functional and reliable GSM, running Linux, WiFi. That's it, my demands are very low.

Since this phone is such a disaster, I am actually considering to resurrect my old project to build RaspberryPi-phone based on RaspberryPi-Zero.

Few interesting sources