This is for all PinePhones starting with the first Pinephone (Braveheart) phone, but not for the PinePhone Pro.
Currently, most things work, for example you can:
- 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
|Kernel version||5.15||Mainline + some patches: https://github.com/maemo-leste/pine64-kernel|
|Serial||Yes||Via headphone jack (disable headphone switch)|
|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|
|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|
|RGB LED||WIP||Works, but mce can't deal with LEDs without controllers yet.|
|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.|
- Virtual keyboard should work in all gtk2 applications (not yet in gtk3 and qt, but this is coming).
- Default virtual keyboard is set to on. You can check by tapping the top left corner->"Settings"->"Text input"-> ensure the "Use virtual keyboard" option is checked. You may also want to change the keyboard layout by changing the dictionary settings.
- 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 -
Unlike most phones, it's pretty simple.
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.
Download the latest image and the associated checksum file from here.
$ 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 the output. If they do not match, stop and ask someone in the project for help. If the checksums match, extract the image:
$ unxz maemo-leste-*-arm64-pinephone-*.img.xz
Write the image to microSD. Be very careful with this step to select the correct device.
$ 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. 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.
Make absolutely sure you replace the input file
if=argument with the path to your file, and the
/dev/sdXin 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. 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.
Note: Currently not working
Some notes have been adapted from the Pine64 Wiki.
Preparing the .img file for eMMC boot
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. Warning, this no longer works in latest images since boot.txt was removed. Please update this section.
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
$ 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
Leave the second partition and unmount it:
$ cd ~ $ sudo umount /mnt
The image is now ready to be installed to the eMMC.
Install Using Tow-Boot
If you flashed tow-boot to the PinePhone 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.
Install 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.
Install from the booted microSD
- Flash Maemo Leste to the microSD card
- Insert microSD card and boot the phone
- 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.
- Extract the image file so that it only ends in ".img"
- Flash the image file to eMMC using
dd if=IMAGE.img of=/dev/mmcblkX bs=1M status=progress conv=fsyncwhere X is the number label of the eMMC (of the disk, not the partition!). Use the command
lsblkto 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.
- Turn off phone, remove microSD card and then turn on the phone.
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
$ echo 1 > /sys/class/leds/white:flash/brightness
$ echo 0 > /sys/class/leds/white:flash/brightness
Trigger flash strobe:
$ echo 1 > /sys/class/leds/white:flash/flash_strobe
- Apps can be installed just as on any Devuan system with:
$ sudo apt install package-name
- There is also the app store.
This works for any app. Say for instance, you want to run Iceweasel/Firefox:
- Launch apps from the desktop
- Launch apps from your console:
$ iceweasel &
- Install a universal app launcher that you can run from desktop:
$ sudo apt install desktop-cmd-exec
Make apps show up on desktop
Apps installed via apt, or otherwise not installed from the app store, don't come with desktop icons pre-configured and so won't show up on the desktop. If you want desktop icons for your apps, you have to edit .desktop files for the apps you want to show up on the desktop, see (examples)
Unhide the keyboard
The virtual keyboard can be summoned by hitting the volume-up key while the cursor is in a text field (such as the URL bar in a web browser like Firefox). This will be fixed in a future release (image tested: 20220731).
Note about Calculator
The default GUI calculator works (08/15/2022) but you won't see the numbers appear on screen until after you touch the next key.
Time zone / World Clock
Currently (06/15/2022) the interface to the default GUI clock has a few bugs but the workaround is to:
- Go to Settings > Date and Time > and adjust time zone and date and time there. This also has some bugs, but only in portrait mode.
- Or just use the console:
$ sudo date -s HH:MM $ sudo date -s YYYYMMDD $ sudo ln -s /usr/share/zoneinfo/YOURREGION/YOURCITY /etc/localtime