Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums



(Advanced Search)

Forum Statistics
» Members: 29,881
» Latest member: monawoqa46
» Forum threads: 16,320
» Forum posts: 117,403

Full Statistics

Latest Threads
wifi password wont save
Forum: General Discussion on PineTab
Last Post: WEF
1 hour ago
» Replies: 2
» Views: 310
Powering two disks from R...
Forum: RockPro64 Hardware and Accessories
Last Post: evilbunny
4 hours ago
» Replies: 3
» Views: 210
Castle Game Engine on Pin...
Forum: General Discussion on PineTab
Last Post: michalis
4 hours ago
» Replies: 3
» Views: 3,235
ATTN: Pine 64 Marketing D...
Forum: Rock64 Hardware and Accessories
Last Post: georgegohl888
Today, 04:01 AM
» Replies: 5
» Views: 10,447
http://pinenote.mweigand....
Forum: PineNote Software
Last Post: HippopoStar
Yesterday, 05:58 PM
» Replies: 1
» Views: 808
OpenClaw
Forum: Linux on Rock64
Last Post: keithy
02-22-2026, 11:57 AM
» Replies: 0
» Views: 128
Wi-Fi Issues (Plasma and ...
Forum: Manjaro on PinePhone
Last Post: krissprat73
02-20-2026, 12:16 PM
» Replies: 11
» Views: 17,952
installed devuan 5/6 - mi...
Forum: General Discussion on ROCKPRO64
Last Post: kapqa
02-20-2026, 11:36 AM
» Replies: 0
» Views: 115
How many HD's can I utili...
Forum: RockPro64 Hardware and Accessories
Last Post: some_pinephone_user
02-19-2026, 06:10 PM
» Replies: 4
» Views: 3,490
Official Debian support!
Forum: News
Last Post: kapqa
02-18-2026, 12:58 PM
» Replies: 86
» Views: 190,800

 
Question Protective cases and screen protectors
Posted by: Greendrake - 02-25-2022, 05:59 PM - Forum: PinePhone Pro Accessories - Replies (3)

Apparently, the protective cases for the regular PinePhone (hard, soft) and the screen protector are not suitable for the Pro, are they?

Are there their Pro siblings around, or coming along anytime soon?


  Keyboard case is slick
Posted by: ragreenburg - 02-25-2022, 09:06 AM - Forum: PinePhone Accessories - Replies (6)

I was wondering if there is anything that can be added to the keyboard case to make it less slick? I feel like every time I grab it I am going to drop it. Any ideas?


  unofficial kali linux for pinephone help needed
Posted by: pinesmell - 02-25-2022, 08:00 AM - Forum: Mobian on PinePhone - Replies (5)

Currently packet injection is not working on the unofficial kali linux pinephone image based from mobian.
I asked the dev when it will be added but he doesn't know because he doesn't have time to try new things. he can only build the kernel at the moment.
 My conversation is located here https://github.com/Shubhamvis98/kali-pinephone/issues/1

 So what I'm asking you people is if someone can help him add packet injection to his image please?


  Have EU pinephones started shipping since CNY?
Posted by: baigan - 02-25-2022, 05:25 AM - Forum: Shipment Related Discussion - Replies (6)

Hi all,

Has anyone got confirmation of pinephone's being shipped out from the EU warehouse yet?

I find it a bit weird that it's been nearly a month since I ordered and nothing but silence about the phone, but the keyboard case is already shipped.

Anyone in a similar situation?


  SD memory corruption
Posted by: Baptiste - 02-25-2022, 04:52 AM - Forum: Linux on PINE A64-LTS / SOPINE - No Replies

Hi, 
I have some problems of memory corruption with sopine compute module. 

Memory corruption change content of file. 

We removed all hard shutdown to avoid corruption, and we shut down system with command shutdown -h now .


Have you already seen this issue ? What can be used to avoid memory corruption ? 

Thx.


  Pinephone Keyboard feedback
Posted by: TAAPAye - 02-25-2022, 12:33 AM - Forum: PinePhone Accessories - Replies (5)

Just got by new cases and wanted to share my first impressions (just look and feel and not commenting of software support).

My first thought was how the case reminded me on a Nintendo DS. And the second was wishing there were shoulder buttons. I'm only half-kidding. If you are holding the case in your hand, you have about 8 fingers doing nothing. It would be nice if at least 2 could conveniently press a button. I believe in remapping keys in software so wouldn't have a strong preference on what the default is but some options that come to mind

  • Volume keys - The only keys on the phone itself aren't easily accessible when holding the keyboard
  • Scrolling UP/Down
  • CapsLock - I think it the default functionality is useless so I had remapped it and now it is a pretty convenient key that I've lost. (Also think Super_L is important so would prefer to not just override that)

The other thing is that the keys don't decompress cleanly unless you press then head on. Perhaps I'm weird, but I noticed that I only hit the corners for a lot of keys (most notably O and P) and they want go down until re-adjust and press closer to the center.

Anyways that's my first impression. Overall I think I'll like the keyboard.


  Using Keyboard Case with Arch (DanctNix) (complete instructions)
Posted by: Megamemnon - 02-24-2022, 08:51 PM - Forum: PinePhone Accessories - Replies (9)


I recently installed Megi's userland keyboard driver on the PinePhone running Mobian. What I really wanted to do was get my pinephone and keyboard case running as a mini-computer with a CLI (no GUI). I discovered DanctNIX barebones Arch Linux image and finally got the userland driver running on that also. So this is a complete list of steps required to do so. You can find all of this information in various places, but I'm hoping it's handy to have it all in one location for someone...

1. Fix the keyboard case's pogo pads

First, the hardware of the keyboard needs to be hacked a bit. It won't work out-of-box. Locate the Pogo pin pads in the back cover of the new keyboard case where the phone's pogo pins are supposed to make contact. The pogo pads on the keyboard case will not make contact with the pogo pins on the back of the phone unless you do something to raise the pads. 

I carefully pried the plastic holding the pogo pads from the back of the case and slipped a small folded strip of paper beneath them. The plastic holding the pads is glued to the case (which will be the new back of the phone case) and can be pried away carefully. There were no screws in my keyboard case holding the pogo pads.

reference https://xnux.eu/pinephone-keyboard/faq.html#ts in the troubleshooting section at the bottom.

2. Install Arch Linux

Arch Linux ARM builds for pinephone (and PPPro and other devices) are located here: https://github.com/dreemurrs-embedded/Pi...h/releases The latest versions include kb151, the i2c keyboard driver needed by the pinephone's keyboard case. I installed the barebones version which merely boots to a tty and the rest of these instructions are specifically for CLI.

I used the Jumpdrive method which is documented here: https://wiki.pine64.org/wiki/PinePhone_I..._JumpDrive

Connect to your local WIFI...
$nmtui

Select Activate Connection, then select your WIFI and enter password. You can use the arrow keys to move around the TUI (FN+> is UP, FN+{ is DOWN, FN+" is LEFT, and FN+} is RIGHT).

Determine your pinephone's IP address...
$ip a

Look for the ip address for the WLAN0 network connection.

For simplicity, SSH into your pinephone from a linux PC (x.x.x.x is the ip address of your pinephone)...

$ssh alarm@x.x.x.x

Update and upgrade with the following:
$ sudo pacman -Syu

Install some stuff you'll need...
$ sudo pacman -S nano terminus-font git gcc php make

3. Rotate the screen and increase font size

Still SSH'ing into your pinephone...
$ cd /boot
$ sudo nano boot.txt

Locate the line starting with setenv bootargs... This is a list of kernel parameters. Append the following to the end of the list (include a single space to separate it from the prior parameter). The fbcon parameter will rotate your screen 90 degrees clockwise putting it in landscape mode and the kb151 parameter will effectively disable kb151 so we can use the userland driver, which we'll install later. (if you're entering all this from the pinephone keyboard case, don't do the kb151 parameter yet, or make sure you finish everything before rebooting).

fbcon=rotate:1 kb151.disable_input

(Megi added a second fbcon parameter to set the font, but I wasn't able to get this to work, so I added it to the system-wide bash script, which we'll get to in a second....)

To save changes and close Nano, type CTRL-X, Y, and Enter.

back on the command line, run the following to update the boot.scr file from boot.txt...

$ sudo ./mkscr

Reference https://xnux.eu/log/#058 regarding disabling kb151; I tried a couple other methods, but only this one worked.

Add a setfont step to the system wide bash login script /etc/bash.bashrc...

$ sudo nano /etc/bash.bashrc

Add the following line at the end of the file to change the tty font to Terminus c32n (or whatever you like)...

setfont ter-c32n

To save changes and close Nano, type CTRL-X, Y, and Enter.

4. Download, build, and install the userland driver

$ git clone https://mff.cz/git/pinephone-keyboard/
$ cd pinephone-keyboard
$ make

Now we write the systemd unit file...

$ sudo nano /etc/systemd/system/ppkb-i2c-inputd.service

Enter the following into this new .service file...

  [Unit]
  Description=Pinephone Keyboard Service Daemon

  [Service]
  Type=simple
  ExecStart=/home/mobian/pinephone-keyboard/build/ppkb-i2c-inputd

  [Install]
  WantedBy=multi-user.target

To save changes and close Nano, type CTRL-X, Y, and Enter.

Now we enable this service the next time we boot with ...

$ sudo systemctl enable ppkb-i2c-inputd.service

Reference https://wiki.mobian-project.org/doku.php...-case-ppkc regarding runningn this userland driver as a systemd service.

5. Reboot and test

You're done.

$ sudo reboot

When the system reboots, it will still load kb151, but that driver will be disabled. The systemd service ppkb-i2c-inputd will be loaded by systemd and be the driver for the new keyboard case.

Use the Pine key (pinecone symbol) with number keys to enter FN keys. Try it out by typing CTRL-ALT-PINE-2 to switch to tty2 and then CTRL-ALT-PINE-1 to switch back to tty1 which is the default tty.


  u-boot multiboot issues
Posted by: m4xx3d0ut - 02-24-2022, 05:11 PM - Forum: General Discussion on PinePhone - No Replies

Hi everyone, I've been working through this multiboot method.  I compiled u-boot with the volume key patch, flashed it to an SD card, hooked up a serial console cable, and verified that the key presses were detected.  That part is all well and good.  Now I'm running into a few problems making it actually boot things and I'm sure I'm missing something minor.  This is being tested on a ubports edition Pinephone, not that it matters but Mobian Bookworm is on my eMMC.

My goal is to boot eMMC with no key press, jumpdrive with a volume up key press, and Mobian from SD card with a key down press.


Problem 1

I set my SD card partitions up like this with sdb1 for boot, sdb2 for Mobian, sdb3 for eMMC Mobian /home:

Code:
Disk /dev/sdb: 119.25 GiB, 128043712512 bytes, 250085376 sectors
Disk model: USB3.0 CRW   -SD
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: 0x07dcfc8d

Device     Boot    Start       End   Sectors   Size Id Type
/dev/sdb1           2048   2099199   2097152     1G 83 Linux
/dev/sdb2        2099200  33347583  31248384  14.9G 83 Linux
/dev/sdb3       33347584 250085375 216737792 103.3G 83 Linux

I setup the folder structure as described in the wiki and put the Image.gz, initramfs.gz, and sun50i-a64-pinephone.dtb into multiboot/jumpdrive on the first partition of the card.  I setup the boot.text as show below, created the boot.src, and moved it to boot/ on the SD card.
Code:
setenv kernel_addr_z 0x44080000

setenv bootargs loglevel=0 silent console=tty0 vt.global_cursor_default=0

if test "${volume_key}" = "up" ; then
echo "yes im here"
setenv devtype mmc
setenv devnum 0
setenv distro_bootpart 1
gpio set 114

if load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_z} /multiboot/jumpdrive/Image.gz; then
  unzip ${kernel_addr_z} ${kernel_addr_r}
  if load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} /multiboot/jumpdrive/sun50i-a64-pinephone.dtb; then
    if load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} /multiboot/jumpdrive/initramfs.gz; then
      booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};
    else
      booti ${kernel_addr_r} - ${fdt_addr_r};
    fi;
  fi;
fi
exit
fi

It boots, detects the key press, then the kernel hangs when loading.  This is the serial console output:
Code:
U-Boot 2022.04-rc2-00121-g17a0dc6abf-dirty (Feb 21 2022 - 22:50:21 +0000) Allwinner Technology

CPU:   Allwinner A64 (SUN50I)
Model: Pine64 PinePhone (1.2)
DRAM:  2 GiB
Core:  36 devices, 13 uclasses, devicetree: separate
WDT:   Not starting watchdog@1c20ca0
MMC:   mmc@1c0f000: 0, mmc@1c10000: 2, mmc@1c11000: 1
Loading Environment from FAT... Unable to use mmc 0:1...
In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
2714 bytes read in 3 ms (882.8 KiB/s)
## Executing script at 4fc00000
yes im here
3991895 bytes read in 168 ms (22.7 MiB/s)
Uncompressed size: 8706056 = 0x84D808
33457 bytes read in 4 ms (8 MiB/s)
1068435 bytes read in 47 ms (21.7 MiB/s)
## Flattened Device Tree blob at 4fa00000
   Booting using the fdt blob at 0x4fa00000
   Loading Ramdisk to 49efb000, end 49fffd93 ... OK
   Loading Device Tree to 0000000049eef000, end 0000000049efa2b0 ... OK

Starting kernel ...

Not sure what is going on there, any thoughts?  I tried two versions of jumpdrive (0.4 and 0.8 I think) with the same end result.  I read that the "Starting kernel ..." message is generated by the kernel itself, so it is as least getting that far.  It will hang there forever with no more output, not sure how to proceed.  Perhaps there are some debug flags that I could enable if I recompile the jumpdrive kernel?  I'd be open to try that if one of you kernel hacking gods can direct my weak mortal brain on what to enable in menu config.


Problem 2

Next I figured I'll try to make Mobian boot from a down key press while I research why the kernel might be hanging.  So I set that section of the boot.text up like below, created another boot.src, moved it to boot/, and got the below output.  This is a little more clear, the Ramdisk image format from the Mobian iso doesn't seem to play nice with u-boot, which I find odd since it boots happily when imaged to the device itself.  It finds the extlinux.conf so maybe my boot.src is confusing things somehow? 

Here is my boot.text section for Mobian (obvious, but if you add this to the entry for jumpdrive above you have my whole boot.text):
Code:
if test "${volume_key}" = "down" ; then
echo "down"

setenv bootdev 0
setenv bootargs init=/init.sh rw console=tty0 console=ttyS0,115200 no_console_suspend earlycon=uart,mmio32,0x01c28000 panic=10 consoleblank=0 loglevel=1 cma=256M boot=/dev/mmcblk${bootdev}p3 root=/dev/mmcblk${bootdev}p3

printenv

echo Loading DTB
load mmc ${mmc_bootdev}:1 ${fdt_addr_r} /multiboot/mobian/dtb-5.15-sunxi64/allwinner/sun50i-a64-pinephone-1.2.dtb

echo Loading Initramfs
load mmc ${mmc_bootdev}:1 ${ramdisk_addr_r} /multiboot/mobian/initrd.img-5.15-sunxi64

echo Loading Kernel
load mmc ${mmc_bootdev}:1 ${kernel_addr_r} /multiboot/mobian/vmlinuz-5.15-sunxi64

gpio set 115

echo Resizing FDT
fdt addr ${fdt_addr_r}
fdt resize

echo Booting kernel
gpio set 116
gpio clear 98
booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}

# This ELSE statement assumes you have UBUNTU PORTS on your EMMC by default it says the following
# If nothing is being pressed than load the boot script on the EMMC drive, 1,4 where the boot script resides
# on Mobian EMMC device


else

setenv devtype mmc
setenv devnum 1
setenv partnum 4
load ${devtype} ${devnum}:2 ${scriptaddr} /boot.scr
source ${scriptaddr}
fi


Here is the serial console from it trying to boot with volume key down:
Code:
U-Boot 2022.04-rc2-00121-g17a0dc6abf-dirty (Feb 21 2022 - 22:50:21 +0000) Allwinner Technology

CPU:   Allwinner A64 (SUN50I)
Model: Pine64 PinePhone (1.2)
DRAM:  2 GiB
Core:  36 devices, 13 uclasses, devicetree: separate
WDT:   Not starting watchdog@1c20ca0
MMC:   mmc@1c0f000: 0, mmc@1c10000: 2, mmc@1c11000: 1
Loading Environment from FAT... Unable to use mmc 0:1...
In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
2714 bytes read in 3 ms (882.8 KiB/s)
## Executing script at 4fc00000
down
arch=arm
baudrate=115200
board=sunxi
board_name=sunxi
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scr}
boot_efi_binary=load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootaa64.efi; if fi
boot_efi_bootmgr=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr;fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_}
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=fel mmc_auto pxe dhcp
bootargs=init=/init.sh rw console=tty0 console=ttyS0,115200 no_console_suspend earlycon=uart,mmio32,0x01c3
bootcmd=run distro_bootcmd
bootcmd_dhcp=devtype=dhcp; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;seten;
bootcmd_fel=if test -n ${fel_booted} && test -n ${fel_scriptaddr}; then echo '(FEL boot)'; source ${fel_si
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_mmc_auto=if test ${mmc_bootdev} -eq 1; then run bootcmd_mmc1; run bootcmd_mmc0; elif test ${mmc_bi
bootcmd_pxe=dhcp; if pxe get; then pxe boot; fi
bootdelay=2
bootdev=0
bootfstype=ext4
bootm_size=0xa000000
console=ttyS0,115200
cpu=armv8
devplist=1
dfu_alt_info_ram=kernel ram 0x40080000 0x1000000;fdt ram 0x4FA00000 0x100000;ramdisk ram 0x4FF00000 0x4000
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
ethaddr=02:ba:ba:17:48:b0
fdt_addr_r=0x4FA00000
fdtcontroladdr=b9f3d600
fdtfile=allwinner/sun50i-a64-pinephone-1.2.dtb
fdtoverlay_addr_r=0x4FE00000
fileaddr=4fc00000
filesize=a9a
kernel_addr_r=0x40080000
kernel_addr_z=0x44080000
kernel_comp_addr_r=0x44000000
kernel_comp_size=0xb000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x42000000
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
mmc_bootdev=0
partitions=name=loader1,start=8k,size=32k,uuid=${uuid_gpt_loader1};name=loader2,size=984k,uuid=${uuid_gpt;
pxefile_addr_r=0x4FD00000
ramdisk_addr_r=0x4FF00000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv dt
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; i
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart}e
scriptaddr=0x4FC00000
serial#=92c0b5baba1748b0
soc=sunxi
stderr=serial,vidconsole
stdin=serial
stdout=serial,vidconsole
uuid_gpt_esp=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
uuid_gpt_system=b921b045-1df0-41c3-af44-4c6f280d3fae
volume_key=down

Environment size: 4661/131068 bytes
Loading DTB
Failed to load '/multiboot/mobian/dtb-5.15-sunxi64'
Loading Initramfs
19944004 bytes read in 830 ms (22.9 MiB/s)
Loading Kernel
7433919 bytes read in 310 ms (22.9 MiB/s)
gpio: pin 115 (gpio 115) value is 1
Resizing FDT
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
No FDT memory address configured. Please configure
the FDT address via "fdt addr <address>" command.
Aborting!
Booting kernel
gpio: pin 116 (gpio 116) value is 1
gpio: pin 98 (gpio 98) value is 0
   Uncompressing Kernel Image
Moving Image from 0x40080000 to 0x40200000, end=415c0000
Wrong Ramdisk Image Format
Ramdisk image is corrupt or invalid
SCRIPT FAILED: continuing...

I did a little reading and found that u-boot is expecting a uImage format initramfs.  So I tried to repackage it like this:
Code:
mkimage -A arm -T ramdisk -C none -n uInitrd -d /path/to/initrd.img /path/to/uInitrd

Once again I edited my boot.text, created a new boot.src, moved it to /boot, lather, rinse, repeat... It didn't like that either.  Is it clear to anyone what I'm doing wrong?  I'm having a little trouble finding documentation that relates to this directly, but it could just be due to my lack of experience with u-boot.

I've been a Linux user for many years, but haven't spent much time messing with u-boot and arm64 images.  Can someone point me to a good resource to better understand u-boot and how Mobian boots in general?


  No underscore on pinephone keyboard
Posted by: gilwood - 02-24-2022, 08:47 AM - Forum: PinePhone Hardware - Replies (3)

Running a community edition pinephone using mobian bookworm on my new keyboard. Everything appears to be working with the exception of having an underscore character. Cannot type name_pine in any app. Really need access to this character for terminal. Any ideas or comments are appreciated. Thanks


  Using Keyboard Case with Mobian (complete instructions)
Posted by: Megamemnon - 02-24-2022, 08:26 AM - Forum: PinePhone Accessories - Replies (4)


You can piece this together from a variety of sources, which I've linked to in this post, and I DID eventually put it all together but I'm posting this hoping to help make it a bit easier one someone.

I've got the regular PinePhone (not Pro) running Mobian, (because I'm most familiar with Debian). This should be everything you need to know to get the new keyboard case working.

1. Fix the keyboard case's pogo pads

First, the hardware of the keyboard needs to be hacked a bit. It won't work out-of-box. Locate the Pogo pin pads in the back cover of the new keyboard case where the phone's pogo pins are supposed to make contact. The pogo pads on the keyboard case will not make contact with the pogo pins on the back of the phone unless you do something to raise the pads. 

I carefully pried the plastic holding the pogo pads from the back of the case and slipped a small folded strip of paper beneath them. The plastic holding the pads is glued to the case (which will be the new back of the phone case) and can be pried away carefully. There were no screws in my keyboard case holding the pogo pads.

reference https://xnux.eu/pinephone-keyboard/faq.html#ts in the troubleshooting section at the bottom.

2. Update to a version of Mobian that has the kb151 driver in the kernel

I reinstalled Mobian using the most recent weekly build found here: https://images.mobian-project.org/pinephone/weekly/. The Stable release, at the time, didn't yet include the KB151 module that supports the I2C keyboard. I used the Feb 20th release; note the list is in ascending order and the most recent release is at the bottom.

I used the Jumpdrive method to install directly onto the eMMC. https://wiki.pine64.org/wiki/PinePhone_I..._JumpDrive

3. Install the pinephone in the pinephone keyboard case

Once a current version of Mobian is installed and the pinephone is installed in the keyboard case, the keys are mostly functional. I think the only problem is that the FN keys don't work. The kernel used by Mobian includes a module called kb151, which is an i2c keyboard driver specifically for this keyboard case.

4. Build and enable the userland driver

A 'userland' driver is available which also supports the FN keys. To install this userland version of the driver (and disable kb151), do the following from King's Cross, or any other terminal emulator on the phone...

$ git clone https://xff.cz/git/pinephone-keyboard/

$ cd pinephone-keyboard

$ make

If make indicates a command is not found available, install it. I had to install PHP using the following:

$ sudo apt install php

Next, we'll write a systemd service file for the userland keyboard driver we just compiled...

$ sudo nano /etc/systemd/system/ppkb-i2c-inputd.service

Enter the following into Nano... (note that the ExecStart line must reference the ppkb-i2c-inputd which we compiled. If you put it somewhere else, you'll need to modify that line.)

  [Unit]
  Description=Pinephone Keyboard Service Daemon

  [Service]
  Type=simple
  ExecStart=/home/mobian/pinephone-keyboard/build/ppkb-i2c-inputd

  [Install]
  WantedBy=multi-user.target

(to save changes and close Nano, type CTRL-X, Y, and Enter)

Now we will blacklist kb151 so it won't be loaded by the kernel next time we boot...

$ sudo nano /etc/modprobe.d/blacklist.conf

Add this single line to the file...

  blacklist kb151

(to save changes and close Nano, type CTRL-X, Y, and Enter)

The new blacklist.conf file won't make any difference until you update the ram filesystem with this command, which will take a couple minutes to complete:

$ sudo update-initramfs -u

Now we'll enable the new systemd service...

$ sudo systemctl enable ppkb-i2c-inputd.service

you'll be prompted for your pw a couple times. Once this process completes, reboot. 

You're done. 

Use the Pine key (pinecone symbol) with number keys to enter FN keys. Try it out by typing CTRL-ALT-PINE-2 to switch to tty2 and then CTRL-ALT-PINE-7 to switch back to tty7 where the GUI is (maybe mobian uses tty1 for login??).

Now I just need to rotate the tty2-tty6 screens and increase the font size... Let me know if you already know how to do that.