Difference between revisions of "PinePhone"

From Maemo Leste Wiki
Jump to navigationJump to search
m (→‎Write the image to an SD-Card.: add checksum instructions, formatting)
Line 123: Line 123:
==== Write the image to an SD-Card. ====
==== Write the image to an SD-Card. ====


Download the latest image from [https://maedevu.maemo.org/images/pinephone/ here].  
''DO NOT'' copy-paste these instructions.
 
Download the latest image from [https://maedevu.maemo.org/images/pinephone/ here] and the associated checksum file.
 
$ wget https://maedevu.maemo.org/images/pinephone/''DATE''/''IMAGE FILE''
$ wget https://maedevu.maemo.org/images/pinephone/''DATE''/''CHECKSUM FILE''
$ sha256sum maemo-leste-*-arm64-pinephone-*.img.xz
$ cat maemo-leste-*-arm64-pinephone-*.img.xz.sha56
Compare results. If the checksums match, extract the image:
  $ unxz maemo-leste-*-arm64-pinephone-*.img.xz
  $ unxz maemo-leste-*-arm64-pinephone-*.img.xz
''Be very careful with this step (read warnings below).''
''Be very careful with this step (read warnings below).''
  $ dd if=maemo-leste-*-arm64-pinephone-*.img /path/to/sd-card bs=4M status=progress conv=fsync
  $ dd if=maemo-leste-*-arm64-pinephone-*.img /path/to/sd-card bs=4M status=progress conv=fsync
Block size set to 4M will work most of the time. If not, try 1M, although this will take considerably longer.
Block size set to 4M will work most of the time. If not, try 1M, although this will take considerably longer.
<small>If using a Windows machine, you can use [https://etcher.io/ Etcher] NOTE: Etcher does not warn you before starting the flashing operation, so please be extra careful that you choose the correct device to flash to.</small>


  <small>Make absolutely sure you replace the input file <code>if=</code> argument with the path to your file, and the <code>/dev/sdX</code> in the output file <code>of=</code> argument with the correct device name. This is very important, as you will lose all the data on the device you selected, make sure it is the correct one.</small>  
  <small>Make absolutely sure you replace the input file <code>if=</code> argument with the path to your file, and the <code>/dev/sdX</code> in the output file <code>of=</code> argument with the correct device name. This is very important, as you will lose all the data on the device you selected, make sure it is the correct one.</small>  


  <small>Do not use partition numbers, or it won't boot. For example: sdd, not sdds1 or sddp1; mmcblk0, not mmcblk0p1. In most cases with SD cards, your computer might read the SD card as mmcblk0 or something similar.</small>
  <small>Do not use partition numbers, or it won't boot. For example: sdd, not sdds1 or sddp1; mmcblk0, not mmcblk0p1. In most cases with SD cards, your computer might read the SD card as mmcblk0 or something similar.</small>
<small>You can use Gnome Disks, gparted, [https://etcher.io/ Etcher], etc...your choice. Again, as with all of these tools, be careful to select the microSD card not your computer hard drive.</small>


=== eMMC Installation ===
=== eMMC Installation ===

Revision as of 20:24, 15 August 2022

This page or section is a stub. Ask how you can help improve leste.maemo.org by visiting #maemo-leste, look at the bugtracker (https://github.com/maemo-leste/bugtracker) or if you are able to contribute to the current page, then you are welcome to do so.

PinePhone
Manufacturer Pine64
Specifications
SoC Allwinner A64
Hardware Features
Software Features

This is for all PinePhones starting with the first Pinephone (Braveheart) phone, but not for the PinePhone Pro.

Notes

Testing images repo.

What you can do with the 20220206 image:

  • Run any applications in Debian and Devuan on your phone
  • Connect to wifi
  • Use the terminal
  • Connect to 2G/3G/4G data connections
  • Make and receive phone calls and SMS
  • PinePhone keyboard is supported

Status

Feature Leste supported Notes
Kernel version 5.15 Mainline + some patches: https://github.com/maemo-leste/pine64-kernel
Serial Yes Via headphone jack (disable headphone switch)
Charging Yes
Wireless Yes Involves installing out of tree driver
Ethernet N/A ps: USB Ethernet adapter tested and works
Bluetooth YES No UI integration yet
Infrared N/A TX only (hardware limitation).
USB C Yes Peripheral/slave, exposes network gadget by default. Host Untested
Keyboard Yes When a PP keyboard is connected, it works out-of-the-box
Screen Yes Modesetting driver
3D Acceleration Yes mesa-lima
Touchscreen Yes Capacitive
Audio Yes Pulseaudio and UCM units
2G/3G/4G data YES Works with ofono;
SMS YES Works with ofono, will using telepathy-ring. Sphone and Conversations are currently available
Phone calls YES Works with ofono; Calls work with sphone as UI
VoLTE YES Quectel EG25 has VoLTE support, no userland required, but setting VoLTE profile might be needed
Accelerometer Yes
Proximity sensor Yes
RGB LED WIP Works, but mce can't deal with LEDs without controllers yet.
Vibration Motor ?
GPS WIP Works with WIP Leste GPS stack
Cameras WIP Driver present for rear (OV5640) and front (GC2145) cameras. User space support in progress with libcamera.

Installation

(Work in Progress)

Currently:

  • working out how to install .tar.gz

Unlike most phones, it's pretty simple.

Download the image and the corresponding .sha file, then verify the image's integrity:

$ cat maemo-leste-*-arm64-pinephone-*.img.sha
$ sha256sum maemo-leste-*-arm64-pinephone-*.img.xz

or

$ cat maemo-leste-*-arm64-pinephone-*.tar.gz.sha
$ sha256sum maemo-leste-*-arm64-pinephone-*.tar.gz

Verify that the number that each command spits out is exactly the same number. If it is not, do not use the image. Try redownloading or ask for help.

SD Card Installation

Prepare the SD card

Create a new msdos partition table using fdisk

$ sudo fdisk /dev/SDCARD 

press 'p' to view current table press 'o' to erase and make a new table press 'w' to write changes and quit

Write the image to an SD-Card.

DO NOT copy-paste these instructions.

Download the latest image from here and the associated checksum file.

$ wget https://maedevu.maemo.org/images/pinephone/DATE/IMAGE FILE
$ wget https://maedevu.maemo.org/images/pinephone/DATE/CHECKSUM FILE
$ sha256sum maemo-leste-*-arm64-pinephone-*.img.xz
$ cat maemo-leste-*-arm64-pinephone-*.img.xz.sha56

Compare results. If the checksums match, extract the image:

$ unxz maemo-leste-*-arm64-pinephone-*.img.xz

Be very careful with this step (read warnings below).

$ dd if=maemo-leste-*-arm64-pinephone-*.img /path/to/sd-card bs=4M status=progress conv=fsync

Block size set to 4M will work most of the time. If not, try 1M, although this will take considerably longer.

Make absolutely sure you replace the input file if= argument with the path to your file, and the /dev/sdX in the output file of= argument with the correct device name. This is very important, as you will lose all the data on the device you selected, make sure it is the correct one. 
Do not use partition numbers, or it won't boot. For example: sdd, not sdds1 or sddp1; mmcblk0, not mmcblk0p1. In most cases with SD cards, your computer might read the SD card as mmcblk0 or something similar.
You can use Gnome Disks, gparted, Etcher, etc...your choice. Again, as with all of these tools, be careful to select the microSD card not your computer hard drive.

eMMC Installation

Warning, this no longer works in latest images since boot.txt was removed. Please improve this section.

Extract the image

Download the .img.xz version of the image and extract it:

$ unxz -k maemo-leste-*-arm64-pinephone-*.img.xz

Modify the image to use eMMC paths

The image, by default, points to /dev/mmcblk0 for SD cards, which must be modified to point to /dev/mmcblk2 for the eMMC. To start, determine the starting points of the image partitions:

$ fdisk -u -l maemo-leste-*-arm64-pinephone-*.img

In the output of this command, look for the Start column and multiply these values individually with the value given by the Units section -- this gives the offsets of the partitions from the beginning of the file.

Mount the first partition and enter it:

$ sudo mount -o loop,offset=<Partition 1 offset> maemo-leste-*-arm64-pinephone-*.img /mnt
$ cd /mnt

Use the editor of your choice to edit boot.txt, replacing /dev/mmcblk0 with /dev/mmcblk2.


Regenerate boot.scr:

$ sudo mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d boot.txt boot.scr

Leave the first partition and unmount it:

$ cd ~
$ sudo umount /mnt

Mount the second partition and enter it:

$ sudo mount -o loop,offset=<Partition 2 offset> maemo-leste-*-arm64-pinephone-*.img /mnt
$ cd /mnt

Use the editor of your choice to edit etc/fstab, replacing /dev/mmcblk0 with /dev/mmcblk2.

Leave the second partition and unmount it:

$ cd ~
$ sudo umount /mnt

The image is now ready to be installed to the eMMC.

Install image to eMMC

Note: Currently not working, needs testing

From the Pine64 Wiki:

Using Tow-Boot

If you flashed tow-boot to the PinePhone (instructions here), the eMMC can be flashed by holding vol+ on startup to boot into USB Mass Storage mode.

The process of flashing Maemo Leste to the eMMC is identical to that of any other storage medium - e.g. a microSD card. You can use the dd command or a utility such as Etcher or Gnome Disks, etc.

Using JumpDrive

You can flash Maemo Leste to eMMC using JumpDrive. This utility boots from microSD and exposes the internal eMMC flash storage when the PinePhone is connected to a computer.

The process of flashing Maemo Leste to the exposed and mounted eMMC is identical to that of any other storage medium - e.g. a microSD card.

JumpDrive instructions are on the Pine64 wiki.

From the booted microSD

  1. Flash Maemo Leste to the microSD card
  2. Insert microSD card and boot the phone
  3. Download the latest Maemo Leste image on the booted OS; if you get errors during download, you'll have to expand the partition; and don't forget to re-check the checksums when you download.
  4. Extract the image file so that it only ends in ".img"
  5. Flash the image file to eMMC using dd if=IMAGE.img of=/dev/mmcblkX bs=1M status=progress conv=fsync where X is the number label of the eMMC (of the disk, not the partition!). Use the command lsblk to check your devices: typically with the current kernel the microSD card is /dev/mmcblk0 and the eMMC is /dev/mmcblk2 but as always with dd be extremely cautious to get the devices correct.
  6. Turn off phone, remove microSD card and then turn on the phone.

More Information

  • Virtual keyboard should work in all gtk2 applications (not yet in gtk3 and qt, but this is coming).
  • Default virtual keyboard is set to off. You may want to go to setting and change that first for using the terminal. Click the top left corner->"Settings"->"Text input"->check the "Use virtual keyboard" option. You may also want to change the keyboard layout by changing the dictionary setting.
  • WiFi and terminal work.
  • Some rendering bugs in portrait mode remain, so the default desktop orientation is landscape for now (xrandr -o right). Please note that if orientation is changed (e.g. with xrandr -o normal) the ui will still be reading original key positions.
  • Screen brightness adjustments in UI do not work on the Pinephone yet. There is also a user reported when "brightness" UI setting is set to minimum (no visual change normally), the screen will stay black after reboot with WiFi set to ON with kill switch. However screen is normal after reboot if WiFi set to OFF with kill switch even minimum "brightness" UI setting. You may still change the screen brightness with terminal commands: xrandr --output DSI-1 --brightness 0.5
  • Performance is not bad, but will get better, with hildon-desktop optimisations and as lima improves.
  • Many "games" packages in the Application Manager don't work well yet.
  • VoLTE should work out-of-the-box. If not, please set the VoLTE profile via AT commands. For example, for T-Mobile in US, do:
$ echo 'AT+QMBNCFG="select","Commercial-TMO_VoLTE"' | atinout - /dev/EG25.AT -

In order to list all specific VoLTE profiles, use:

$ echo 'AT+QMBNCFG="list"' | atinout - /dev/EG25.AT -

How to take a picture

Maemo userland to take pictures or make videos is not ready yet.

You can use this script as reference to take a picture: https://github.com/OpenMandrivaAssociation/pinephone-tools/blob/master/camera-setup

Or use libcamera tools (libcamera-tools package). To list the cameras:

$ cam -l

Example to capture 10 pictures with the rear camera:

$ cam --camera "/base/i2c-csi/rear-camera@4c" --file=/home/user/some_dir --capture=10

Example to capture 10 pictures with the front camera:

$ cam --camera "/base/i2c-csi/front-camera@3c" --file=/home/user/some_dir --capture=10

And then, conver the raw ".bin" files to some useful format with ffmpeg or any other image conversion tool. Example:

$ ffmpeg -f image2 -vcodec rawvideo -s 1600x1200 -pix_fmt bayer_bggr8 -i picture.bin converted_picture.jpeg

Also the graphical tool "qcam" should work, but it has some color space conversion bugs. Run it with:

$ qcam -r gles -spixelformat=SBGGR8,width=1280,height=720 -platform xcb -style=fusion

Enabling Flash Light / Torch

Enable:

$  echo 1 > /sys/class/leds/white:flash/brightness

Disable:

$ echo 0 > /sys/class/leds/white:flash/brightness

Trigger flash strobe:

$ echo 1 > /sys/class/leds/white:flash/flash_strobe