PinePhone prakticky

Z Wikiknih
Skočit na navigaci Skočit na vyhledávání

Stránka s dostupným SW - https://wiki.pine64.org/wiki/PinePhone_Software_Releases

Běžná obsluha[editovat]

  • aktivace obrazovky
    • poklepání - pohotovostní režimu
    • - uspaný telefon
  • hlasitost - 🔉/🔊
  • vypnutí obrazovky -
  • vypnutí/restart telefonu - (2 s)
  • zamrznutý telefon - (8 s)
    • multi-distro - (15 s resp. počkat, dokud se neobjeví úvodní nabídka)
  • zobrazení nabídky (multi-distro) - při spouštění podržet 🔉 a zmáčknout

Distribuce[editovat]

Grafická rozhraní[editovat]

Scénáře použití[editovat]

Denní použití kombinované s testováním/vývojem[editovat]

  • eMM
    • "stabilní" prostředí pro denní použití
    • občasná aktualizace známé "spolehlivé verze)
    • Manjaro/PlaMo
  • uSD
    • testovací, vývojové a ukázkové prostředí
    • průběžná aktualizace dílčích distribucí (aktuálně 15)
    • multi-distro

Velké soubory např. obrazy PP je vhodné ukládat na větší úložiště - obvykle uSD.

Návody[editovat]

Aktualizace distribuce[editovat]

Provádí se prostřednictvím správce aplikací/balíčků dané distribuce[pozn. 2] včetně volby, zda používat bezpečně otestovanou nebo vývojovou variantu. Z důvodu případných problému je vhodné pořizovat záznamy úprav např. takto pro Manjaro/PlaMo:

  • otevřít terminál nebo se připojit pomocí ssh
  • (přepnutí na nestabilní větev # pacman-mirrors --api --set-branch unstable[pozn. 3])
  • vytvořit složku pro záznamy # mkdir ~/pacman_logs a předpnout se do ní # cd ~/pacman_logs
  • # yes | pacman -Syyu --noconfirm | tee ~/pacman_logs/pacman-$(date +%F-%T).log
    • dostupné aktualizace vypíše příkaz # pacman -Syup
  • přidat nové balíčky
    • stáhnout seznam balíčků nového vydání[2] # wget <URL vydání PP><soubor>-pkgs.txt
    • vypsat do souboru aktuální balíčky # pacman -Q > pkgs.txt
    • instalovat chybějící # yes | pacman --overwrite "*" -S $(diff --new-line-format="" --unchanged-line-format="" <(cut -d' ' -f1 <soubor>-pkgs.txt) <(cut -d' ' -f1 pkgs.txt) | sed ':a;/$/{N;s/\n/ /;ba}') | tee ~/pacman_logs/pacman-$(date +%F-%T).log

Aktualizace firmware modemu[editovat]

ModemManager x ofono

echo AT+QFASTBOOT | atinout - /dev/EG25.AT -

Manuální připojení k WiFi[editovat]

  • zjistit dostupné sítě $ nmcli dev wifi list
  • připojit se # nmcli --ask dev wifi connect <SSID>
  • přesvědčit se o přiděleni IP adresy $ ip a s wlan0

Přepnutí zvukového systému[editovat]

Linuxový svět zavádí PipeWire namísto PulseAudia. Systém však není dostatečně vyzrálý, tak je občas potřeba mezi oběma systémy přepnout a zároveň ponechat nainstalované příslušné balíčky s ohledem na existující závislosti. Následujíc je platné pro Manjaro/Phosh, ale situace u jiných distribucí bude obdobná

  • PipeWire
    • vypnutí
      # systemctl --machine=manjaro@.host list-unit-files --user | grep pipewire  #  zjištění názvů služeb
      (# ls -la /usr/lib/systemd/user/ | grep pipewire  # obdoba předchozího)
      # systemctl --machine=manjaro@.host --user stop pipewire.service pipewire.socket pipewire-media-session  # vypne PipeWire
      # su manjaro -c "XDG_RUNTIME_DIR=/run/user/1000 pw-cli info 0"  # ověření
      # systemctl --machine=manjaro@.host --user mask pipewire.service pipewire.socket pipewire-media-session  # zabránění spuštění PipeWire
      # systemctl --machine=manjaro@.host list-unit-files --state=masked  # ověření
      
    • spuštění je opakem předchozího, ověření výsledku je identické
      # systemctl --machine=manjaro@.host --user restart pipewire.service pipewire.socket pipewire-media-session  # spuštění PipeWire
      # systemctl --machine=manjaro@.host --user unmask pipewire.service pipewire.socket pipewire-media-session  # ukončí blokování PipeWire
      
  • PulseAudio
    • vypnutí
      # systemctl --machine=manjaro@.host list-unit-files --user | grep pulseaudio  #  zjištění názvů služeb
      (# ls -la /usr/lib/systemd/user/ | grep pulseaudio  # obdoba předchozího)
      # systemctl --machine=manjaro@.host --user stop pulseaudio.service pulseaudio.socket  # vypne PulseAudio
      # su manjaro -c "XDG_RUNTIME_DIR=/run/user/1000 pactl info"  # ověření
      # systemctl --machine=manjaro@.host --user mask pulseaudio.service pulseaudio.socket  # zabránění spuštění PulseAudia
      # systemctl --machine=manjaro@.host list-unit-files --state=masked  # ověření
      
    • spuštění je opakem předchozího, ověření výsledku je identické
      # systemctl --machine=manjaro@.host --user restart pulseaudio.service pulseaudio.socket  # spuštění PulseAudia
      # systemctl --machine=manjaro@.host --user unmask pulseaudio.service pulseaudio.socket  # ukončí blokování PulseAudia
      

Reflash eMMC[editovat]

Manjaro/PlaMo

  • spustit mobil z uSD a otevřít terminál nebo se připojit pomocí ssh
  • stáhnout obraz PP[2] $ wget -c -t 0 --timeout=60 --waitretry=60 -P <cílová složka> <URL vydání PP>
  • ověřit úplnost staženého souboru porovnáním čísla v <URL vydání PP><soubor>.sha1 s výstupem $ sha1sum <soubor>
  • vypsat bloková zařízení, kde řádek 4 odpovídá uSD a 7 eMMC (velikost napoví 😉)
    # lsblk
    NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    ..
    mmcblk0      179:0    0  58.9G  0 disk 
    ├─mmcblk0p1  179:1    0   196M  0 part 
    └─mmcblk0p2  179:2    0  58.7G  0 part /
    mmcblk2      179:8    0  29.1G  0 disk 
    ├─mmcblk2p1  179:9    0 213.6M  0 part 
    └─mmcblk2p2  179:10   0  28.9G  0 part
    ..
    
  • provést reflesh eMMC (trvá několik minut). Jde o nevratný krok, tedy je vhodné si 3x zkontrolovat znění příkazu
    # unxz --stdout <soubor> | dd  of=/dev/mmcblk2 bs=1M oflag=direct status=progress
    6354919936 bytes (6.4 GB, 5.9 GiB) copied, 1310 s, 4.9 MB/s
    12425216+0 records in
    12425216+0 records out
    6361710592 bytes (6.4 GB, 5.9 GiB) copied, 1310.81 s, 4.9 MB/s
    
    druhý pokus
    6360510976 bytes (6.4 GB, 5.9 GiB) copied, 1237 s, 5.1 MB/s
    12425216+0 records in
    12425216+0 records out
    6361710592 bytes (6.4 GB, 5.9 GiB) copied, 1241.73 s, 5.1 MB/s
    
  • restartovat mobil a spustit systém na eMMC

Reflash pouze zaváděcího oddílu eMMC[editovat]

Manjaro/PlaMo

  • spustit mobil z eMMC či uSD a otevřít terminál nebo se připojit pomocí ssh
  • stáhnout obraz PP $ wget -c -t 0 --timeout=60 --waitretry=60 -P <cílová složka> <URL vydání PP>
  • ověřit úplnost staženého souboru porovnáním čísla v <URL vydání PP><soubor>.sha1 s výstupem $ sha1sum <soubor>
  • dekomprimovat stažený soubor $ unxz <soubor> tj. získat <obraz PP>
  • zpřístupnit obraz jako bloková zařízení # losetup -Pf <obraz PP>
  • vypsat bloková zařízení, kde řádek 3 odpovídá obrazu PP, 6 uSD a 9 eMMC
    $ lsblk
    NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    loop0          7:0    0   5.9G  0 loop 
    ├─loop0p1    259:0    0 213.6M  0 part 
    └─loop0p2    259:1    0   5.7G  0 part 
    mmcblk0      179:0    0  58.9G  0 disk 
    ├─mmcblk0p1  179:1    0   196M  0 part 
    └─mmcblk0p2  179:2    0  58.7G  0 part /root/mnt2
    mmcblk2      179:32   0  29.1G  0 disk 
    ├─mmcblk2p1  179:33   0 213.6M  0 part /boot
    └─mmcblk2p2  179:34   0  28.9G  0 part /
    ..
    
  • provést reflesh zaváděcího oddílu eMMC. Jde o nevratný krok, tedy je vhodné si 3x zkontrolovat znění příkazu
    # dd if=/dev/loop0p1 of=/dev/mmcblk2p1 bs=1M oflag=direct status=progress
    222020096 bytes (222 MB, 212 MiB) copied, 8 s, 27.7 MB/s
    437501+0 records in
    437501+0 records out
    224000512 bytes (224 MB, 214 MiB) copied, 8.0737 s, 27.7 MB/s
    
  • nahradit obsah složky /lib/modules/ (možná je lepší původní obsah ponechat)
    # mount /dev/loop0p2 mntImgPar2
    # rm -fr /lib/modules/*
    # cp -r mntImgPar2/lib/modules/* /lib/modules/
    (možná také # cp mntImgPar2/etc/mkinitcpio.d/linux-pinephone.preset /etc/mkinitcpio.d/)
    
  • restartovat mobil do reflashnutého systému a provést provést aktualizaci

Sdílení internetového připojení (tethering)[editovat]

  • USB kabel
    • (v dohlednu by mělo fungovat automaticky)
    • vytvořit a aktivovat rozhraní usb0[pozn. 4]
      $ wget https://gist.githubusercontent.com/bmatusiak/ca96afe69cf3e16783d18f1650aafb50/raw/427c1b5acaf7f446e00cfdab2587f90f8c8c01bc/usb_gadget_setup.sh  # stažení příslušného kódu
      $ chmod +x usb_gadget_setup.sh  # nastavení souboru jako spustitelného
      # ./usb_gadget_setup.sh up  # vytvoření a aktivace zařízení
      
      • vznik zařízení již při startu PP lze zajistit systémovou službou pomocí souboru /etc/systemd/system/usb_gadget_setup.service
        [Unit]
        Description=Creats USB gadget
        
        Wants=network.target
        After=syslog.target network-online.target
        
        [Service]
        Type=simple
        ExecStart=/root/usb_gadget_setup.sh up
        Restart=on-failure
        RestartSec=10
        KillMode=process
        
        [Install]
        WantedBy=multi-user.target
        
      • s povolením automatického spuštění # systemctl enable usb_gadget_setup.service
    • a síťové spojení pro NetworkManager
      • vytvoření # nmcli con add type ethernet con-name usbTethering ifname usb0 ipv4.method shared
      • aktivace # nmcli con up usbTethering
      • začlenění rozhraní pod správu NetvorkManageru[pozn. 5] souborem /etc/NetworkManager/conf.d/80-usbTethering.conf
        [device]
        match-device=interface-name:usb0
        managed=true
        
  • WiFi - v aplikaci nastavení mobilu zvolit "Hotspot" a vyplnit požadované položky

Mutli-distro místo iptables používá modernější nftables, na což většinou nejsou distribuce připravené, tudíž je potřeba pro spojení na Internet vytvořit směrovací tabulku ručně:

  • kontrola aktuálního stavu # nft -s list ruleset
    • aplikace nft je v balíčku nftables
  • v případě prázdného výpisu je třeba vytvořit tabulku, zřetězení i pravidlo vytvořením souboru /etc/nftables.conf
    flush ruleset
    
    table inet nat {
            chain postrouting {
                    type nat hook postrouting priority srcnat; policy accept;
                    oifname "wwan0" masquerade 
            }
    }
    
  • a povolit automatické načítání # systemctl enable nftables.service

Při testování, obzvlášť, je-li k dispozici více síťových rozhraní (WiFi, ethernet, .. viz. výstup $ ip a), pozor na priority (hodnoty "metric" ve výpisu $ ip r) a zapnutý firewall.[pozn. 6]

Snímek obrazovky[editovat]

  • Phosh
    • GUI: ne
    • CLI: # su manjaro -c "XDG_RUNTIME_DIR=/run/user/1000 XDG_PICTURES_DIR=~/Pictures grim"
  • PlaMo
    • GUI: zcela rozbalit horní panel, kliknout na Screenshot
    • CLI: nefungovalo

Vypnutí USB napájení[editovat]

Hodí se, když nechcete vyčerpávat baterky notebooku, který máte propojený USB kabelem s PP - # echo 0 > /sys/class/power_supply/axp20x-usb/online. Jednička napájení opět aktivuje, stejně jako znovupřipojení kabelu, restart apod. Nezapomeňte, že se vypnutím napájení začnou uplatňovat předvolby řízení spotřeby.

Vzdálené přihlášení roota[editovat]

  • předpokladem je připojení do stejné sítě např. pomocí WiFi a vygenerované ssh klíče
  • v terminálu mobilu dočasně povolit přihlášení roota pomocí hesla nastavením PermitRootLogin yes v souboru /etc/ssh/sshd_config
  • restartovat službu # systemctl restart sshd
  • na počítači spustit $ ssh-copy-id -i ~/.ssh/<veřejný klíč> root@<IP adresa PP>
  • vrátit PermitRootLogin na původní hodnotu (obvykle prohibit-password) a opět restartovat službu sshd
  • vzdáleně se připojit k PP $ ssh -i ~/.ssh/<soukromý klíč> root@<IP adresa PP>
  • při častém používání
    • povolit automatické spouštění služby systemctl enable sshd
    • usnadnit přihlašování (zadávání hesla) autentizačním agentem)

Zpětná vazba, hlášení závad[editovat]

Závisí na zkušenostech, protože chyba může být specifická pro distribuci, grafické rozhraní (GNOME, KDE) nebo aplikaci včetně jádra systému. Nejjistější, nikoliv však nejefektivnější a nejrychlejší, je použít zpětnou vazbu distribuce.[pozn. 7] Bývá potřeba uvést podrobnosti o použitém HW a SW, např. pro Manjaro/PlaMo[pozn. 8]:

  • verze PP např. PinePhone v1.2b
  • prostředí
    $ uname -a
    Linux manjaro-arm 5.14.5-1-MANJARO-ARM #1 SMP PREEMPT Thu Sep 16 16:39:22 UTC 2021 aarch64 GNU/Linux
    $ kf5-config --version
    Qt: 5.15.2
    KDE Frameworks: 5.86.0
    kf5-config: 1.0
    
    $ export $(cat /proc/$(pidof plasmashell)/environ | tr '\0' '\n')  # při volání z ssh viz. https://wiki.postmarketos.org/wiki/Plasma_Mobile#Running_Apps_from_SSH_session
    $ plasmashell --version
    plasmashell 5.22.5
    
  • software většinou podporuje dotaz <název aplikace> --version, nebo lze využít správce pacman -Q <název balíčku>. Výpis podrobnějších informací (-Qi) navíc napoví, kam se zpětnou vazbou:
    $ plasma-phonebook --version
    plasma-phonebook 21.08
    $ pacman -Q plasma-phonebook
    plasma-phonebook 21.08-1
    $ pacman -Qi plasma-phonebook
    Name            : plasma-phonebook
    Version         : 21.08-1
    Description     : Phonebook application for Mobile Devices running Plasma
    Architecture    : aarch64
    URL             : https://www.plasma-mobile.org/
    ..
    

Poznámky[editovat]

  1. uSD karta se samozřejmě doporučuje větší, aby byl prostor pro uživatelská data, aktualizace nebo další distribuce.
  2. Prostředí PlaMo zavádí na distribucích nezávislou aplikaci Discover, ale zatím není dostatečně odladěná.
  3. Zjištění aktuální větve Manjara $ pacman-mirrors --get-branch.
  4. Kód obsahuje nepodstatné chyby a věci, které nejsou pro sdílení připojení nezbytné, je tedy vhodné si jej dle potřeb trošku doladit např. takto.
  5. Zajistí se tím např. obnova při restartu NetworkManageru
  6. Ověření stavu závisí na distribuci/operačním systému. Neprázdný výpis tabulek (# iptables -L nebo již zmíněný # nft -s list rulese) jej dává tušit, ale nemusí být aktivní.
  7. Opačnou strategií je dávat podněty přímo tam, kde je kód zveřejněn.
  8. Údaje o HW a prostředí lze vyčíst v Nastavení > Informace o systému, ale nejdou zkopírovat.

Reference[editovat]

  1. Contributing. Plasma Mobile [online].  [cit. 2021-09-20]. Dostupné online. (en)
  2. 2,0 2,1 GitHub - manjaro-pinephone/plasma-mobile: Manjaro Plasma-Mobile. GitHub [online].  [cit. 2021-09-19]. Dostupné online. (en)